2015年8月22日土曜日

シフトレジスタ(74HC595)をAVR(ATMega88V)で使う

LEDの制御をするために74HC595のテストをしてみた。

「chibiegg研究ノート」さんの記事(http://www.chibiegg.net/elec/avr-elec/74hc595_sample.htm)を参考にしました。

ブレッドボード図
↑表記はatmega168になっていますが、実際はATMega88V(http://akizukidenshi.com/catalog/g/gI-03655/)を使用しました。

「chibiegg研究ノート」さんの記事では、ATiny2313を使用されていますが、リズムマシンのシーケンス入力制御用にはATMega88Vを使用する予定なのでPIN配置を変更した。

AVRのソースはほとんどそのままだが、ATMega88VのPIN配置に合わせて
#define SHIFT_PORT PORTB
#define SHIFT_DATA PB1
#define SHIFT_SCK PB2
#define SHIFT_RCK PB3
に変更。DDRも合わせて変更した。
//DDRB = 0b00000111;  //入出力設定
DDRB = 0b00001110;
ATMega88VのFuse Bitはデフォルトのまま
hFuse: 0Fh
lFuse: 62h
eFuse: 01h
基本的には内蔵RCクロック1MHzの動作の設定です。

eFuseの値はavrdudeの読み取り値でこういう値でした。
→ATMega328PではデフォルトでeFuse:0Fhとかだったような気がしますがよく覚えていない(^q^;


動作状態

3.3V駆動で問題なく動作したので、たいしたことない動画だが、youtubeにあげてみた。


動画撮影にはこの間川崎のキャンドゥ(セリアだったかな?)でゴリラポッドみたいな三脚を買ったので使ってみた。


安っすかったけどちゃんと使えたです(^q^/)

SPI

「chibiegg研究ノート」さんのところでAVRのSPIを使う方法も紹介されていたのでやってたが、こちらも動作OK。

SPIのメリットとしてはコードサイズを節約出来て動作が早くなるようだが、AVRのSPI用のPIN(SCK, MISO, MOSI, SSにアサインされているPB2..PB5)が予約されてしまうようで今回の用途では少し使いづらい。(MISOとSSは使わないので)

GPIOを使ったほうがある程度PIN配置の自由が効きそうなのでGPIOを使う方向で考えたいと思う。

ソースコードも多少改変したのでGithubにあげました。
https://github.com/ryood/74HC595_Test