1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi Pico zero(Waveshare)でpinMode(GPIO29, output)をシカとされた

1
Posted at

Raspberry Pi Pico zero(Waveshare)を使ってArduinoでR909-testerと言うプロジェクトやってます。コンデンサに100kΩで充電して0.64までの時定数から容量を算出するという教科書スタイルです。充電する前に放電させないといけないので、ADCで使うGPIO29を一旦、pinMode(GPIO29, output)としたが、シカとされました。

お話をまとめると次になります。
1.【やりたかったこと】
Pico(RP2040)で、ピン1本をデジタル出力(放電)とアナログ入力(測定)でダイナミックに切り替えて、コンデンサの充放電(時定数)を測ろうとした。

2.【直面した謎のバグ】
ピンを切り替えているはずなのに、オシロで見ると上りも下りも綺麗なCRカーブのままで、放電制御が全く効いていない(オープン状態になっている)。ピンを28や29に変えても同じ。

3.【原因の特定】
ArduinoのPico用コアライブラリの仕様(罠)により、一度 analogRead() を呼ぶとピンがアナログモードに拉致・固定され、以降の pinMode(OUTPUT) が裏でスルーされてしまうためらしいと判明。

4.【じじ研的・解決策(オチ)】
「ソフトがダメならハードで直せ!」ということで、制御用のGPIO14に向けてダイオードを1本追加。GPIO14をLOWにすることで物理的に電荷をぶち抜く回路に変更し、見事解決!

回路図R909-tester._SCM.jpg

R909-testerと言うプロジェクトはHackadayにポストしてます。
R909-Tester: A Modular RP2040 zero Instrument
https://hackaday.io/project/206070-r909-tester-a-modular-rp2040-zero-instrument
はてなブログ
https://nobcha23.hatenablog.com/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?