Ivanoff-iv писал(а):у тебя 8 жил... сделай усарт и линию побудки
Можно и так...
-Есть такая кнопочка в схеме )) Называется "sleep" - для принудительного перевода AVR в режим спячки...
-Есть и вторая кнопочка - для принудительного вывода AVR из режима спячки...
Но проблема не в этом. А в том, что надо выделять отдельные выводы AVR под эти кнопочки. А выводов у AVR ограниченное количество... А нам ещё 20 штук AVR подключать куда то надо))
parovoZZ писал(а):Будет шина RS-485? А для неё буферный усилитель без вариантов. А жрёт он наравне с МК. Его тоже в сон? А как тогда пробуждаться?
Не будет у нас ни RS-485 ни CAN. Будет или USART или самодельный протокол.
Пока ещё не определились))
parovoZZ писал(а):В ADSL модеме вовсе не частотное кодирование.
При чём тут вообще ADSL ? Я говорил о модеме с частотным кодированием.
Первый модем с частотный кодированием появился в далёком 1979 году...
Тогда ещё даже само слово "ADSL" не слышали))
Спецификация ADSL появилась только в 1987 году...
Добавлено after 1 hour 3 minutes 14 seconds:
Что лучше... USART vs САМОПАЛ )) Давайте разбираться)) Пока что USART vs САМОПАЛ - счёт 0:0 ))
А пока продолжаем "пилить" самодельный протокол))
1- AVR выходит из спячки по первому фронту импульса пакета.
Чтобы разбудить AVR никакие дополнительные провода тянуть не нужно. Что явный плюс в пользу САМОПАЛ))
USART vs САМОПАЛ - счёт 0:1 ))
2- После пробуждения AVR включает таймер и начинает отсчитывать время между прерываниями INT0 (Mode: Any change).
3- Синхронизация автомата приёмника RX осуществляется по синхропаузе (или межпакетный интервал, как в Ethernet).
4- Обработка пакета. По окончании передачи пакета срабатывает автомата приёмника RX. Далее AVR переходит в режим обработки пакета.
4.1- Первым делом проверяется целостность пакета (по количеству прерываний). В нашем случае должно быть 32 байт х 8 бит x 2 импульса = 512 прерываний. Если за время приёма пакета прерываний было больше 512 или меньше 512, значит при передачи пакета на линии была помеха, что привело к "лишним" прерываниям. В этом случае AVR выдаст ошибку "error_change" и пакет будет отброшен.
4.2- После проверки целостности пакета переходим к проверки контрольной суммы пакета CRC16. В случае ошибки CRC16 AVR выдаст ошибку "error_CRC" и пакет будет отброшен.
Кроме того автомат приёмника RX непрерывно следи за всем процессом приёма пакетов.
5- Если во время приёма пакета на линии возникает помеха и в результате помехи пауза между импульсами или частота импульсов не соответствует заданной (~16 кГц...40 кГц), то срабатывает автомат приёмника RX и AVR выдаст ошибку "error_RX".
Частота импульсов может не соответствовать заданной в случае изменения частоты калиброванного RC генератора передатчика или приёмника (при изменении температуры и/или при изменении питающего напряжения). Т.к. кварца у нас нет. ))
Однако, т.к. таймер у нас перезапускается при каждом прерывании INT0 (Mode: Any change), то соответственно и требования к стабильности калиброванного RC генератора передатчика и приёмника у нас значительно ниже по сравнению с USART. Что явный плюс в пользу САМОПАЛ))
USART vs САМОПАЛ - счёт 0:2 ))
Добавлено after 5 minutes 55 seconds:
А в целом наш самодельный протокол очень похож на USART ))
Только скорость передачи у нас получилась в два раза меньше. Что явный плюс в пользу USART))
USART vs САМОПАЛ - счёт 1:2 ))
Но это скорее из-за несовершенства программы автомата RX на Си.
А писать программу автомата RX на Ассемблере (с точностью до машинного такта процессора) мне лениво))
Добавлено after 27 minutes 19 seconds:
Хотя в прошлой теме мы разгоняли AVR на Ассемблере до скорости 10 МБит/с и более... Когда делали самодельный Ethernet на AVR ))
Что доказывает, что по скорости самодельный протокол может значительно превосходить любой USART))
Но это уже совсем другая тема))
