Всем привет! Есть такой прибор для получения цены товара (прайс-чекер), собранный на контролере Atmel (Atmega128), к контроллеру подключен вакуумно люминесцентный индикатор по шине SPI, драйвером у вакуумно люминесцентного индикатора установлен A6812, LCD дисплей обычно подключают по шине I2C. Есть задача получать данные из контроллера (Atmega128) и при помощи Arduino UNO преобразовывать данные и передавать на LCD дисплей. Есть код написанный в программе Arduino IDE: #include <SPI.h> #define MOSI_PIN 11 #define MISO_PIN 12 #define SCK_PIN 13 #define SS_PIN 10 SPISettings SettingsA(2000000, LSBFIRST, SPI_MODE0); void setup() { SPCR = B00000000; SPCR = (1 << SPE); SPI.beginTransaction (SettingsA); SPI.begin(); Serial.begin(9600); pinMode(MOSI_PIN, INPUT); pinMode(MISO_PIN, OUTPUT); pinMode(SCK_PIN, INPUT); pinMode(SS_PIN, INPUT); } byte spi_receive() { while (!(SPSR & (1 << SPIF))) {} ; return SPDR; } void loop() { Serial.println(spi_receive()); } Во вложение схема подключения. Так вот суть заключается в том что на выходе я получаю всякую ерунду в виде логической истины значение "255" а должно быть на входе данные типа 100001 и т.д. Прошу помощи куда копать, так как не могу понять что дальше делать.
я понимаю. но тут я пытаюсь собирать все данные от Atmega128, я вешал 4 и 5 pin Atmega128 на 10 pin Arduin UNO в итоге получал то же сигнал "255"
Драйвер (заменяемый вами Ардуиной) данные только принимает. Поэтому - pinMode(MISO_PIN, OUTPUT) и #define MISO_PIN 12 - без дела. Драйвер - тупая микра - аналог цепи из 2,5 сдвиговых регистров 74HC595. ( #define SS_PIN 10 - подключайте к цепи STROBE). Возможно здесь полноценного протокола SPI нет совсем. Есть аппаратный процесс тактируемого ввода. Только и всего. Что это за данные ? - очевидно картинки символов на вакуумном экране. Сколько бит данных гонит за раз процессор - неизвестно, видимо - 20. Можно читать в цикле линии, дожидаясь перепада 1->0 CLK, . Может проще подключить три 595-х и иметь данные на их параллельных выходах. А вместо вакуумного поставить светодиодные модули.
Ariadna-on-Line спасибо за ответ, вакуумно люминесцентный индикатор получает только символы картинки не получает, что бы акуумно люминесцентный индикатор заработал в устройстве установлен повышающий преобразователь на 58 Вольт, в принцип использование сдвигового регистра 74HC595 можно было бы установить, но экран на светодиодах 24x2 получается очень длинный и широким, в прайс-чекер не поместится, что же казать про LCD это компактность, попробовать конечно стоит на сдвиговом регистре 74HC595 но только для теста, MISO сигнал только для отправки данных с Slave в Master и данный pin используется для получения данных из Ezernet контролера и не подключен к схеме вакуумно люминесцентного индикатора, STROBE уже вешал на PIN 10 Arduino, не помогло, уже менял частоту получения данных на 10 Мгц и разные методы получения (SPI_MODE0 по 3) итог глухо.
В вакуумных много-символьных индикаторах обычно используется динамическая индикация. Кроме собственно данных, идут такты на сканирование знакомест. Программно тут разобраться - еще та заморочка.