AT SAMの部屋(17) XiaoでもGo!TCCインプットキャプチャへの遠い道のり

EVSYS_Route
Joseph Halfmoon

ATSAMD21のタイマ・カウンタ機能、インプット・キャプチャとか周波数計測などに触ってみるために、今回からイベントというものを調べていきたいと思います。いつも泥縄、ソースを書きながらデータシートを眺めているので、今回は先にデータシートを読んでみた編。でも端子からタイマ・カウンタまでのイベントの経路の長さ。。。

“AT SAMの部屋(17) XiaoでもGo!TCCインプットキャプチャへの遠い道のり” の続きを読む

AT SAMの部屋(16) XiaoでもGo!RTCの歩度調整機能の補足

Joseph Halfmoon

前回、TinyGoのATSAMD21上でのRTC設定についてホンワカしたことを書いてしまったので今回は図入りで補足させていただきます。また、RTC内蔵の「デジタル歩度調整機能」の制限(なぜTinyGoの使い方とは両立しないか)についても述べさせていただきます。結局時計にしたければアナログ歩度調整してからなのよ。。。

“AT SAMの部屋(16) XiaoでもGo!RTCの歩度調整機能の補足” の続きを読む

AT SAMの部屋(15) XiaoでもGo! TinyGoのRTC設定状況と周波数補正

Result
Joseph Halfmoon

TinyGoを使ってATSAMD21マイコンの周辺回路を制御しています。前から気になっていたのがRTCです。TinyGoのデフォルトを調べていると動いているっぽいです。この際調べておこうと。その過程でこのMCUにはRTCの精度をあげられる仕組みがあることに気づきました。TinyGoは使ってないみたいですが。

“AT SAMの部屋(15) XiaoでもGo! TinyGoのRTC設定状況と周波数補正” の続きを読む

AT SAMの部屋(14) XiaoでもGo!machine.TCC1使用、PWM出力

PWM_WAVEFORM
Joseph Halfmoon

Go言語でMCUのコードを生成できるTinyGoでATSAMD21マイコンの周辺回路を勉強しております。前回までunsafeなポインタを使って直接アクセスする不作法をしてました。今回は machine モジュールを使ってTCC1からPWM波形を出力してみます。制御は簡単なのですが、データシートを読むのがメンドイ。

“AT SAMの部屋(14) XiaoでもGo!machine.TCC1使用、PWM出力” の続きを読む

AT SAMの部屋(13) XiaoでもGo!XOSC32K、32Kクリスタルの発振ON

WaveFormXOSC32
Joseph Halfmoon

前回ATSAMD21G18の内蔵OSCの出力を空いているクロックジェネレータを経由して外部端子に出力してみました。そのとき気になったのは「Xiaoボード、外付け32Kの振動子積んでたよね、使ってないの?」という件。今回はお休みしていたらしいXTALに活を入れて起動し、前回同様の方法で周波数を確認してみます。使えるの?

“AT SAMの部屋(13) XiaoでもGo!XOSC32K、32Kクリスタルの発振ON” の続きを読む

AT SAMの部屋(12) XiaoでもGo!内蔵OSCクロックをポート出力して周波数測定

OSC_CLK2Port
Joseph Halfmoon

TinyGoを使ってArm Cortex-M0+コア搭載Microchip社ATSAMD21マイコンの周辺回路を探っております。前回9本あるクロックジェネレータのうち5本が空いてることに気づきました。今回はそのうちの2本を使って、内蔵のオシレータのクロック信号を外部に出力しオシロで周波数を測定してみました。

“AT SAMの部屋(12) XiaoでもGo!内蔵OSCクロックをポート出力して周波数測定” の続きを読む

AT SAMの部屋(11) XiaoでもGo!GCLK、全ジェネレータの使用状況

GENCTRL_DUMP
Joseph Halfmoon

Go言語でMCU向けのオブジェクトを生成できるTinyGoを使って Arm Cortex-M0+コア搭載、Microchip社ATSAMD21マイコンの周辺回路を探っております。前回は各クロック分配の様子を前々回はオシレータの設定を確かめました。今回はその2つの間クロックジェネレータGCLKを見てまいりとうございます。

“AT SAMの部屋(11) XiaoでもGo!GCLK、全ジェネレータの使用状況” の続きを読む

AT SAMの部屋(10) XiaoでもGo! GCLK.CLKCTRLレジスタを全ダンプ

