Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega8 + MAX7219 не работает SPI
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 25, 2024 13:39:57

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 34 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 12:40:15 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Коллеги, а накидайте идей, по какой-такой причине на сабже может не работать SPI? Расклад следующий: есть Atmega8, которой нужно выводить информацию на восьмиразрядный индикатор через драйвер MAX7219. В Протеусе всё работает замечательно, но в железе я получаю полный ступор: на линии MOSI висит высокий потенциал и нет никакого движения, на линиях SCK и PB0 низкий потенциал с периодически возникающими пачками каких-то хаотичных импульсов. Индикаторы при этом либо вообще не включаются, либо выводят бессмыслицу. Ну, ОК, программер я тот ещё, мог и накосячить в коде. Беру с сайта NarodStream демонстрационную программу, которая разжёвана уважаемым автором до последней строчки...
https://narodstream.ru/avr-urok-28-spi- ... d-max7219/
...заливаю её в контроллер и получаю тот же результат. Отключаю от контроллера драйвер с индикатором -- ничего не меняется. Заливаю для проверки простейшую программу-мигалку, всё работает, контроллер весело дрыгает всеми своими ножками. Прошивается и читается он, к слову, тоже без проблем.

Что бы это могло значить? Попался бракованный контроллер или это я где-то люто торможу? :shock: К сожалению, запасного под рукой нет.

В монтаже ошибок нет, флюс смыт уже просто до хруста. Все подключения по даташиту, ну разве что в драйвере по линии ISET стоит не волшебный резистор 9,53К а нормальный в 10К. Атмега не китайская, куплена во всем известном магазинчике с богатым ассортиментом и конскими ценами :) . Фьюзы установлены по умолчанию, 3F, D9, E4. Блоки питания пробовал разные, в том числе и трансформаторные.

Новый контроллер заказал, жду. А пока буду благодарен за любые идеи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 13:11:39 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Идея есть. Выложить свой неработающий код в части работы SPI и инициализации. Потому что осень ослабляет телепатические способности. На линиях висят те потенциалы, которое им диктует программа - в нормальном МК.
Возможно несоответствие spi mode у дивайса и в программе. Всё легко ущучивается: синхронизнуться внешне от CS, посмотреть MOSI относительно CLK. MOSI постоянно в высоком? Коротыш на питание, косяк в программе, неисправность МК. Чудес не бывает. Разделяется и проверяется по частям.
Ну и МК может быть дохлый. То, что прошивается, ещё не гарантия "хорошести" .

_________________
Изображение


Последний раз редактировалось Jack_A Вс сен 20, 2020 14:02:30, всего редактировалось 1 раз.

Вернуться наверх
 
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 13:32:22 
Выписал себе тоже такой индикатор на MAX7219… придёт поделюсь тестовой прошивкой для проверки работы индикатора. А пока жду железку… :)


Вернуться наверх
   
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 13:53:45 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Идея есть. Выложить свой неработающий код в части работы SPI и инициализации.


Программер я начинающий и мой код пока что слишком убог, чтобы его публиковать :( Так что позволю себе ограничиться демо-программой от NarodStream, которую я упоминал выше. Она ровно так же не работает на моей железке, но отлично запускается в Протеусе. От авторской, выложенной на сайте, она отличается только тем, что количество знакомест ограничено пятью, восемь у меня протеус не тянет.

Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>


char dg = 5;

void SPI_init(void)
{
   DDRB |= ((1<<PORTB2)|(1<<PORTB3)|(1<<PORTB5)); //ножки SPI на выход
   PORTB &= ~((1<<PORTB2)|(1<<PORTB3)|(1<<PORTB5)); //низкий уровень
   SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR0);//включим шину, объ¤вим ведущим, делитель 16
}

void SPI_SendByte (char byte)
{
   SPDR = byte;
   while (!(SPSR & (1 << SPIF)));
}

void Send_7219(char rg, char dt)
{
   PORTB &= ~(1<<PORTB2);
   SPI_SendByte(rg);
   SPI_SendByte(dt);
   PORTB |= (1<<PORTB2);
}

void Clear_7219(void)
{
   char i = dg;
   // Loop until 0, but don't run for zero
   do {
      // Set each display in use to blank
      Send_7219(i, 0xF); //CHAR BLANK
   } while (--i);
}

void Number_7219(volatile long n)
{
   char ng = 0; //переменная для минуса
   if (n < 0)
   {
      ng = 1;
      n *= -1;
   }
   Clear_7219();
   if (n == 0) {
      Send_7219(0x01, 0); //в первый разряд напишем 0
      return;
   }
   char i = 0;
   do {
      Send_7219(++i, n%10);
      n /= 10;
   } while (n);
   if (ng) {
      Send_7219(i+1, 0xA); //символ -
   }
}

