« 基板ショート・チェッカ、役に立つ | トップページ | ラズピコのPWM。 なんかおかしいような »

2023年2月14日 (火)

ありゃま。ラズピコがおかしくなった。 PWMを調べたかったのに

ラジオペンチさんからのコメント(2023年2月12日13時09分)
件の記事(2023年3月号p.155)を読んで、図8の
ラズパイpicoの疑似DAC特性」が気になったので
ごそごそしていました。

で、昨夕は手持ちのラズピコにちゃんとスケッチを書き込
めたんですが(Arduino IDE環境)、今朝、ゴソゴソしたら
エラーが出てしまって書き込めません。
昨夕、最後に書いた、シリアル入力値でPWMを設定するという
スケッチは動いていてUSBを通してのシリアル送受はできてい
るのです。
ところが、スケッチのアップロードは失敗。
BOOT SWを押しながらUSBコネクタを挿しても、普通なら現れる
はずのドライブが出てきません。
どこか何かがおかしくなったようです。

Arduino UNOのPWMは、
Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMを使おう
で記してますように、「途中で1/256狂って」います。

で、ピコのPWMにも違和感。
記事には最大1.4mV未満と測定結果が記されますが、
PWMによるDAC、少々リップルが乗ってもこんな
誤差は生じないはずです。
Bb10_20230214160301

3.3V/255で1bit変化で12.9mV。 (あえて1/255で表記)
10%ほどがプラスに積み重なって、128あたりで最大に
なってます。
8bitのPWMそのものに何かがあるんじゃないかと感じました。

2020年11月12日:Arduino UNOでデューティー比測定回路 ケースに入れて完成

Bb11_20230214160301
    PWM=128にした時のデューティ、周波数と
   H区間クロック数、L区間、計測クロック(MHz)

これで、ピコが出すPWM波のディーティを調べてみようとした
のです。
とりあえず手入力した0~255の値でPWMを設定という
スケッチ、これは昨夕にピコに書けたのですが、
今朝になってこれを更新しようとしたらアウトっとい
う状態になってしまったのです。

で、1~254の値を手入力してちょっと調べてみました。
ピコもUNOと同じように、設定値0で出力L固定、255でH固定
となっています。

ピコでの1~4までのH区間とL区間を見てみます。
デューティチェッカーのクロックは16MHz。
PWM H  L
 1  96 31937
 2 224 31809
 3 352 31681
 4 480 31553

1と2、2と3、3と4の差は128クロック。
つまり125kHz=8μs。
しかし、1のH区間が96で6μsしかありません。
  オシロでも確認したんで、デューティ比チェッカの
  ミスじゃありません。

L区間がちょこっと出る253と254はこんな値。
PWM  H   L
 253 31777 256
 254 31905 128

これで、1~254の端っこを見たわけですが、1の時の
96を考慮したら、253の時のはH区間は「32352」に
なって欲しいところ。
  252 * 128 + 96=32352
ところが31777。 なんか小さい。
254も「32480」が妥当じゃないのかと。

  ※ピコのスケッチを、手入力じゃなく自動で順にPWM値を
   変化させて、デューティ比をチェックできればと
   考えたのですが、アップロードできなくなってし
   まったのです。

どこかでおかしくなっているようなのですが、手での
入力と目で見ての確認はちょっとつらい。
気を取り直して、まず1に近いところから順におかしく
なっている場所を探してみました。

すると12~16でこんな変化が。
PWM 期待値 実値H 実値L
 12 1504 1504  30529
 13 1632 1632  30400
 14 1760 1728  30305
 15 1888 1856  30177

実値Hの13と14の間が「96」になってます。
そして、14と15の間は「128」に復帰。

ピコのPWM、何かが潜んでいそうですぞ。
   ※単調性がどこかで狂ってる?

しかし、ピコへのスケッチ書き込み失敗、困りました。
なんとかしなくちゃ。

デューティ比チェッカ、自動記録用にシリアル出力が
いりますなぁ。

|

« 基板ショート・チェッカ、役に立つ | トップページ | ラズピコのPWM。 なんかおかしいような »

重箱の隅」カテゴリの記事

ラズパイ・ピコ」カテゴリの記事

1023 vs 1024」カテゴリの記事

トランジスタ技術」カテゴリの記事

コメント

うちのラズピコで digitaWrite(26, n); とやって、nを変えた時のパルス幅をユニバーサルカウンタで測定してみました。当たり前ですが同じ結果が出てます。
ちなみにパルスの周期は2000usで、
nが1-4のパルス幅は、6, 14, 22, 30us
12-15は、94, 102, 108, 116us
253-254は、1986, 1994us
でした。(末尾は丸めています)
なお、そのトラ技の記事には突っ込みどころがいっぱいあるのですが、本屋で立ち読みしただけの卑しい身分の者ゆえ、大人しくしてます。

投稿: ラジオペンチ | 2023年2月15日 (水) 08時56分

追試、ありがとうございます。
ラズピコのPWM、1/256でも1/255でもなく1/250にしてるの?っと思ったりしてます。
まずはPWMしてるソースから追跡でしょうね。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2023年2月15日 (水) 12時12分

テストのスケッチを書いてごそごそ。
http://igarage.cocolog-nifty.com/blog/2023/02/post-0d41cf.html
ピコのPWM、なんかへん。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2023年2月16日 (木) 14時48分

コメントを書く



(ウェブ上には掲載しません)




« 基板ショート・チェッカ、役に立つ | トップページ | ラズピコのPWM。 なんかおかしいような »