results
Joseph Halfmoon

Go言語でMCU向けのプログラムが書けるTinyGoを使ってみています。前回は発振器まわりの制御レジスタを直接読んでみました。今回はクロックジェネレータ関係を調べようと思ったのですが1点障害あり、unsafeなモジュールなどにご登場いただいてしまいました。厳格なようでいてそんな操作もできるTinyGoはMCU向き?

“AT SAMの部屋(10) XiaoでもGo! GCLK.CLKCTRLレジスタを全ダンプ” の続きを読む

AT SAMの部屋(9) XiaoでもGo!TinyGoでレジスタ直接アクセス、大丈夫か?

SYSCTRL_DUMP
Joseph Halfmoon

Go言語でMCU向けのオブジェクトを生成できるTinyGoは便利です。テキトーに書けば「動いてしまう」のでとってもお楽。しかし古色蒼然たる「ベアメタル派」としてはMCUがどんな設定で動いているのだか知らないと気持ちが悪いです。それに後で周辺回路を直接制御もしたいです。今回はMCUの根っこ、発振回りの設定を確認。

“AT SAMの部屋(9) XiaoでもGo!TinyGoでレジスタ直接アクセス、大丈夫か?” の続きを読む

AT SAMの部屋(8) XiaoでもGo!TinyGoでSPI、27LC512接続

xiao23LC512_EC
Joseph Halfmoon

第5回でTinyGoでI2Cを制御、今回はSPIを制御してみます。接続するのは米MicroChip社製の23LC512 SPI Serial SRAMです。メモリを相手にSPIの読み書きを確認する目論見。Xiao搭載のSAMD21G18は32KバイトRAM、もし一時保存領域が足らないような場合には利用するのもありか。

“AT SAMの部屋(8) XiaoでもGo!TinyGoでSPI、27LC512接続” の続きを読む

AT SAMの部屋(7) XiaoでもGo!TinyGoでポーリング、結果はChannelへ

pollingApin
Joseph Halfmoon

前回端子からの割り込みやってしまいました。普通は先にポーリングだったかなあ、ということで今回は端子のポーリングしてみます。ポーリングはGoroutineにお任せして、結果はchannelで受け取ると。ついでに無関係なLEDもチカチカさせたりして並行に処理している雰囲気をだすってもんかと。ありがち?

“AT SAMの部屋(7) XiaoでもGo!TinyGoでポーリング、結果はChannelへ” の続きを読む

AT SAMの部屋(6) XiaoでもGo! TinyGoでタクトスイッチからの割り込み受け

XiaoDUT_schematicA
Joseph Halfmoon

Go言語プログラムをマイコンで走らせることができるTinyGoの練習台にSeeduino Xiaoを使っております。Xiaoだろうと他のボードだろうと、ArmだろうとRISC-Vだろうと、似たようなソースで似たようなことができる気がします。ハードが異なる部分は要対応ですが。今回はスイッチからの割り込みを受けてみます。

“AT SAMの部屋(6) XiaoでもGo! TinyGoでタクトスイッチからの割り込み受け” の続きを読む

AT SAMの部屋(5) XiaoでもGo!秋月AQM1602をTinyGoで制御してみる

XiaoGoAQM1602
Joseph Halfmoon

Go言語で書いたプログラムをMCU上で走らせることができるTinyGoは、多くのマイコンボードをサポートしているだけでなく、定番の周辺デバイスも多数サポートしています。直接デバイスとしてのサポートが無くても、I2CやSPIといった標準インタフェースをサポートしてくれているので楽。今回は秋月製の定番LCDを接続。 “AT SAMの部屋(5) XiaoでもGo!秋月AQM1602をTinyGoで制御してみる” の続きを読む

AT SAMの部屋(4) XiaoでもGo!Goroutineで並行処理、どこまでいけそう?

XiaoGoroutineEC
Joseph Halfmoon

Go言語で組み込みマイコンをプログラムできることを学んだのでGoしてます。マイブームってやつです。さて、Go言語には Goroutine という「簡易的な」並行処理の仕組みがあります。他の言語にもある Coroutine のGo版かと。時間シビアな目的には適さないような気もしますが、どのくらいな感じなの?

“AT SAMの部屋(4) XiaoでもGo!Goroutineで並行処理、どこまでいけそう?” の続きを読む