|
Выход компаратора |
|
|
|
Aug 26 2009, 07:06
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(777777 @ Aug 26 2009, 10:55)  Нет, нужна экономия проводов. Есть мысль соорудить выносное устройство, питающееся по двум проводам и по ним же управляющееся. То есть на фоне питающего напряжения 12 В передавать сигнал UARTа с амплитудой, например, 1 В. В приборе его надо выделить и преобразовать в логический уровень после чего подать на вход UARTа. Но установка отдельного компаратора на плате, не добавит проводов к вашему устройству. А если вы собираетесь применять это для UART, то для его скоростей задержки, связанные с формированием программного выхода компаратора не окажут большого влияния на процесс передачи данных. Цитата(Rst7 @ Aug 26 2009, 11:03)  Сделайте софтовый UART на прием  Уж лучше софтовый выход компаратора. Меньше вычислительной нагрузки на контроллер.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Aug 26 2009, 08:58
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(Rst7 @ Aug 26 2009, 11:09)  Вы ошибаетесь. настраиваем прерывание от компаратора на режим Comparator Interrupt on Output Toggle. в самом прерывании Код push tmp push tmp_2
in tmp, ACSR bst tmp, ACO in tmp_2, PORTx bld tmp_2, нужный разряд out PORTx, tmp_2
pop tmp_2 pop tmp reti 17 тактов + вход в прерывание, даже SREG сохранять не надо
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Aug 26 2009, 09:19
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(Rst7 @ Aug 26 2009, 13:07)  Ужос. Мало того, что в Вашем коде налицо принципиальные ошибки и дикий оверхед, так такой подход еще и принципиально приведет к дупе, если состояние компаратора (например, от помехи) будет меняться чаще, чем проц обработает прерывание  Бог с ними, с ошибками, железо бы выявило все ошибки, это эскиз. Помеху бы и для программного UART надо было бы фильтровать. Поэтому из сранительного анализа можно это исключить. А раз присутствует дикий оверхед, значит код может быть еще компактнее. А какой размер получится у программного UART ? Уж не пять строчек это точно. Исправил ошибку )))
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Aug 26 2009, 09:29
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Помеху бы и для программного UART надо было бы фильтровать. Поэтому из сранительного анализа можно это исключить. Неверно. Программный UART в простой реализации в независимости от сигнала на компараторе приведет к 1(от компаратора)+8(биты данных от таймера)+1(проверка стоп-бита от таймера) прерываний. А Ваш способ может привести к полной загрузке процессора. Цитата А какой размер получится у программного UART ? Уж не пять строчек это точно. При правильном подходе - немного.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 26 2009, 09:40
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(Rst7 @ Aug 26 2009, 13:29)  Неверно. Программный UART в простой реализации в независимости от сигнала на компараторе приведет к 1(от компаратора)+8(биты данных от таймера)+1(проверка стоп-бита от таймера) прерываний. А Ваш способ может привести к полной загрузке процессора. В прерывании от компаратора надо будет запретить прерывание от компаратора и разрешить прерывание от таймера + сбросить таймер (либо в начале кадра либо в конце но надо) + теже копирование битов + сдвиг + подсчет кол-ва принятых битов. Кстати выход компаратора соединяется со входом захвата таймера, а прерывании по захвату приведенный мною выше код. Вот и аппаратная фильтрация входа. Еще с этого виртуального выхода компаратора заводим через резистор на физический вход компаратора положительную обратную связь, вот и триггер шмитта. Еще одна фильтрация.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Aug 26 2009, 10:18
|

Участник

Группа: Свой
Сообщений: 63
Регистрация: 13-03-06
Из: Москва
Пользователь №: 15 204

|
Цитата(777777 @ Aug 26 2009, 10:55)  Нет, нужна экономия проводов. Есть мысль соорудить выносное устройство, питающееся по двум проводам и по ним же управляющееся. А почему именно UART? Я тут на досуге озадачивался цифровым управлением для детской железной дороги - мне идея оч понравилась. Воплотил, есличо.  Там и про полярность можно не думать, кстати. В аттаче -краткое описание электрической части стандарта NMRA DCC, для затравки.
S_91_2004_07.pdf ( 154.79 килобайт )
Кол-во скачиваний: 183
|
|
|
|
|
Aug 26 2009, 10:27
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата А не проще поднять уровень сигнала управления до 3 вольт и стабилитроном сдвинуть уровень сигнала в ТТЛ диапазон. Уж тогда лучше поднять размах до напряжения питания. Довести до логического конца, так сказать. Главное, в передаче через UART есть стоповый бит, т.е. на какое-то количество энергии всегда можно расчитывать - в худшем случае можно брать за расчет то, что сопротивление проводов, подводящих питание, будет в 10 раз больше, чем определяется физическим сечением/материалом.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 26 2009, 11:43
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(dimka76 @ Aug 26 2009, 18:19)  Бог с ними, с ошибками, железо бы выявило все ошибки, это эскиз. Вряд ли. Простые ФНЧ из резистора и конденсатора проблему бы не решили. Фильтры усложнять себе дороже. Проще применить программный UART, а сотояние входной ножки анализировать поллингом. При таком подходе, чтобы там небыло на входе, процессор будет тратить времени ровно столько, сколько Вы захотите. Если делать по предложенной Вами схеме, то от любого чиха будет вызываться прерывание. Если чихов за единицу времени очень много, то процессор поселиться и будет жить в прерывании
--------------------
Выбор.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|