Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Несчастный УАРТ

Непрочитано 05.02.2011, 03:44  
jakuchma
Частый гость
 
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
jakuchma на пути к лучшему
По умолчанию Несчастный УАРТ

Помогите пожалуйста, как на асме правильно принять пачку данных. Есть два устройства на одном делаю запрос, второе мне отвечает. Шлется пачека из 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 вне форума  
Сказали "Спасибо" jakuchma
warel (27.06.2019)
Непрочитано 05.02.2011, 04:06  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Я делаю так
Пакет - это маркер,идентификатор, данные и контрсумма.

Маркер - ну, например, 0x55

потом идентификатор - что, собсно, принимаем, сколько байт и куда класть.

Данные - понятно.

Контрсумма - если вся посылка + побайтно == 0, то принятому верить - и данные из буфера - на место, и взвести флаг приема.

В упрощенном варианте идентификатора может и не быть.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
warel (27.06.2019)
Непрочитано 05.02.2011, 04:28  
jakuchma
Частый гость
 
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
jakuchma на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Сообщение от nml Посмотреть сообщение
Контрсумма - если вся посылка + побайтно == 0, то принятому верить - и данные из буфера - на место, и взвести флаг приема.
Вооот, как на асме взвести флаг приема. В моем примере он в буфер вгоняет весь пакет что принял, а мне надо только 30 байт. После 30 байта надо все рубануть и ждать нового пакета.
jakuchma вне форума  
Сказали "Спасибо" jakuchma
warel (27.06.2019)
Непрочитано 05.02.2011, 12:03  
chapa
Вид на жительство
 
Аватар для chapa
 
Регистрация: 13.05.2005
Сообщений: 384
Сказал спасибо: 9
Сказали Спасибо 44 раз(а) в 37 сообщении(ях)
chapa на пути к лучшему
По умолчанию Re: Несчастный УАРТ

jakuchma, ты не понял, ты должен вначале принять весь пакет. оценить по контрольной сумме его достоверность, а уже потом заниматься разбором байтов.
__________________
В технике главное - кувалда. (с)
chapa вне форума  
Сказали "Спасибо" chapa
warel (27.06.2019)
Непрочитано 05.02.2011, 12:05  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Надо принимать по прерыванию. С каждым принятым пакетом инкременировать переменную - счетчик. Когда счетчик переполнен, поднять флаг (переменная типа бит), что данные получены. В теле программы опрашивать флаг.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (27.06.2019)
Непрочитано 07.02.2011, 00:29  
jakuchma
Частый гость
 
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
jakuchma на пути к лучшему
По умолчанию Re: Несчастный УАРТ

А где можно почитать о прерываниях, желательно с примерами на ассемблере?
jakuchma вне форума  
Сказали "Спасибо" jakuchma
warel (27.06.2019)
Непрочитано 07.02.2011, 01:15  
kittec
Гражданин KAZUS.RUN
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Сообщение от jakuchma Посмотреть сообщение
А где можно почитать о прерываниях, желательно с примерами на ассемблере?
Судя по приведённому Вами примеру Вам сюда WWW.ATMEL.COM
kittec вне форума  
Сказали "Спасибо" kittec
warel (27.06.2019)
Непрочитано 07.02.2011, 01:52  
jakuchma
Частый гость
 
Регистрация: 19.10.2009
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
jakuchma на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Сообщение от kittec Посмотреть сообщение
Судя по приведённому Вами примеру Вам сюда WWW.ATMEL.COM
а на русском?
jakuchma вне форума  
Сказали "Спасибо" jakuchma
warel (27.06.2019)
Непрочитано 07.02.2011, 08:25  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Несчастный УАРТ

Сообщение от jakuchma Посмотреть сообщение
а на русском?
Что именно непонятно? Пишите здесь
niXto вне форума  
Сказали "Спасибо" niXto
warel (27.06.2019)
Непрочитано 07.02.2011, 12:27  
chapa
Вид на жительство
 
Аватар для chapa
 
Регистрация: 13.05.2005
Сообщений: 384
Сказал спасибо: 9
Сказали Спасибо 44 раз(а) в 37 сообщении(ях)
chapa на пути к лучшему
По умолчанию Re: Несчастный УАРТ

А на русском - ОШИБОК в переводах много. Так что читайте на англицком, особенно раздел ERRATA. А что не понятно, - милости просим сюда, добрые люди разжуют до буквочки.
__________________
В технике главное - кувалда. (с)
chapa вне форума  
Сказали "Спасибо" chapa
warel (27.06.2019)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто по дзс1768 поможет? уарт не пашет индюк Микроконтроллеры, АЦП, память и т.д 0 14.01.2011 02:31


Часовой пояс GMT +4, время: 19:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.