Перейти к содержанию
    

Эмуляция регистра с последовательным вводом на Atmega328

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

 

Но не тут то было.

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

stend.jpg

 

По схеме видно что для работы индикатора нужны 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

stend.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Попробую вечером.

т.е. вы предлагаете на spi повесить и входящий поток и max7219 при приеме данных от пика pin load на max7219 опускать и по приходу на ext_int STROBE его поднимать и выдавать в MAX7219 полученные данные

Так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. вы предлагаете на spi повесить и входящий поток и max7219 при приеме данных от пика
Вот видите - вы точку и заглавную букву сэкономили, а я пять раз перечитывал и пытался понять. Уважайте других.

 

Нет, я предлагаю принимать данные в SPI (поскольку для этого нужна скорость реакции), а выдавать их в max7219 любыми другими ногами ногодрыгом - потому что скорость в этом процессе не нужна и вывод написать гораздо проще, чем ввод. Повесить и то и другое на один-единственный SPI не получится, потому что для приема данных он должен работать в режиме ведомого, а для передачи - в роли ведущего.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...