Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.02.2011, 03:44
|
|
Частый гость
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Несчастный УАРТ
Помогите пожалуйста, как на асме правильно принять пачку данных. Есть два устройства на одном делаю запрос, второе мне отвечает. Шлется пачека из 30 байт мне надо с 16 по 21 записать в память.
Только сильно не пинайте я еще новичек, пока .
Принимаю так:
priem:
sbis UCSRA, RXC
rjmp PC-1
inc tresive
in RX, UDR
cpi tresive,30
brsh stop
cpi tresive,21
brsh propusk
cpi tresive,15
brsh zapis_dannih
propusk:
rjmp priem;
zapis:
st Y+, RX
rjmp priem
stop:
tresive,0
rjmp Mainloop
Принять-то принял даже записал в память, но тут засада если примет случайно вместо 30 например 40 байт, то при вызове приема продолжит с 31 до 40 байта, а не по новому с 0 по 30.
|
|
|
Сказали "Спасибо" jakuchma
|
|
|
05.02.2011, 04:06
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Несчастный УАРТ
Я делаю так
Пакет - это маркер,идентификатор, данные и контрсумма.
Маркер - ну, например, 0x55
потом идентификатор - что, собсно, принимаем, сколько байт и куда класть.
Данные - понятно.
Контрсумма - если вся посылка + побайтно == 0, то принятому верить - и данные из буфера - на место, и взвести флаг приема.
В упрощенном варианте идентификатора может и не быть.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
05.02.2011, 04:28
|
|
Частый гость
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Несчастный УАРТ
Сообщение от nml
|
Контрсумма - если вся посылка + побайтно == 0, то принятому верить - и данные из буфера - на место, и взвести флаг приема.
|
Вооот, как на асме взвести флаг приема. В моем примере он в буфер вгоняет весь пакет что принял, а мне надо только 30 байт. После 30 байта надо все рубануть и ждать нового пакета.
|
|
|
Сказали "Спасибо" jakuchma
|
|
|
05.02.2011, 12:03
|
|
Вид на жительство
Регистрация: 13.05.2005
Сообщений: 386
Сказал спасибо: 9
Сказали Спасибо 44 раз(а) в 37 сообщении(ях)
|
Re: Несчастный УАРТ
jakuchma, ты не понял, ты должен вначале принять весь пакет. оценить по контрольной сумме его достоверность, а уже потом заниматься разбором байтов.
__________________
В технике главное - кувалда. (с)
|
|
|
|
05.02.2011, 12:05
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Несчастный УАРТ
Надо принимать по прерыванию. С каждым принятым пакетом инкременировать переменную - счетчик. Когда счетчик переполнен, поднять флаг (переменная типа бит), что данные получены. В теле программы опрашивать флаг.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
07.02.2011, 00:29
|
|
Частый гость
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Несчастный УАРТ
А где можно почитать о прерываниях, желательно с примерами на ассемблере?
|
|
|
Сказали "Спасибо" jakuchma
|
|
|
07.02.2011, 01:15
|
|
Гражданин KAZUS.RU
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
|
Re: Несчастный УАРТ
Сообщение от jakuchma
|
А где можно почитать о прерываниях, желательно с примерами на ассемблере?
|
Судя по приведённому Вами примеру Вам сюда WWW.ATMEL.COM
|
|
|
|
07.02.2011, 01:52
|
|
Частый гость
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Несчастный УАРТ
Сообщение от kittec
|
Судя по приведённому Вами примеру Вам сюда WWW.ATMEL.COM
|
а на русском?
|
|
|
Сказали "Спасибо" jakuchma
|
|
|
07.02.2011, 08:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Несчастный УАРТ
Сообщение от jakuchma
|
а на русском?
|
Что именно непонятно? Пишите здесь
|
|
|
|
07.02.2011, 12:27
|
|
Вид на жительство
Регистрация: 13.05.2005
Сообщений: 386
Сказал спасибо: 9
Сказали Спасибо 44 раз(а) в 37 сообщении(ях)
|
Re: Несчастный УАРТ
А на русском - ОШИБОК в переводах много. Так что читайте на англицком, особенно раздел ERRATA. А что не понятно, - милости просим сюда, добрые люди разжуют до буквочки.
__________________
В технике главное - кувалда. (с)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:23.
|
|