highlightjs– tag –
-
LPS331使用 高精度大気圧モジュールとのI2Cでの通信テスト
秋月で、「LPS331使用 高精度大気圧モジュール」を650円で入手しましたので、そのテストです。大気圧モジュールの温度補償用として精度は±2 degCほどのようですが、温度計もついています。通信プロトコルとして、I2CとSPIに対応しています。5番ピンをプルアップするかしないかで、I2C/SPIの切り替えができます。AVRを使って、I2Cの通信の練習をしようと思いましたので、I2Cモードで通信のテストをしてみます。AVRにはTWIにハードウェア対応しているatmega328Pを使います。 LPS331APは3.3V動作です。まず、この前... -
ニキシー管時計のAVR-gccソースコード
本体は内部RCで1 MHzで動作し、時計用タイマは外部クロック端子につながっている時計用水晶振動子の32.768 kHzで動作させています。24時間制です。 時計合わせ用にボタン2つ(←と↑)がついています。←を押すと順に1分の位、10分の位、1時間の位、10時間の位が点滅して、その位の数字が調整できます。↑を押すと、点滅している桁の数字が1つ増えます。10秒なにもボタンを押さないと元にもどります。 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define TIMEOUT 10/... -
AVRのIOピンに押しボタンスイッチで入力する
スイッチが押されると、LEDがON/OFFとトグルする簡単なコードを書きました。 スイッチはPC5, LEDはPD4に接続してあります。 PC5はプルアップしてあり、スイッチによりGNDに短絡されると、割り込み(PCINT1_vect)が入り、PD4の出力がXOR演算でトグルされます。 初期化では、ポートのIN/OUT、1/0の設定、割り込み関係のレジスタの設定がなされます。 ポイントは、スイッチのチャタリングをソフトウェアで吸収することです。 スイッチを押したり/離したりするときのバタつきが納まるまで10ms待ちます。さらに、押して... -
SDカードにFT245RL経由でようやく書き込みができました。
ロジアナで見たらFT245RLの信号が汚いのでAVRでやろうかと思ったけれど、これ以上SDカードに時間をかけるのも嫌と思って、FT245RLの制御をもうちょっと頑張ってみた。 まず、クロックが汚いので、ウェイトを入れることにした。time.sleep()の精度は4 msなんでしたっけ。クロックの変化の間に、4 msよりも小さいwaitをかけてみたら、6 msくらいの間が入っていい感じになった。綺麗になったクロックがこちら。 それで次の問題を探したら、どうもリセットコマンドCMD0の後に電源が落ちてるぽい。ので、リセットを二回...