Zlodey_FM - DSP стереопередатчик с RDS на ATmega32+Si4711+LCD
30.08.2012, 11:23
Итак, начну =)
Сразу снимаю с себя всю ответственность за
потраченное вами время, детали, деньги, итд, проект некоммерческий, а
поэтому вы делаете всё на свой страх и риск!! Конструкция сделана для
ознакомления с работой менюшек, производительностью микроконтроллера
AVR, а также как пример использования графического дисплея в
радиолюбительских конструкциях. Если у вас что-то не заработало, то
вините во всём свои кривые руки!!
Представляю вам свою новую
разработку - "ZlodeyFM" - Si4711 Settings Writer - устройство для
установки параметров микросхемы Si4711, таких как частота, мощность,
девиация, работа с сообщениями RDS, и др.
Собран проект на
микроконтроллере Atmega32L фирмы Atmel, работает на тактовой частоте 8
мгц, либо 16 мгц (от внешнего кварца, для разных тактовых частот созданы
разные прошивки). Питание всей схемы 3,3 вольта, поэтому допускается
использование микроконтроллеров ATmega32A (0-16 мгц) или ATmega32L (0-8
мгц).
На какую-то супер-пупер конструкцию я не претендую, т.к.
проект некоммерческий, при написании кода небыло никакой оптимизации
кода, поэтому микропрограмма на данный момент занимает аж 27 килобайт, и
оптимизировать код у меня нет никакого желания.
Основной
целью было получение более-менее адекватной, ПОЛНОСТЬЮ АВТОНОМНОЙ от ПК
конструкции, с минимальным количеством багов в работе, и более-менее
понятным интерфейсом. Ввиду корявого кода (по меркам современного
программирования) исходный код распространяться не будет. Приветствуется
нахождение багов, для последующего их устранения. Приветствуются
адекватные замечания по работе конструкции, а также адекватные замечания
по улучшению функционала. Встраивание термометров и мп3-плееров я
делать не буду, ибо оно не надо тут!! Связь с ПК делать тоже смысла нет -
для это уже имеется другой проект, который на этом сайте присутствует, а
мой проект является автономным от ПК.
Штатный запуск:
Запуск на чистом/БУ-шном МК:
Основное меню:
Дополнительное меню:
По поводу использованного в этой схеме дисплея - дисплей я использовал
от Сименса C75, разрешение 132*176, а теперь внимание!! От сименса С75
существует два типа дисплеев:
и
эти дисплеи являются совершенно разными по управлению, поэтому в этой
схеме будет работать ТОЛЬКО дисплей с ЗЕЛЁНЫМ ТЕКСТОЛИТОМ на обратной
стороне!!! Если кто-то не сможет достать дисплей с зелёным текстолитом,
то я могу переписать исходник под "жёлтый" дисплей, но это уж когда у
меня будет свободное время и желание... А его может и небыть вовсе =)
Также могу переписать код под знаменитый дисплей
но
опять же при наличии желания и свободного времени... Все эти дисплеи
имеют одинаковое разрешение (132*176), но немного разные по размерам.
Внешний вид этих 4 дисплеев прилагаю на фото (в основном с обратной
стороны).
Изза особенности команд работы с дисплеями, получается такая картина:
-Siemens_C75_green -вывод изображения так же, как на видео, неплохо =);
-Siemens_C75_yellow -вывод изображения В ДВА РАЗА МЕДЛЕННЕЕ чем на видео!!!;
-Siemens_S65_LS020 -вывод изображения В ДВА РАЗА МЕДЛЕННЕЕ чем на видео!!!;
-Siemens_S65_LPH88 -вывод изображения В ДВА РАЗА МЕДЛЕННЕЕ чем на видео!!!.
Как работать с проектом подробно рассказано на видео, поэтому на работе проекта останавливаться не буду, зырьте видосы:
На данный момент в новой версии прошивки (2.0) произошли некоторые изменения:
***ну
во-первых про плюшки... Добавил параметр отвечающий за скорость смены
сообщений RDS (стандартная скорость аццки быстрая- читать такой текст
нереально);
***далее добавил ещё два слова в текст RDS, итого теперь 5 слов (40 символов);
***глобально
оптимизировал код, отвечающий за RDS, поэтому прошивка занимает меньше
места на несколько килобайт, при этом функций стало больше;
***сделал счётчик неуспешных настроек (CTS Errors), сейчас поясню:
-----
Когда
МК отправляет сишке какую-либо команду, МК считывает статус-байт, и
ждёт пока CTS не будет =1. Если CTS=0 то МК делает ещё 9 попыток чтения
статус-байта. Если после девяти попыток бит CTS так и не стал =1, то
признаём неуспешную установку параметра, и прибавляем в "CTS Errors" +1.
Этот счётчик поможет отследить неполадки связи МК и СИ-шки. Счётчик
"CTS Errors" всегда должен быть =0.
Подробнее про статус-байт, и про бит CTS можно прочитать в даташите.