Переделка вакуумно люминесцентного индикатора в LCD

Тема в разделе "Arduino & Shields", создана пользователем ECS-3000, 19 мар 2019.

  1. ECS-3000

    ECS-3000 Нуб

    Всем привет! Есть такой прибор для получения цены товара (прайс-чекер), собранный на контролере 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 и т.д.

    Прошу помощи куда копать, так как не могу понять что дальше делать.
     

    Вложения:

  2. У вас SS висит. Откуда приемнику знать, что данные относятся к нему.
     
  3. ECS-3000

    ECS-3000 Нуб

    я понимаю. но тут я пытаюсь собирать все данные от Atmega128, я вешал 4 и 5 pin Atmega128 на 10 pin Arduin UNO в итоге получал то же сигнал "255"
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Драйвер (заменяемый вами Ардуиной) данные только принимает. Поэтому - pinMode(MISO_PIN, OUTPUT) и #define MISO_PIN 12 - без дела. Драйвер - тупая микра - аналог цепи из 2,5 сдвиговых регистров 74HC595. ( #define SS_PIN 10 - подключайте к цепи STROBE).
    Возможно здесь полноценного протокола SPI нет совсем. Есть аппаратный процесс тактируемого ввода. Только и всего. Что это за данные ? - очевидно картинки символов на вакуумном экране.
    Сколько бит данных гонит за раз процессор - неизвестно, видимо - 20. Можно читать в цикле линии, дожидаясь перепада 1->0 CLK, . Может проще подключить три 595-х и иметь данные на их параллельных выходах. А вместо вакуумного поставить светодиодные модули.
     
    Последнее редактирование: 21 мар 2019
  5. ECS-3000

    ECS-3000 Нуб

    Ariadna-on-Line спасибо за ответ, вакуумно люминесцентный индикатор получает только символы картинки не получает, что бы акуумно люминесцентный индикатор заработал в устройстве установлен повышающий преобразователь на 58 Вольт, в принцип использование сдвигового регистра 74HC595 можно было бы установить, но экран на светодиодах 24x2 получается очень длинный и широким, в прайс-чекер не поместится, что же казать про LCD это компактность, попробовать конечно стоит на сдвиговом регистре 74HC595 но только для теста, MISO сигнал только для отправки данных с Slave в Master и данный pin используется для получения данных из Ezernet контролера и не подключен к схеме вакуумно люминесцентного индикатора, STROBE уже вешал на PIN 10 Arduino, не помогло, уже менял частоту получения данных на 10 Мгц и разные методы получения (SPI_MODE0 по 3) итог глухо.
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    В вакуумных много-символьных индикаторах обычно используется динамическая индикация. Кроме собственно данных, идут такты на сканирование знакомест. Программно тут разобраться - еще та заморочка.
     
    Последнее редактирование: 22 мар 2019