8080A I2C RTC読み出し動く

8080Aマイコンボードの開発環境が落ち着いたので、I2C接続のRTCを読み出すプログラムを書いて遊びました。I2C接続のRTCは、DS3231のモジュールがアマゾンの通販で安く売ってますので、それを使ってます。レジスタを読み出してHEXで表示するだけでOKなので、ラクチン。

前にmicrosoft basic でテストしていた内容を下敷きに、アセンブラでRTCの読み出し表示プログラム(要は時計)を実装しました。

テスト中。いい感じ。

こちらに、作成したプログラムを貼っておきます。

i2ctest_8080_lst

I2Cの初期化がうまくいかない(?)ことがたまにあり、これはbasicで試していた時もそうだったのですが、なぜかよくわかっていません(多分STOPコンディションなど半端な状態のまま、終わったりした影響が次に実行するときに出るんだと思う)。

ま、後でよく考えよう。

RTCの読み出しと表示を合わせて3ms程度で終わります。basic と比べるとやっぱり圧倒的に速い。ロジアナでデータとアドレスのバスを観測すると、一つずつ命令を実行している様子が楽しめて、可愛らしく感じるものがあります。ビットもえー、って感じ?

I2Cのクロックは63kHz程度になってます。マニュアルによると、PCF8584に12MHz クロックを入れたときに90kHzになる設定にしているのですが、8080Aなので、実際に入れているのは、2MHz クロックなんだけど、何となく動いている。どないやねん(これが初期化に失敗する理由?)。設定値を変更して遊ぼう。

(追記)設定を変えて試そうとしてみたら、設定を間違えていることに気づき、直したら全く動かない。いろいろやってみたけど、間違った設置値でしか動かせてない。やっぱりちゃんとしたクロックを送ってあげないとダメなのかな?(追記終わり)

最初はおっかなびっくりアセンブラを書いていましたが、パターンに慣れてくると、気軽に手が動くようになってきた。生成される機械語もアセンブラだと短いし、結構楽しくなってきました。

smallc は変数の受け渡しがいまだによくわからなくって勉強中。smallcでめちゃくちゃ冗長なコードが生成されるのを見てしまうと、やっぱり遊ぶのには、アセンブラの方がいいかも、と思える。

次は、I2C接続のeepromの読み書きをしてみようと思っているところです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)