реклама на сайте
подробности

 
 
> Циклический буфер на AVR, (Примеры применения)
=GM=
сообщение Aug 24 2007, 15:16
Сообщение #1


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Тема открыта по горячим следам недавней острой дискуссии.

В ней одним из участников (defunct) была приведена программа, в которой использовался циклический буфер для работы с последовательным портом МК AT90S2313. На взгляд автора программа написана достаточно грамотно, но как-то слишком размашисто, без учёта мизерности ресурсов данного МК. Предлагаю участникам поделиться примерами и приёмами использования циклического буфера в программных разработках.

Для затравки предлагаю следующие фрагменты.

А. Запись байта из регистра AL в циклический буфер
Код
      mov     xl,qhead    ;указатель на запись
      st      x+,al       ;запишем байт
      cp      xl,qend     ;конец буфера?
      brne    .+2         ;нет, обходим
      ldi     xl,buffer   ;да, установим начало

Б. Чтение байта из циклического буфера в регистр AL
Код
      mov     xl,qtail    ;указатель на чтение
      ld      al,x+       ;прочитаем байт
      cp      xl,qend     ;конец буфера?
      brne    .+2         ;нет, обходим
      ldi     xl,buffer   ;да, установим начало

Если использовать буфер не произвольной длины, а кратный степени 2, и размещать его в памяти не произвольно, а начиная с адресов, кратных длине буфера, то размер кода можно немного сократить. Например.

В. Запись байта из регистра AL в циклический буфер длиной 32
Код
      mov     xl,qhead    ;указатель на запись
      st      x+,al       ;запишем байт
      cbr     xl,0xE0     ;держим указатель в предписанных рамках

Г. Чтение байта из циклического буфера длиной 32 в регистр AL
Код
      mov     xl,qtail    ;указатель на чтение
      ld      al,x+       ;прочитаем байт
      cbr     xl,0xE0     ;держим указатель в предписанных рамках