void NumberFull_7219(volatile long n)
{
   int i;
   //Clear_7219();
   for(i=0;i<dg;i++)
   {
      Send_7219(i+1,(n/((long)pow(10,i)))%10);
   }
}


int main(void)
{
   unsigned int i=0;
   SPI_init();
   Send_7219(0x09, 0xFF); //включим режим декодирования
   Send_7219(0x0B, dg - 1); //сколько разрядов используем
   Send_7219(0x0A, 0x02); //яркость
   Send_7219(0x0C, 1); //включим индикатор
   Clear_7219();
   Send_7219(0x01, 1);
   Send_7219(0x02, 2);
   Send_7219(0x03, 3);
   Send_7219(0x04, 4);
   Send_7219(0x05, 5);
   Send_7219(0x06, 6);
   Send_7219(0x07, 7);
   Send_7219(0x08, 8);
   _delay_ms(1000);
   Number_7219(-2016);
   _delay_ms(1000);
   while(1)
   {
      NumberFull_7219(i);
      i++;
      _delay_ms(500);
   }
}


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 14:55:40 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Читать этот код мне лень, могу посоветовать: перерезать дорожку от MOSI и посмотреть, что теперь на MOSI - есть импульсы или нет. Если есть, а на другой стороне "перереза" высокий - то коротыш. Если нет - косяк МК.

_________________
Изображение


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 16:15:23 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Монтаж проверен-перепроверен по десятому кругу, всё с ним нормально, замыканий нет. Я и сам, откровенно говоря, склоняюсь к мысли, что мне "повезло" заиметь глючный МК, но надежда, как известно, умирает последней. Оттого и решил спросить совета у бывалых.

Что касается кода, то если Вам или ещё кому он будет интересен, то вот видеоурок. Автор детально разбирает буквально каждую строчку и демонстрирует работу и в Протеусе и в железе. Чёрт, эта программа просто обязана работать, там нечему глючить.



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 17:17:15 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Не знаю что там было в регистре перед этой строчкой
Код:
SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR0);//включим шину, объ¤вим ведущим, делитель 16
но попробуйте заменить на
Код:
SPCR = (1 << SPE) | (1 << MSTR)| (1<<SPR0);
SPSR = (0<<SPI2X);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс сен 20, 2020 21:59:32 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Хм... SPI2X по умолчанию стоит в нуле. ОК, попробую выставить бит явно. В Протеусе код работает, позже попробую поэкспериментировать с железкой и о результате отпишусь.


Вернуться наверх
 
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пт ноя 06, 2020 19:37:33 
Пришли индикаторы на мах7219…
Изображение
Как и обещал, написал тестовую прошивку для меги8. Фьюзы прошивать не нужно (МК тактируется на заводских установках). На индикаторе установлена минимальная яркость. Задействован аппаратный SPI.
Вложение:
MAX7219_Test.hex

Схема для подключения индикатора к выводам МК.
СпойлерИзображение


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Чт дек 17, 2020 22:11:28 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Коллеги, премного извиняюсь за долгое молчание, свалился на голову срочный проект.

Продолжаю разговор. Дело, как оказалось не в Меге, а в связке Max7219 и индикаторах. Я тоже разжился готовыми китайскими модулями, точно такими как в посте выше. Подключаю их, вуаля, всё работает идеально! Но мне надобны циферки побольше. Закупаю ещё пять штук 7219 к трём имеющимся у меня, итого их становится восемь. Так вот, из восьми штук на моём самодельном дисплее запустилась лишь одна, да и та работает нестабильно, через несколько минут может погаснуть. Остальные ведут себя так, как описано в первом посте.

Какого шкодливого кота 7219 отказывается работать с индикаторами? Они у меня самые обычные, семисегментные, красные, общий катод, типа TOS-5161AMR-N, высота знакоместа 14 мм.


Вернуться наверх
 
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пт дек 18, 2020 07:55:56 
Если по отдельности (с тестовой прошивкой), все модули работают нормально, а в связке с Вашей программой управления начинают глючить – то засада в Вашей программе… а вообще при необходимости больших цифр/букв используют матрицы 8х8 с МАХ7219 как пример:
Спойлерhttps://aliexpress.ru/item/4001189296229.html?spm=a2g0o.search0302.0.0.2511373a2oNrkN&algo_pvid=5ecffd06-f398-4dad-b9d2-14c0ac266c58&algo_expid=5ecffd06-f398-4dad-b9d2-14c0ac266c58-15&btsid=0b8b034a16082669484826525ee0d4&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_



Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пт дек 18, 2020 11:25:38 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14067
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для цифирек "побольше" (или совсем "безразмерных") легче разновидности 595го регистра применять с источниками тока на каждый сегмент на основе LM317...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вт дек 22, 2020 12:09:50 
Открыл глаза

