CVAVR + SPI + hc 4094 (Решено!)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение 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 бита...
Прошу пинать. Спасибо!
Последний раз редактировалось krysun Сб ноя 13, 2010 23:34:05, всего редактировалось 1 раз.
Это лыжи не едут!!!
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

И еще:
К устройству подключены 3 табло (2 - по 3 цифры и 1 - 11 сегментов (2-а сдвиговых)).
Так же уместен вопрос о "передаче двухбайтового значения".
ЗЫ: Где-то кто-то выкладывал функцию для передачи 16 бит... Посеял ссылку... ((
Спасибо.
Это лыжи не едут!!!
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

Вопрос все еще открыт. Есть каие-нить функции для вывода 16/24 бит?
Это лыжи не едут!!!
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

ну а в чем разница ?

char arr[3];

spi(arr[0]);
spi(arr[1]);
spi(arr[2]);
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

Спасибо. Попробую.
---
Попробовал, результата 0.
ЗЫ: Дата Клоки поштучно толкаю без проблем... Но они на СПИ подвешены (регистры), хочеться так и использовать.
ЗЫЫ: Сигнал к регистрам идет через буфера НС244, ДДРБ.1 вешаю на 1

Код: Выделить всё

DDRB.1=1;

      PORTB.1=1;
        spi(arr[0]);
        spi(arr[1]);
        spi(arr[2]);
      PORTB.1=0;
Только так и выводит... Но все равно на всех 3-х индикаторах одинаковые цифры :(
ЗЫЫЫ: Масиву разные значения дать не забыл :))
Это лыжи не едут!!!
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

да ну. дичь какая то.
Вот проект в проте, все меняется.
Вложения
serg_pwm.zip
(58.29 КБ) 291 скачивание
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

Мой Прот 7.4 SP3 не открывает (на версию матерится)... Ща сам набросаю... Посмотрю.
А, да... Чип Мега 162, Клок=3,6864 ничего не кажет по приведенному примеру (
Это лыжи не едут!!!
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

сохранил в ранней версии - для меги 162 все то же.
Вложения
serg_pwm162.zip
(78.25 КБ) 221 скачивание
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

А схему картинкой можно?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

можно
Вложения
3333.jpg
(170.25 КБ) 781 скачивание
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение 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. Если интересно - поищу схемку.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

Получается, у меня 3 табло (по 3 регистра) и линейка (2 регистра) на 2-х табло и линейки MOSI и SCK соединены между собой (короче, все на 10pin шлейфе... OE и СТРОБ раздельно подключены.... Срисую схему и выложу.... Пока вот фотка стенда и ближе индикатора... + пример разводки самого индикатора и буфера на мамке... Спс.
Вложения
tvister.zip
(13.19 КБ) 200 скачиваний
IMG_0109.jpg
(147.89 КБ) 644 скачивания
IMG_0102.jpg
(130.93 КБ) 587 скачиваний
tvister.jpg
(92.32 КБ) 633 скачивания
Это лыжи не едут!!!
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

В общем... Что-то так и не выходит... Обидно, досадно, но ладно...
Это лыжи не едут!!!
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

АП!
Это лыжи не едут!!!
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

АП :cry:
Это лыжи не едут!!!
Открыл глаза
Аватара пользователя
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Сообщение krysun »

Заголовок: CVAVR + SPI + hc 4094

Проблема решилась. Ваши примеры и советы работают 100%. Это у меня лыжи не едут.
В mega162 в FUSE-ах было выставлено M161C=0 (режим совместимости с mega161 МК).
При вызове SPI("что-то") несколько раз, зацикливался только 1-й вызов.
Потому и выводились на все индикаторы одинаковые цыфры.

Как FUSE снял, так сразу все и заработало.

Возьмите на заметку.

Спасибо большое за помощь! :beer:
Это лыжи не едут!!!
Родился
Сообщения: 3
Зарегистрирован: Вт дек 07, 2010 11:04:47

Сообщение janus1987 »

Благадарю за имходник он оказался именно самым простым про SPI то как послать данные
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»