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

 
 
> Как грамотные люди делают прием пакетов по USART
TamTam
сообщение Jun 5 2006, 01:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Ну написал с горем пополам обработку прирывания по окончанию приема байта, процедурку копирования из буфера в eeprom, но вот вопрос ???

Данные приходят всегда по разному иногда в нужной мне строке символ 0х0d и 0х0а встречаються несколько раз значит обработка пришедших данныш по окончанию строки мне не подходит, думаю так
после окончания приема запускать таймер и если за отведенное время не поступит следующий байт тогда начинать обработку данных а если данные еще идут то складываем их в еепром.

Правильно ли я мыслю или может есть способ по приличней, ведь таймер нужная и без этого весчь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TamTam
сообщение Jun 6 2006, 09:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(Sergiy @ Jun 6 2006, 13:15) *
Да, обратите внимание на фразу, что в обработчиках прерывания должны быть краткие функции, и не в коем случае писать незя в ЕЕПРОМ, потому что процесс достаточно длителен (мс на байт), выставьте битовую переменную, что нужный пакет в буфере обмена и готовьте следующее окно (я использую двухоконные буфера), когда один заполняется, второй готов и константен для целевой функции - все довольны, а оперирую двумя битовыми флагами, один показывает, что новый буфер подготовлен и ожидает, а второй что какое окно надо пользовать в данный момент целевой функцией, первое может менять в активное состояние прерывание приемника, в пассивное возвращает целевая функция, а окна переключаются в инверсии, да два буфера хватит если есть простой в конце заполнения второго буфера и ждать пока не будет сброшен обработки первого буфера в целевой функции.


Советик дельный, а вот что делать с размерностью буферов, ведь как известно памяти в AT90S2313
всего 128 байт надеюсь 2Х32 мне хватит через глаза.
Go to the top of the page
 
+Quote Post
Sergiy
сообщение Jun 7 2006, 08:03
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 29-05-06
Из: Netherlands (Delft)/Ukraine (Odessa)
Пользователь №: 17 547



Цитата(TamTam @ Jun 6 2006, 11:38) *
Цитата(Sergiy @ Jun 6 2006, 13:15) *

Да, обратите внимание на фразу, что в обработчиках прерывания должны быть краткие функции, и не в коем случае писать незя в ЕЕПРОМ, потому что процесс достаточно длителен (мс на байт), выставьте битовую переменную, что нужный пакет в буфере обмена и готовьте следующее окно (я использую двухоконные буфера), когда один заполняется, второй готов и константен для целевой функции - все довольны, а оперирую двумя битовыми флагами, один показывает, что новый буфер подготовлен и ожидает, а второй что какое окно надо пользовать в данный момент целевой функцией, первое может менять в активное состояние прерывание приемника, в пассивное возвращает целевая функция, а окна переключаются в инверсии, да два буфера хватит если есть простой в конце заполнения второго буфера и ждать пока не будет сброшен обработки первого буфера в целевой функции.


Советик дельный, а вот что делать с размерностью буферов, ведь как известно памяти в AT90S2313
всего 128 байт надеюсь 2Х32 мне хватит через глаза.


Вообще все просто - надо брать размер буфера не менее чем максимальная длина пакета (он у вас наверное переменно
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TamTam   Как грамотные люди делают прием пакетов по USART   Jun 5 2006, 01:11
- - TamTam   Цитата(kertis @ Jun 5 2006, 05:48) не оче...   Jun 5 2006, 01:59
- - rat   Принимаемый поток организуете Вы же? Если так, то ...   Jun 5 2006, 02:36
|- - TamTam   Цитата(rat @ Jun 5 2006, 06:36) Принимаем...   Jun 5 2006, 02:49
- - haker_fox   Может быть эта ссылка Вам поможет?   Jun 5 2006, 03:04
- - TamTam   Цитата(haker_fox @ Jun 5 2006, 07:04) Мож...   Jun 5 2006, 03:44
- - beer_warrior   Идея правильная, вот пример кода который кочует из...   Jun 5 2006, 05:24
- - WHALE   Судя по 0A,0D-это модем.Действительн,в eeprom заче...   Jun 5 2006, 05:44
- - vet   Цитата(TamTam @ Jun 5 2006, 05:11) Ну нап...   Jun 5 2006, 05:59
- - Nanobyte   Лучше применять не RAM со всеми его недостатками, ...   Jun 5 2006, 07:39
- - WHALE   а почем нынче fram ?   Jun 5 2006, 07:56
|- - otrog   Цитата(WHALE @ Jun 5 2006, 11:56) а почем...   Jun 5 2006, 09:22
- - beer_warrior   Насколько я понял человек пишет во внутреннюю EEPR...   Jun 5 2006, 08:44
- - TamTam   Цитата(WHALE @ Jun 5 2006, 09:44) Судя по...   Jun 6 2006, 02:06
- - vesago   Мне понравилось как у Атмела сделано. Я такую конс...   Jun 6 2006, 08:08
- - TamTam   Цитата(vesago @ Jun 6 2006, 12:08) Мне по...   Jun 6 2006, 08:46
|- - Sergiy   Да, обратите внимание на фразу, что в обработчиках...   Jun 6 2006, 09:15
- - Sergiy   Цитата(TamTam @ Jun 6 2006, 11:38) Цитата...   Jun 7 2006, 08:15


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

 


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


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