2016年10月23日日曜日

ベースマシン ファームウェアを少し修正

UI Controller(SPI Master)の初期化時にSequencer(SPI Slave)にリセットをかけるシーケンスを追加。

UI ControllerとSequencerに共通な定義を"BaseMachineCommon.h"として分離。

UI Controller
https://developer.mbed.org/users/ryood/code/BaseMachine_UI_Controller/

Sequencer
https://developer.mbed.org/users/ryood/code/BaseMachine_Sequencer/ Revision:43

Github:
https://github.com/ryood/BaseMachine

SPIのダンピング抵抗値


Master Master側 Slave側 Slave
SCK 33Ω SCK
MISO 47Ω MISO
MOSI 33Ω MOSI
CS 33Ω CS
INT 47Ω INT

メモ:

SPIの信号線にダンピング抵抗を入れて波形を整えてみたが、Master側がMOSIMISOを拾わなくなることがある。条件は不明。一旦動作しなくなるとResetをかけてもダメな場合があり、SPIのケーブルを挿し直したりすれば治る。オシロのプローブをあてても確実ではなくなった。

MISO(Slave->Master)の動作だけが不安定な様で、これがうまく動かないとシーケンス再生中にLCDに今演奏しているステップが表示できなくなる。この機能を諦めればMISOはなくても良いので現状のままで進めてみる。

Slave->Masterへの通信はファームウェア・レベルでまだ色々試せるし、最悪I2Cや自前の信号線を用意することも考えておく。

発生条件がよくわからないので、この問題にこだわっているとなかなかやる気が出ない(^q^;