Atmega168 + RTC8564

土曜日午後を使ってAtmega168 + RTC8564のプログラミングをする。AVRマイコンリファレンスブックとデータシートを参考にしながらI2C(TWI)通信してみる。今回は、レジスタの使い方がいつもより複雑なのか思ったように動かない。

日曜日午後続きをする。ロジアナを使い波形をみるが正常動作していて、RTC8564も思った値が出力されている。プログラムのソースを精査していると理由がわかった!

TWIのリード関数は、引数としてリード結果をポインタ引渡しにしているのだが、TWDRを読み取るとき、アスタリスクなしのポインタでデータを読み取っているのだ。これでは、動かないはずだ。。。



AVR ADコンバータ

AVRマイコンリファレンスブックを参考にしながらADコンバータ+UARTプログラムを組む。あっさりとLM35Zの出力信号をPORTC0でAD変換した結果をUARTに送出できた。

LM35Zの精度ってかなり高いようだけど実際のところどうなのだろうか?
早朝、テスタで出力電圧をはかったら、280mVもある。10mV/℃なので28℃。±0.5℃の精度だというが??
温度計を買ってきて比較してみよう。

次は、RTC-8564NBとのI2C通信をしよう。

AVR UART

AVRマイコンリファレンスブックを参考にUARTプログラムを組みこんだらあっさりと動いてくれました。ありがとう、AVRマイコンリファレンスブック!
つぎはA/Dコンバータだ!

16x2 LCD vs 20x4 LCD

SC1602BSLBの制御に2日間時間をつぶしているが、初期化ができない。非常に詳しく解説されているサイトを参考にするがわからず。小型液晶ディスプレイの選び方と使い方を書店でたちよみするが解決策がわからず。

SC1602BSLBの制御を断念してSC2004CS-Bに変えたらあっさり動いた。何が原因?原因調査は保留し、次へ進もう。

インタフェース7月号と定本 ディジタル・システムの設計を購入。

AVR + キャラクターLCD

AVRのLCD制御プログラムを作成しています。
・・・うまく動きませんが、コントラスト信号を制御するのを忘れていたようです。ボリューム抵抗が見つからずその後の作業を断念。今日買ってこよう。

AVRprog 、timer割り込み

USB-SerialケーブルのポートをCOM9からCOM1に変更したらSTK500のファームウェアの復旧に成功した。AVRprogは、COM9を見にいかないのが原因か。覚えておこう。

forループディレイでLEDを点滅するプログラムを作成して動作確認した。
これで、
ターゲットプラットフォーム:STK500
ターゲットデバイス:ATtiny13,ATmega168など
IDE:AVRStudio
Cコンパイラ:WinAVR
の構成で開発準備が整った!

このページを参考にforループディレイをタイマ割り込みに変更した。