Зарегистрирован: Вт июн 22, 2010 16:45:24
Сообщений: 47
Рейтинг сообщения: 0
Спасибо всем за ответы!
С прошивкой у меня всё в порядке, как выяснилось. С позволения почтенной публики я опишу ситуацию немного подробнее. Итак, имеется устройство, состоящее из двух плат, соединённых бутербродом через PLS-PBS. На нижней распаяна Мега вместе со всей требухой, верхняя -- чисто дисплей, здесь установлены индикаторы и 7219. При включении имеем картинку, описанную в первом посте. Однако, если вместо верхней платы подкинуть китайский модуль, фото которого есть выше у тов. Самсусамыча, то всё работает правильно. Более того, с одной из имеющихся у меня 7219 самодельный дисплей тоже запускается, но работает нестабильно и через пару минут вешается. Тем не менее этот факт как бы говорит, что дисплей распаян правильно и в принципе работоспособен.
Кроме того у меня есть отладочная плата, в которую я залил демонстрационную прошивку от НародСтрим, тоже упомянутую выше. С ней картина аналогичная, самодельный дисплей не работает, китайский -- запускается.
ИМХО я словил какой-то очень странный конфликт 7219 и индикаторов, причины которого я пока не понимаю. Микросхемы куплены в разных местах: три в ЧиД, пять у китайцев, что примечательно запускается "китайская". В качестве рабочей версии подозреваю неудачную разводку платы, из-за которой возникают наводки. Индикаторы одинарные, плата двусторонняя, дорожек, понятное дело, много. Пока не придумал ничего лучше как заказать строенные сборки индикаторов и полностью переделать плату. Посмотрю, что из этого выйдет.
Да, слишком большие цифры мне не требуются, это будет настольное устройство, для которого матрицы излишни. Знакоместо в 14 мм. в самый раз, а вот китайский модуль маловат.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс янв 10, 2021 09:52:09 
Родился

Зарегистрирован: Пт фев 26, 2016 07:05:22
Сообщений: 13
Рейтинг сообщения: 0
Kalessin72, скажи чем разрешилась проблема?
Чтобы не плодить темы, опишу свою проблему здесь.
У меня подобная сложность - с али пришёл 1 модуль в сборе (матрица 8х8 и max7219), и отдельно 5шт. max7219.
Модуль в сборе работает как положено, а вот если родной max7219 заменить на те, что пришли отдельно, то ничего не работает, и более того, виснет атмега.
Самое интересное, что все 5 отдельных max7219 дают такой эффект.
Есть ли у кого соображения в чём причина зависания атмеги от max7219?
На фото рабочий модуль в сборе.
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс янв 10, 2021 16:00:14 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14067
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Отмечалась нестабильная работа блока с 8 индикаторами ("стандартная" платка с СМД МАХом) в случае режима дешифратора.
Нечеткое включение/"зависание" при подаче питания...
Вариант "знакосинтеза" таких дефектов не обнаруживал.
:roll:
Как предположение...
Собственно в МАХе свой генератор сброса - возможно время до подачи блока команд инициализации надо увеличить.
Расположенный у контактов питания электролит также не слишком увеличивать...
Смотрим за максимально допустимым током на сегмент (задается внешним резистором) и соотношение кратности увеличения при снижении количества активных знакомест (менее 8 ). И корректность команд в блоке инициализации. Возможно имеет значение порядок следования команд - сначала настройка, затем включение индикации.
:dont_know:
Крайний случай - подделка...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Вс янв 10, 2021 17:03:18 
Родился

Зарегистрирован: Пт фев 26, 2016 07:05:22
Сообщений: 13
Рейтинг сообщения: 0
BOB51, как только к драйверу подключаю контакт DIN (MOSI на атмеге), то атмега перестаёт определяться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пн янв 11, 2021 10:01:41 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14067
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У Вас случаем не адуринка?
Там с контактами ISP надо несколько поаккуратнее обращаться - учитываем их коротенькую активацию на момент запуска бутлоадера при включении платки!
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пн янв 11, 2021 17:28:00 
Родился

Зарегистрирован: Пт фев 26, 2016 07:05:22
Сообщений: 13
Рейтинг сообщения: 0
BOB51 писал(а):
У Вас случаем не адуринка?
Там с контактами ISP надо несколько поаккуратнее обращаться - учитываем их коротенькую активацию на момент запуска бутлоадера при включении платки!
8)

Нет, голый МК atmega8a


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пн янв 11, 2021 21:20:02 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14067
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Точно без всяких бутлоадеров?
Да и тест предпочтительно программным SPI провести для полной чистоты...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Atmega8 + MAX7219 не работает SPI
СообщениеДобавлено: Пн янв 11, 2021 21:46:58 
Есть ли у кого соображения в чём причина зависания атмеги от max7219?

Моя тестовая прошивка тоже зависает?


Вернуться наверх
   
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y