Добрый день.
Давайте разберёмся с инициализирующей последовательностью дисплея Nokia 1202 (ST).
Исходный материал: http://tuxotronic.or...ent/lcd/ste2007
Ноги дисплея: !RES, !CS, SDA, SCK
Инициализирую, дёргая ноги контроллера attiny (такт. ч-та 1MHz, питание 3.3V) по следующему алгоритму.
1) Исходное состояние: !RES=1, !CS=1, SDA=0, SCK=0
2) Reset: !RES->0, пауза 0.5сек, !RES->1, пауза 0.5сек
3) Передача инициализирующей последовательности (0xA4, 0x2F, 0xAF, 0xA5)
то есть перед началом передачи:
- !CS->0 (активация интерфейса)
- SDA->0 (первый бит=0, обозначает начало команды)
- SCK->1 (по + фронту данные записываются в приёмник дисплея)
в процессе передачи:
- SDA-> очередной бит данных
- SCK ->0, ->1 (формируем тактовый импульс, данные переносятся по + фронту)
после передачи:
- SCK ->0 (в исходное)
- !CS -> 1 (исходное, отключение интерфейса LCD)
И вот. НИКАКОЙ реакции.
Начальные последовательности какие только не пробовал, и с ресетом (0xE2) и без. И в разной последоваетльности крутил разные команды.
Хотя один раз у меня вдруг отобразились все точки (0xa5 сработала таки?) (причём в тот раз у меня тактовые импульсы подавались вообще ~ 1 гц). Потом показал какую-то рябь на экране, и с тех пор всё.
У кого какие мысли? Я уже мозги сломал.
кстати, как тут нормально форматирование сохранить? Табы не сохраняются, пробелы все тоже схлопываются..
Раздел: Периферия и внешние устройства
Давайте разберёмся с инициализирующей последовательностью дисплея Nokia 1202 (ST).
Исходный материал: http://tuxotronic.or...ent/lcd/ste2007
Ноги дисплея: !RES, !CS, SDA, SCK
Инициализирую, дёргая ноги контроллера attiny (такт. ч-та 1MHz, питание 3.3V) по следующему алгоритму.
1) Исходное состояние: !RES=1, !CS=1, SDA=0, SCK=0
2) Reset: !RES->0, пауза 0.5сек, !RES->1, пауза 0.5сек
3) Передача инициализирующей последовательности (0xA4, 0x2F, 0xAF, 0xA5)
[font=courier new,courier,monospace]CLI ; запретить прерывания до конца передачи по SPI
MOV R16, URxBYTE ; байт данных (будет сдвигаться)
LDI R18, 0x08 ; счётчик сдвига -> 8
CBI INTERFACE_PORT, CSPIN ; !CS->0
CBI INTERFACE_PORT, SDAPIN ; SDA->0 (!D/C)
SBI INTERFACE_PORT, SCKPIN ; SCK _/- (по + фронту бит передаётся в LCD)
on0xBX_1_TxLoop: ; ЦИКЛ ПЕРЕДАЧИ БАЙТА
CBI INTERFACE_PORT, SCKPIN ; SCK -_
MOV R17, R16
ANDI R17, 0x80 ; берём старший бит данных
BST R17, 7 ; сохраняем в T
IN R19, INTERFACE_PORT
BLD R19, SDAPIN ; T -> SDAPIN
OUT INTERFACE_PORT, R19
LSL R16 ; R16<<1 (байт данных)
DEC R18
SBI INTERFACE_PORT, SCKPIN ; SCK _/-
BRNE on0xBX_1_TxLoop
CBI INTERFACE_PORT, SCKPIN ; SCK -_ (по - фронту выполняется команда в LCD)
SBI INTERFACE_PORT, CSPIN ; !CS->1 (по + фронту !CS вып. команда LCD)
SEI ; разрешить прерывания по окончании передачи SPI
RJMP pRxB_ret ; возвращаемся в точку выхода[/font]
то есть перед началом передачи:
- !CS->0 (активация интерфейса)
- SDA->0 (первый бит=0, обозначает начало команды)
- SCK->1 (по + фронту данные записываются в приёмник дисплея)
в процессе передачи:
- SDA-> очередной бит данных
- SCK ->0, ->1 (формируем тактовый импульс, данные переносятся по + фронту)
после передачи:
- SCK ->0 (в исходное)
- !CS -> 1 (исходное, отключение интерфейса LCD)
И вот. НИКАКОЙ реакции.
Начальные последовательности какие только не пробовал, и с ресетом (0xE2) и без. И в разной последоваетльности крутил разные команды.
Хотя один раз у меня вдруг отобразились все точки (0xa5 сработала таки?) (причём в тот раз у меня тактовые импульсы подавались вообще ~ 1 гц). Потом показал какую-то рябь на экране, и с тех пор всё.
У кого какие мысли? Я уже мозги сломал.
кстати, как тут нормально форматирование сохранить? Табы не сохраняются, пробелы все тоже схлопываются..
Раздел: Периферия и внешние устройства