Страница 1 из 1
CVAVR + SPI + hc 4094 (Решено!)
Добавлено: Вт окт 19, 2010 04:08:38
krysun
Здравствуйте.
Проблемма выбора регистра (CS), или передачи 24 бита.
Пример.
PORTB=0x00;
DDRB=0xB0;
.......
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 921,600 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: High
// SPI Data Order: MSB First
SPCR=0x5C;
SPSR=0x00;
//***************
DDRB.1=1; //Тут сидит ОЕ
PORTB.1=1;
spi(0x07); //Вывести на 7-ми сегментник цифру 7 НО --->
PORTB.1=0;
------
Выводится 7-ка сразу на 3-и индикатора.
Включение сдвиговых каскадное...
CS сидит на PD.4 (к примеру)
Вопрос. Как организовать выбор CS (нужного 4094), или как передать 24 бита...
Прошу пинать. Спасибо!
Re: CVAVR + SPI + hc 4094
Добавлено: Вт окт 19, 2010 04:30:30
krysun
И еще:
К устройству подключены 3 табло (2 - по 3 цифры и 1 - 11 сегментов (2-а сдвиговых)).
Так же уместен вопрос о "передаче двухбайтового значения".
ЗЫ: Где-то кто-то выкладывал функцию для передачи 16 бит... Посеял ссылку... ((
Спасибо.
Re: CVAVR + SPI + hc 4094
Добавлено: Вт окт 19, 2010 22:45:16
krysun
Вопрос все еще открыт. Есть каие-нить функции для вывода 16/24 бит?
Re: CVAVR + SPI + hc 4094
Добавлено: Вт окт 19, 2010 23:18:42
urry
ну а в чем разница ?
char arr[3];
spi(arr[0]);
spi(arr[1]);
spi(arr[2]);
Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 14:22:42
krysun
Спасибо. Попробую.
---
Попробовал, результата 0.
ЗЫ: Дата Клоки поштучно толкаю без проблем... Но они на СПИ подвешены (регистры), хочеться так и использовать.
ЗЫЫ: Сигнал к регистрам идет через буфера НС244, ДДРБ.1 вешаю на 1
Код: Выделить всё
DDRB.1=1;
PORTB.1=1;
spi(arr[0]);
spi(arr[1]);
spi(arr[2]);
PORTB.1=0;
Только так и выводит... Но все равно на всех 3-х индикаторах одинаковые цифры

ЗЫЫЫ: Масиву разные значения дать не забыл

Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 16:21:13
urry
да ну. дичь какая то.
Вот проект в проте, все меняется.
Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 16:36:05
krysun
Мой Прот 7.4 SP3 не открывает (на версию матерится)... Ща сам набросаю... Посмотрю.
А, да... Чип Мега 162, Клок=3,6864 ничего не кажет по приведенному примеру (
Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 16:56:13
urry
сохранил в ранней версии - для меги 162 все то же.
Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 20:19:42
Kavka
А схему картинкой можно?
Re: CVAVR + SPI + hc 4094
Добавлено: Ср окт 20, 2010 21:56:07
urry
можно
Re: CVAVR + SPI + hc 4094
Добавлено: Чт окт 21, 2010 06:13:23
Kavka
krysun писал(а):Вопрос. Как организовать выбор CS (нужного 4094), или как передать 24 бита...
Если я правильно понял, то вопрос в том как делать вывод на
несколько групп индикаторов
разной разрядности (в смысле разного количества 7-ми сегментных индикаторов), и при этом посадить вывод на SPI.
...пусть каждая группа индикаторов будет сделана как на рисунке выложенном urry. Данные включены в каскад. Стробы микросхем внутри группы соединены вместе. Нужно стробы каждой группы управлялись отдельно, т.е. подключить их на отдельные выводы контроллера. Цепляем SCK и MOSI на все группы параллельно.
Выбор CS тут, как бы, ненужен.

А вот строб - да. Пока строб не дёрнешь данные со сдвигового регистра в регистр хранения не запишутся.
Например, пусть будет 2 группы индикаторов. Группа 1 имеет 2 разряда, а группа 2 имеет 4 разряда.
Да, ещё, пусть, 7-ми сегментники подключены без дешифраторов, т.е. по SPI надо выводить код, который будет соответствовать начертанию цифр или символов (!!!). И пусть сегмент на индикаторе будет гореть при 1 в соответствующем бите.
Тогда для очистки всех групп надо по SPI закачать количество нулевых байт равное максимальной разрядности имеющихся групп, т.е. 4 в нашем примере. А затем "дёрнуть" строб каждой группы.
При выводе на 1-ю группу индикаторов, записываем в SPI два байта (с кодами индикации) и дёргаем строб первой группы. Индикация на второй группе не измениться.
При выводе на вторую группу надо выводить 4 байта и дёргать строб второй группы.
PS: Делал как-то на 74hc595 индикатор на 4 разряда по SPI. Если интересно - поищу схемку.
Re: CVAVR + SPI + hc 4094
Добавлено: Вс окт 24, 2010 20:11:35
krysun
Получается, у меня 3 табло (по 3 регистра) и линейка (2 регистра) на 2-х табло и линейки MOSI и SCK соединены между собой (короче, все на 10pin шлейфе... OE и СТРОБ раздельно подключены.... Срисую схему и выложу.... Пока вот фотка стенда и ближе индикатора... + пример разводки самого индикатора и буфера на мамке... Спс.
Re: CVAVR + SPI + hc 4094
Добавлено: Пт ноя 05, 2010 23:03:30
krysun
В общем... Что-то так и не выходит... Обидно, досадно, но ладно...
Re: CVAVR + SPI + hc 4094
Добавлено: Вс ноя 07, 2010 05:04:00
krysun
АП!
Re: CVAVR + SPI + hc 4094
Добавлено: Ср ноя 10, 2010 00:17:09
krysun
АП

Re: CVAVR + SPI + hc 4094
Добавлено: Сб ноя 13, 2010 23:33:45
krysun
Заголовок: CVAVR + SPI + hc 4094
Проблема решилась. Ваши примеры и советы работают 100%. Это у меня лыжи не едут.
В mega162 в FUSE-ах было выставлено M161C=0 (режим совместимости с mega161 МК).
При вызове SPI("что-то") несколько раз, зацикливался только 1-й вызов.
Потому и выводились на все индикаторы одинаковые цыфры.
Как FUSE снял, так сразу все и заработало.
Возьмите на заметку.
Спасибо большое за помощь!

Re: CVAVR + SPI + hc 4094 (Решено!)
Добавлено: Вт дек 07, 2010 15:07:26
janus1987
Благадарю за имходник он оказался именно самым простым про SPI то как послать данные