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

 
 
> Эмуляция регистра с последовательным вводом на Atmega328
StalkerSoft
сообщение Jun 27 2016, 20:56
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 8-02-08
Из: Ростов-на-Дону
Пользователь №: 34 864



Разговорились со знакомым радиолюбителем и он мне рассказал о том что есть устройство "Синтезатор частот для любительской коротковолновой радиостанции" схема которого публиковалась в Радио 3-2005. с индикатором реализованном на на регистрах сдвига 74HC595 и ему хотелось заменить этот индикатор и поставить вместо старого индикатора, индикатор на базе MAX7219. Я слегка погорячился и сказал не проблема все можно сделать ставим контроллер подключаем по SPI драйвер и будет работать новый индикатор......

Но не тут то было.
Нарисовал стенд, железа нет, а как-то проверять программу нужно. Прикреплен в виде файла протеуса


По схеме видно что для работы индикатора нужны 3-и сигнала данные (data), синхронизация (Clock) и сигнал для защелки (strobe)
Нашел в инете прошивку для синтезатора sd_ra6lm.HEX загрузил в стенд запускаю ну вроде что-то паказывает


Добавил в стенд ATmega328 завел strobe на itn0, clock на int1 и данные portd.4

Написал код по идее который должен был считывать данные и заполнять буффер и посылать их в MAX7219
Это собственно сам код обработчиков прерываний

Код
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Strobe signal
    TrComplete=1;
    charcount=0;
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
    InputBuff[charcount]=(InputBuff[charcount]<<1) | PIND.4;
    if (++bitcount==7){
            bitcount=0;
            charcount++;
            InputBuff[charcount]=0;
    }
}


Полный код проект на CodeVision прикреплен к сообщению.

При тестировании работы получилось что индикаторы отображают разную информацию.

Может кто подсказать что не правильно я сделал?
Может у кого есть готовые примеры.




Прикрепленные файлы
Прикрепленный файл  max7219_connect.rar ( 49.1 килобайт ) Кол-во скачиваний: 11
Прикрепленный файл  stend.rar ( 20.91 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jun 28 2016, 09:55
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Подозреваю, что контроллер тупо не успевает принимать данные по прерывниям EXT_INT. Почему бы вам не завести сигналы data и clock на SPI, а strobe на EXT_INT? Тогда биты будут задвигаться автоматически, а по strobe будет достаточно сбросить SPI (чтобы восстановить вдруг потерянную синхронизацию) и запустить процесс вывода в MAX7219.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 10:20
Рейтинг@Mail.ru


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