Здесь qhead, qtail, qend – регистровые переменные, содержащие адреса-указатели ячеек в озу для записи, чтения и конца буфера соответственно.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- =GM=   Циклический буфер на AVR   Aug 24 2007, 15:16
- - defunct   Цитата(=GM= @ Aug 24 2007, 18:16) Если ис...   Aug 24 2007, 22:12
- - =AVR=   Такой метод (посредством урезания операцией ...   Aug 25 2007, 05:42
|- - SasaVitebsk   Цитата(=AVR= @ Aug 25 2007, 08:42) Такой ...   Aug 26 2007, 10:50
|- - =GM=   Привет всем! Отъезжал ненадолго, тут праздник ...   Aug 28 2007, 16:02
|- - WHALE   Цитата(=GM= @ Aug 28 2007, 20:02) Привет ...   Aug 28 2007, 18:33
||- - =GM=   Цитата(WHALE @ Aug 28 2007, 18:33) Господ...   Aug 28 2007, 22:33
|- - SasaVitebsk   Цитата(=GM= @ Aug 28 2007, 19:02) 1) To S...   Aug 28 2007, 19:20
|- - =AVR=   Аппаратные буфера отличаются от address mode тем ж...   Aug 28 2007, 20:21
- - sensor_ua   IMHO, обсуждение циклических буферов в привязке к ...   Aug 25 2007, 07:11
- - mse   Цитата(=GM= @ Aug 24 2007, 19:16) Код m...   Aug 25 2007, 07:48
- - adnega   Доброго дня! Мне вот очень интересно применен...   Aug 27 2007, 06:45
- - zltigo   Moderator: Так, оба двое и присоединившийся к ним ...   Aug 28 2007, 22:41
|- - =GM=   Цитата(zltigo @ Aug 28 2007, 22:41) Если ...   Aug 29 2007, 00:07
- - SasaVitebsk   2 AVR спасибо. До вашего варианта не додумался. Пр...   Aug 29 2007, 11:05
|- - =GM=   Цитата(SasaVitebsk @ Aug 29 2007, 10:05) ...   Aug 29 2007, 12:13
- - alcosar   Вот одна из возможных реализаций. Имеется индекс ...   Aug 31 2007, 12:37
|- - =GM=   Цитата(alcosar @ Aug 31 2007, 11:37) Код;...   Aug 31 2007, 15:12
|- - prottoss   Цитата(=GM= @ Aug 31 2007, 23:12) Пара...   Aug 31 2007, 16:53
||- - SasaVitebsk   Цитата(prottoss @ Aug 31 2007, 19:53) Пар...   Aug 31 2007, 18:37
||- - prottoss   Цитата(SasaVitebsk @ Sep 1 2007, 02:37) 1...   Aug 31 2007, 18:57
||- - SasaVitebsk   Цитата(prottoss @ Aug 31 2007, 21:57) В п...   Sep 3 2007, 14:31
|- - alcosar   [quote name='=GM=' date='Aug 31 2007, ...   Sep 2 2007, 18:55
- - sensor_ua   ЦитатаЦиклический буфер позволяет работать с макси...   Aug 31 2007, 19:56
|- - mse   Цитата(sensor_ua @ Aug 31 2007, 23:56) Вс...   Sep 1 2007, 07:03
|- - prottoss   Цитата(mse @ Sep 1 2007, 15:03) Практика ...   Sep 1 2007, 07:15
|- - mse   Цитата(prottoss @ Sep 1 2007, 11:15) Прак...   Sep 1 2007, 08:57
|- - prottoss   Цитата(mse @ Sep 1 2007, 16:57) Если загр...   Sep 1 2007, 09:02
|- - mse   Цитата(prottoss @ Sep 1 2007, 13:02) Ну В...   Sep 1 2007, 09:23
|- - =GM=   To alcosar 1) Здесь: std Y+1,r16 у вас ошибка, на...   Sep 3 2007, 11:54
|- - alcosar   Цитата(=GM= @ Sep 3 2007, 14:54) To alcos...   Sep 3 2007, 19:33
|- - =GM=   Цитата(alcosar @ Sep 3 2007, 19:33) 2. По...   Sep 3 2007, 20:45
- - sensor_ua   ЦитатаПочему нет ни единого примера на Си? Файл пр...   Sep 1 2007, 07:45
|- - zltigo   Цитата(sensor_ua @ Sep 1 2007, 10:45) Код...   Sep 1 2007, 08:36
- - prottoss   Выложу и я свое здесь, хоть уже и выкладывал в тем...   Sep 1 2007, 08:43
- - sensor_ua   ЦитатаНу хоть тэгами пользуйтесь для выделения исх...   Sep 1 2007, 09:03
- - sensor_ua   Цитата2. Размер указателей зависит от размера буфе...   Sep 3 2007, 15:03
|- - SasaVitebsk   Цитата(sensor_ua @ Sep 3 2007, 18:03) Про...   Sep 3 2007, 15:14
- - sensor_ua   ЦитатаЕстественно на стадии написания программы Ра...   Sep 3 2007, 17:51
|- - =GM=   Цитата(sensor_ua @ Sep 3 2007, 17:51) Ука...   Sep 3 2007, 19:25
|- - SasaVitebsk   Цитата(sensor_ua @ Sep 3 2007, 20:51) Рац...   Sep 3 2007, 19:33
- - sensor_ua   ЦитатаЧто вас смущает. Цитата2. Размер указателей ...   Sep 3 2007, 19:50
|- - SasaVitebsk   Цитата(sensor_ua @ Sep 3 2007, 22:50) Ну ...   Sep 4 2007, 17:07
- - sensor_ua   ЦитатаЕсли ввёл кого в заблуждение Да всё путём. П...   Sep 4 2007, 17:46
|- - Dog Pawlowa   Люди, а как Вы синхронизируете скорости заполнения...   Sep 4 2007, 18:06
|- - mse   Цитата(Dog Pawlowa @ Sep 4 2007, 22:06) Л...   Sep 4 2007, 18:39
|- - bodja74   Цитата(Dog Pawlowa @ Sep 4 2007, 21:06) Л...   Sep 4 2007, 20:46
|- - defunct   Цитата(Dog Pawlowa @ Sep 4 2007, 21:06) Л...   Sep 8 2007, 22:21
- - sensor_ua   ЦитатаВисеть в ожидании, пока там не освободится м...   Sep 4 2007, 18:44
- - Dog Pawlowa   Цитата(sensor_ua @ Sep 4 2007, 21:44) Дык...   Sep 5 2007, 05:03
- - sensor_ua   Цитата(Dog Pawlowa @ Sep 5 2007, 08:03) У...   Sep 5 2007, 06:33
- - Dog Pawlowa   Цитата(sensor_ua @ Sep 5 2007, 09:33) Исп...   Sep 5 2007, 07:19


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016