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を触るときはちょいと注意ということで。
| 固定リンク
「トラブル遭遇」カテゴリの記事
- Arduino UNO R4、GPTのレジスタ定義にミス発見(2025.05.06)
- 失敗は成功の母<第3回>: 同じ型名なのに内部回路が違う!?(2025.04.16)
- 中華製ボール盤 2018年に交換したベルトが再びアウトに(2025.02.19)
- イヤホンのケーブルが・・・(2025.01.24)
- ピンセット、危うし!(2025.01.09)
「Arduino UNO R4」カテゴリの記事
- 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)
- Arduino UNO R4 minima 電源供給方法でクロックが変わる#5(2025.06.01)
コメント