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

 
 
> управление ADM485
vitko
сообщение Oct 3 2007, 09:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Как можно заставить AVR апаратно генерить сигнал разрешение передачи DE для ADM485 при обнаружении старт бита?
Завожу сигнал передачи от MAX232 на вход Т0 и конфигурирую таймер0 на внешний сигнал по спадающему фронту, таймер должен дергать выводом ОС0А по совпадению А, задаю TCNT=(OCRА-1) чтоб нога ОС0А дергалась по первому же спаду. Но она дергается только по второму.
Можно это как то по другому организовать без внешних элементов - платка маленькая, некуда их впаивать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vitko
сообщение Oct 3 2007, 11:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Устройство - проеобразователь RS232/485 c настраиваемой скоростью на тини2313, MAX232, ADM485. У ADM485 RE всегда разрешен, DE - включается от тини2313 только на время передачи 1 байта при обнаружении стартбита от RS232. Стартбит ловится по внешнему прерыванию, по которому включается DE. Только получается слишком большая задержка включения на 115200 - бывают сбои. Вот и думаю как выкрутиться с минимумом переделок - желательно используя возможности контроллера

А судя по даташиту таймер/счетчик должен ловить каждый фронт/спад внешнего сигнала:

An external clock source applied to the T1/T0 pin can be used as Timer/Counter clock
(clkT1/clkT0). The T1/T0 pin is sampled once every system clock cycle by the pin synchronization
logic. The synchronized (sampled) signal is then passed through the edge
detector. Figure 38 shows a functional equivalent block diagram of the T1/T0 synchronization
and edge detector logic. The registers are clocked at the positive edge of the
internal system clock (clkI/O). The latch is transparent in the high period of the internal
system clock.
The edge detector generates one clkT1/clkT0 pulse for each positive (CSn2:0 = 7) or negative
(CSn2:0 = 6) edge it detects.

Но у меня почемо-то начинает счет со второго перепада - проверял и при счете по фронту, и по спаду...
Go to the top of the page
 
+Quote Post



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

 


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


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