JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

ATtiny402 I2C LCD1602表示テスト

2023-08-02 16:20:54 | ATtiny
 ATtiny402でI2C LCD1602の表示テストをします。

 ATtiny402で、I2C関係のピンは、下の図のように
 4番ピン(PA1)がSDAで
 5番ピン(PA2)がSCLです。


 回路図です。
 プログラミングと電源供給には、FT-234を使います。
 I2Cのプルアップ抵抗は、I2C LCD1602モジュールに内蔵されていますので、つけていません。


 Arduino IDEのライブラリマネージャを開き、LiquidCrystal I2Cというライブラリをインストールします。


 スケッチです。

 フラッシュメモリの42%を使っています。

 ブレッドボードです。
 「Hello World」が表示されました。


ATtiny402 PWMテスト

2023-07-29 22:21:50 | ATtiny
 ATtiny402のPWMのテストをします。

 ATtiny402のPWMは4チャンネルあり、下の図ように各ポートに出力することができます。



ピン ポート PWM
 3  PA7  PWM1
 4  PA1  PWM2
 5  PA2  PWM3
 7  PA3  PWM4

 まず、PWM1にデューティ比50%のPWMを出力してみます。スケッチです。


 クロック16MHzの時のPWMの周波数です。972Hzでした。



 クロック20MHzの時のPWMの周波数です。1213Hzでした。



 この時のPWMの波形です。

 次に、4チャンネル全てを使ってLEDを点滅させてみます。
 LEDは手持ちの赤、青、橙、緑を使いました。回路図です。



 スケッチです。


 ブレッドボードです。(ピンぼけで、失礼)
 右から順にゆっくり点滅を繰り返します。



ATtiny402シリアル通信テスト

2023-07-26 11:49:56 | ATtiny
 ATtiny402の通信テストをします。

 ボードの設定などは、Lチカの時と同じです。プログラム(スケッチ)の書き込み方法もLチカと同じです。パソコンとの接続(通信)にはFT234を使います。記事はこちら

 ちょっと面倒ですが、プログラムの書き込みが終わったら下の図のように配線をし直してシリアル通信テストをします。


 まず、ATtiny402から「Hello World!」を送信して、Arduino IDEのシリアルモニタで受信してみます。スケッチです。0.5secごとに「Hello World!」を送ってLEDを点滅させます。通信速度は9600bpsとしました。



 ブレッドボードです。


 シリアルモニタに「Hello World!」が表示されました。


 次に、シリアルモニタとの通信をテストします。スケッチです。


 LEDは、0.05secごとに点滅しています。シリアルモニタから文字を受信すると直ぐにその文字を送り返します。

 シリアルモニタです。送った文字が表示されました。


USBシリアル変換器でATtiny402への書き込み

2023-07-23 12:02:47 | ATtiny
 前の記事のようにArduino IDEを使いArduino UNOを書き込みとしてATtiny402にスケッチを書き込むことができました。

 今回は、Arduinoを使わないで、USBシリアル変換器を使った書き込みテストをしてみます。

 Arduino IDEにmegaTinyCore をインストールします。方法については、こちらの記事を見てください。
 「ツール」→「ボード」から「megaTinyCore」「ATtiny412/402/212/202」を選びます。

 接続回路図です。(Lチカの回路もつけてあります)
 USBシリアル変換器は、最も簡潔なFT-234(秋月電子のモジュールです)を使いました。ショットキバリアダイオードは、BAT43を使いました。



 Arduino IDEの「ツール」開き、UPDI関係の設定をします。



 ボードは ATtiny412/402/212/202
 Chipは ATtiny402
 Clockは 16MHzとしました。(3.3V動作を考慮して)
 書き込み装置は、まず低速の SerialUPDI-SLOW;57600baud
 としました。(他の設定はデフォルトのまま)

 Lチカのスケッチを書き込んでみました。(Arduino IDEは1.8.19を使っています)


 Action took 0.18sと表示されました。

 ブレッドボードです。無事にLEDが点滅しました。


 ブートローダを書き込まず、いきなりArduino IDEからATtiny402に書き込んだのですが、問題なくLチカができました。

 書き込み装置としてSerialUPDI-230400 baudを選ぶと書き込み時間は、0.11s、460800 baudを選んだ時0.09sでした。

 メモリが少ないので、ブートローダが不要なのは助かります。
 今後のATtinyの各種テストは、この形で行いたいと思います。


