Arduino UNO R4、GPTのレジスタ定義にミス発見
汎用PWMタイマのプリスケーラ設定、これが言うことを
聞かないので、追いかけてみました。
・きっかけは先日の1MHz方形波出力。
・それを100Hzにしたかった。
・ハードウェアマニュアルにはこんな表。
・タイマプリスケーラをPCLKD/16にすると、
48MHz/16で3MHzクロックに。
これを1/15000して200Hzにして、さらに
トグル出力で100Hzに。
こんな目論見。
・しかし出てきたのは400Hz。
なぜ???
そこで、レジスタ定義ファイルを調べてみたら
__IOM uint32_t GTCR; /*!< General PWM Timer Control Register */
struct
{
__IOM uint32_t CST : 1; /*!< [0..0] Count Start */
uint32_t : 15;
__IOM uint32_t MD : 3; /*!< [18..16] Mode Select */
uint32_t : 4;
★ __IOM uint32_t TPCS : 4; /*!< [26..23] Timer Prescaler Select */
uint32_t : 5;
} GTCR_b;
「TPCS」が4bitになってました。
ほんとは3bit。
ということは、
0b0000 1/1 これはok
0b0010 1/4
0b0100 1/16
0b0110 1/64
0b1010 1/256
0b1010 1/1024
こんな具合にLSBに1bitの0を足して4bitにしなく
ちゃなりません。
GPTを触るときはちょいと注意ということで。
| 固定リンク
「トラブル遭遇」カテゴリの記事
- MADE IN USAでも信じるな!(ミノムシクリップの話)(2025.11.11)
- 8文字×2行のI2C液晶表示器に注意(2025.10.21)
- ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい(2025.10.06)
- ガレージの「フライヤ」をつないでいた延長コードが(2025.10.02)
- リコーGX200でもAWB異常が出現(2025.09.16)
「Arduino UNO R4」カテゴリの記事
- Arduino UNO R4の割り込み処理・・・まだまだ勉強不足(2025.06.26)
- Arduino UNO R4 minimaに12MHz水晶を(2025.06.09)
- Arduino UNO R4で2つの1Hz信号の位相変化を見る(2025.06.06)
- UNO R4はanalogWrite(n,128)でデュティー50%の方形波が出るぞ(2025.06.03)
- Arduino UNO R4 minima 電源供給方法でクロックが変わる#6(2025.06.02)


コメント