2016年8月13日土曜日

ベースマシンのUI LCDとロータリーエンコーダー

LCDはaitendoの「CH12864F-SPI」を使うことにした。今さっき、aitendoのWebページを見たら在庫切れやん(^q^;


この間Nucleo F401REのSPI2で実験したら半分ずれていたが、mbedのst7565ライブラリはjun imamuraさんのhttps://developer.mbed.org/users/imachooon/code/st7565LCD/ではなく、
Masato YAMANISHIさんがst7567用に改変されたhttps://developer.mbed.org/users/masato/code/st7565LCD/でないとダメだったかもしれない。

とりあえずst7565LCD.cppのpagemapという変数の要素の並びを変えてやればちゃんと表示された。

ピンアサイン(途中)

配線図

ファームウェア
BaseMachine_Sequencer(mbed)
https://developer.mbed.org/users/ryood/code/BaseMachine_Sequencer/

mbed OS 5になってRTOSの仕様がちょっと変わったのかも。ThreadのコンストラクタでWarningが出た。

Thread thUI(pollingUI, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);

Warning: Function "rtos::Thread::Thread(void (*)(const void *), void *, osPriority, std::uint32_t, unsigned char *)" (declared at <a href="#" onmousedown="mbed_doc_goto('/BaseMachine_Sequencer/mbed-rtos/rtos/Thread.h', '140'); return false;">mbed-rtos/rtos/Thread.h:140</a>) was declared deprecated ("Thread-spawning constructors hide errors and may lead to complex program state when a thread is declared") in "main.cpp", Line: 101, Col: 18

LCDの表示はまとめてクラス化することにした。

単体テスト(途中)
SpiSequencerDisplay_Test
https://developer.mbed.org/users/ryood/code/SpiSequencerDisplay_Test/

メモ:

D0、D1をDigitalInなどで使うと、printf()でUART出力できなくなる。そのくせD0、D1にはそれらしい波形は出ていないようだ(@@;

参考:「ArduinoとNucleoでPCとのSerial(UART)通信の最高速度を調べてみる。

Nucleo64でもピン数がカツカツになってきた。一部使えないMorpho Headerのピンがあるのではまらないように再度メモ。

参考:「NucleoF401REのMorpho Headerは一部未接続(メモ)