ATtiny402 ArduinoでLチカまで

2023-07-18 22:33:55 | ATtiny
 ATtinyにプログラムを書き込む方法は、Arduinoを使う方法とUSBシリアル変換器を使う方法があるようです。まず、Arduinoを使う方法を試します。

 Arduino IDEからATtinyへの書き込みは、下の図のようにUSBシリアル変換を通してUPDI(Unified Program and Debug Interface)で行います。
 今回は、ArduinoをUSBシリアル変換器として使うわけです。



 Arduino IDEは1.8.15を使いました。(最新バージョン2.1.1では、最終段階でエラーが出てしまいました。原因はわかりません)

 まず、Arduino IDEでATtinyを使えるようにするためにGitHubのSpenceKonde/megaTinyCore というページを開きます。下の方にスクロールしていき、Installationをクリックします。ここに記載してあるmegaTinyCoreのboaed managerがある場所のURL
http://drazzy.com/package_drazzy.com_index.json 
をコピーします。(GitHubに行かなくても、上のURLをコピーして使えばOKです)

 これをArduino IDEで「ファイル」→「環境設定」で基本設定のダイアログを開き、「追加のボードマネージャーのURL」に貼り付け、「OK」をクリックします。



 次に、「ツール」→「ボードマネージャー」でボードマネージャーを開きます。下にスクロールすると「megaTinyCore」が見えますのでインストールします。(少し時間がかかります)



 これで一旦IDEを閉じ、再び立ち上げます。「ツール」→「ボード」を見ると「megaTinyCore」というボードが追加されていて、「ATtiny412/402/212/202」が選べるようになりました。

 続いて、ArduinoをUPDIの書き込み器にするためのファームウェアを準備します。
 GitHubのSpenceKonde/jtag2updi というページを開き、jtag2updi-master.zipをダウンロードします。(緑色のCodeをクリックし、次にDownload ZIPをクリックします。)
 ダウンロードしたファイルを解凍し出来た「jtag2updi-masuterr」というフォルダーの名前を「jtag2updi」にリネームしてドキュメントArduinoフォルダに保存します。

 ここで、Arduino IDEでArduino UNOに書き込む準備をして(ボードをArduino UNOに設定し、)jtag2updiフォルダ内のjtag2updi.inoというスケッチを開き、Arduino UNOに書き込みます。(jtag2updi,inoには何も書かれていませんが、他の部分に書かれているので大丈夫です)



 Arduino UNOに書き込みが終わるとArduino UNOがUPDIの書き込み器になりました。

 次に、ATtiny402にブートローダを書き込みます。Arduino UNOとATtiny402の間はUPDIインターフェースで次のように配線します。
 Arduino UNO         ATtiny402
   5V                   VCC(1pin)
   GND               GND(8pin)
   D6  -- 4.7kΩ--  UPDI(6pin)
 回路図です。(LチカのためのLEDがついています)



 「ツール」をクリックし、開いた下のダイアログで、ChipsでATtiny402を選び、書き込み装置はjtag2updiを指定して、「ブートローダーを書き込む」をクリックします。


 ブートローダの書き込みが終われば、Arduino IDEからATtinyボードのにスケッチを書き込むことができます。

 LチカのスケッチをArduino IDEからATtiny402に書き込んでみます。
 下の図は、ATtinyの各ピンの機能の説明です。
 デジタルIO(GPIO) 2につけたLEDを点滅させてみます。


 スケッチです。


 書き込みが終わると赤い文字でエラーメッセージがでますが、これは無視してよいようです。
 ブレッドボードです。無事LEDが1秒ごとに点滅しました。


 これまでの手順は、こちらのサイトを参考にさせていただきました。ありがとうございました。

 次は、USBシリアル変換器を使った書き込みをやってみようと思います。