MC9S08SH4 のギャング出力でPWMは使えるか? [HCS08]
MC9S08SH4 でギャング出力の実験では、ギャング出力でLEDを点灯させました。 LEDの明るさがPWMで変えられたら、きっとうれしいよね。
ギャング出力の制御
MC9S08SH8のデータシートでは、ギャング出力は汎用入出力ポートの一機能として記述されています。
- すべてのポートは、出力設定になる
- すべてのポートは、PTCD0の値を出力する
- すべてのポートは、PTCDS0に従って強さが決定される
- すべてのポートは、PTCSE0に従ってスルーレートが決定される
これらは、すべて汎用ポートとしての動作の説明です。 PTC0には、TPM1CH0もつながっているのでPWM出力が出るかも知れないと思い確認してみました。
ギャング出力は、PWM制御できない
実験の結果、ギャング出力は、PWMでは制御できないことがわかりました。 つまり、PWMを使いたければ、ソフトウェアで何とかしなくちゃいけません。 これでは、ギャング出力をハードウェアで実装した意味が薄れていませんか?
ギャング出力をソフトウェアで制御しなくてはならないので、短い周期のPWMを実現することはできなくなりました。 たとえば、DC-DCコンバータを作ろうとした場合、周期を長くしなくてはならないので、必然的にインダクタンスを大きくしなくてはならないので、コイルも大きくなります。 さらに、あまりPWMパルスの周波数を下げると、可聴周波数に達するのでコイルが鳴くことが予想されます。 こりゃ、困ったね。
GNGCレジスタが何度も変更できる?
今回の実験には、おなじみの ProcessorExpert を使用しました。 よくできたもので、 ProcessorExpert では、リセット直後に GNGC を設定するようになっています。 これなら、安全のため一回しか書き込めないようになっているGNGCレジスタを確実に設定できます。
ところが、ところが、そうとは知らない私は、 main() に GNGC レジスタを書き換えるコードを書いてしまったのでした。 でも、動いてるよ? 何で?
実は、初版の MC9S08SH4/8 には、「GNGCレジスタが複数回書き込める」というエラッタが存在しましたが、このエラッタは第2版では消えていました。 私が取り寄せた MC9S08SH4 は、 2M84G のマーキングがあるので、当然、このエラッタは解決済みと思っていましたが、解決されていなかったのかな? ちょっと、問い合わせてみるか。
参考文献
- MC9S08SH8
- MC9S08SH8のデータシートです。 なんと、すでに第3版になっているそうです。
- MSE9S08SH8_0M84G
- 初版(第0版)MCUのエラッタ(既知の問題点)リストです。 ここには、GNCGレジスタが複数回変更できるという問題が記述されています。
- MSE9S08SH8_2M84G
- 第2版MCUのエラッタ(既知の問題点)リストです。 ここには、GNCGレジスタの問題が記述されていないので、解決したかと思ったのですが。
関連文献
HCS08 Unleashed: Designer's Guide to the HCS08 Microcontrollers
- 作者: Fabio Pereira
- 出版社/メーカー: Booksurge Llc
- 発売日: 2007/11/13
- メディア: ペーパーバック
コメント 0