Arduino Mini пытаюсь поженить с графическим WIN25664 на SSD1322.

Нет ответов
5N62V
Offline
Зарегистрирован: 25.02.2016

Всем бобра! :)

Возникла у меня задача запустить WIN25664 на про мини. Подключение по 4 WIRE SPI.

Ну у меня без приключений не бывает.Началось все с того, что два дня он не хотел работать, ни с одной библиотекой. Ни с u8glib , ни с хваленой (мною) u8g2.  Ни один пример не зажег даже пикселя.

Производитель не то, чтобы просто нафиг послал, но дал какую-то йебулу, типа демо код, на ХЗ какой проц и ХЗ какое подключение. Ну, с горем пополам перевел я тот код на нормальный человеческий ардуино язык. И, заработало! :)   Но полезли другие вопросы:

Например такая функция отправки байта данных:

void write_data(unsigned char DATA)
{

   unsigned char bMask;

  PORTB|=0b00000010;//DC=1;
    PORTB&=0b11111011;//CS=0;

     for (bMask = 0x80; bMask; bMask >>= 1)
           {
            ( DATA & bMask)?   PORTB|=0b00001000: PORTB&=0b11110111;
            PORTB&=0b11011111;//SCL = 0;  
          PORTB|=0b00100000;//SCL = 1;
      }
    PORTB|=0b00000100;//CS=1;
   

}

Стоит ли, в плане быстродействия,  переводить ее на аппаратный SPI и там на уровне регистров управлять, или это трусишное ( true C-шное) решение имеет право на существование?

И потом что-то тяжело мне ложится в мозг адресация пикселей у SSD1322. Я правильно понял, что командой 0х15 задаются начальный и конечный пиксель в строке, потом командой 0х75 задается начальная и конечная строка, потом дается команда на запись 0х5С и пошли писать байты данных в графическую RAM? А чего писать-то? писать байт, в котором младший полубайт относится к яркости свечения пикселя, на котором стоит указатель индексации, а второй полубайт запишется в следующий пиксель? 

Подскажите плз, а то каша в голове.... :)