полудуплекс (RS485) на ATmega161, работа битаTXC ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено korotkov 15 октября 2003 г. 22:56

Кто-нибудь пробовал реализовать полудуплекс (RS485) на ATmega161?

Имеется прибор реализованный на ATmega103. Повторяю на ATmega161 и что я вижу ...

Кусок кода, прерывания запрещены

PORTB |= sDE1; //transmite Archivater - PC
delay_ms(5);

for(i=0;i<=len;i++) putchar(str[i]);

while (!(UCSR1A & (1< UCSR1A |= (1<
>> delay_ms(5);
PORTB &= ~sDE1; //recive Archivater - PC

В итоге получаем переключение линии на прием до того как последние данные ушли, смотрю терминалкой - последних двух символов нет, а затем и осцилом!!! Данные идут а линия уже переключилась!!! Хотя в DataSheet на ATmega161 (doc1228.pdf стр.73) сказано что TXC1 установится только после того как данные из сдвигового регистра ушли и регистр UDR1 пуст, т.е. нет более данных для передачи. Этот режим специально используется для полудуплексного режима обмена. В errata тишина.

Самое интересное, рядом лежит прибор на ATmega103 где все тип-топ.

Временно использую задержку перед переключением линии на прием, но у прибора программируются скорости обмена и делать выбор задержки от скорости :(

Кто-нибудь встречался с такими особенностями ATmega161.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru