【備忘録】CH32V003J4M6 PA2 AD変換できない対処について

備忘録的な記事になります。

CH32V003の8ピンパッケージのJ4M6品をいろいろなところで使っています。

ピン数に限りがあるのでいろいろ苦労する部分は多いのですが、最近3番ピンのPA2/OSCO/A0…ピンで起きた問題に対処しましたので、情報共有的に備忘録に残しておきます。

事の次第は、ADCの0chであるA0でAD変換をしたかったのですが、0chで変換できないという事態でした。他の汎用ピンと共用もされているA7/A5/A2などは、無事変換確認できたのですが、A0が何故か変換できません。

というか、Analog input設定しているにもかかわらず、パルス波形が該当ピンから出力されます。もちろんですが、以下の設定は繰り返し確認しています。

  • GPIO設定
  • GPIOクロック設定
  • PLL設定
  • ADCチャンネル設定

同じ設定でもA0で変換できません。

ADC関係の記事ではありませんが、同じような不具合に遭遇した記事をインターネットで見つけました。※助かりました。

当該記事は、汎用IOとして使えないという記事でしたが、同じような問題そうだったので読んでみると、原因は同じでした。

リンクの記事は、内部発振モードで使用しているにも外部発振の設定がなされてしまいPA1/PA2が汎用ピンとして使えないということです。

強制的に外部発振の設定にされているという事態でした。

問題設定は、AFIO_PCFR1レジスタにあります。

各ペリフェラルモジュールのピンと汎用ピンの共用ピンの機能の切替設定になっています。

15ビット目にPA12_RMの設定ビットがあります。

デフォルト設定では、汎用IOと共有機能側の0になっています。

因みに、1は、外部発振モード用のピンなので、OSCO設定になります。

確認のため、PA12_RMを読みだしてみると、見事に1になっています。

内部発振しか設定しているにもかかわらず、なぜこの設定が1になっているかです。

設定していないのになぜか1になっています。

前述の記事を参照すると、system_ch32v00x.c内での設定に問題があるそうです。

前述のリンク記事と同じ内容になってしまうのですが、、、。

詳しくは、前述のリンク記事にありますが、system_ch32v00x.c内では外部クロックモード設定になっていますが、外部発振回路を実装していないので、発振ロックせず処理がタイムアウトし外部クロックの設定が残ったまま設定が進行してしまうという顛末でした。

おやおや(´・_・`)

自分は、Arduino IDE環境で開発をしており、前述の記事は問題にならないと記述されておりますが、ツールはArduino IDEを使用はしておりますが、コードは非Arduinoで実装していますのでこの問題が生じました。WCHのMounRiver Studioの自動生成された初期化コードと同じ問題が生じると思います。

“#define SYSCLK_FREQ_48MHZ_HSI 48000000”を有効にしてあげれば解決できます。

季節の俳句


五月雨の晴れ間に出でて眺むれば青田涼しく風渡るなり

~良寛~

梅雨時期に思い出す、好きな俳句があります。

良寛の詠んだ梅雨時期の俳句です。

旧暦の五月なので、ちょうど梅雨時期の俳句ですね。

横浜に住んでいたころですが、この梅雨時期がとても嫌で嫌で、まったくうっとうしい毎日でした。

自分は、湿気が大の苦手なので、関東圏の梅雨時期は、除湿機をフル回転で乗り切っていました。

この梅雨時期の晴れの合間に、外に出てみたのでしょう。ちょうど田植えの終えた青田に清々しい少し冷たい風がそよいでいるという光景が広がりますね。

青森の梅雨は、関東圏の梅雨に比べれば梅雨では全くない快適な毎日です。

そもそも移動が車なので、電車やバス移動のための移動がないため、直接雨に打たれるということがないのもありますね。

湿度が80%を超えるような毎日に冷房がガンガン効いている電車に乗ると、窓が結露で曇ってしまい、電車が満員だったりすると最悪です。

メールフォーム更新

長年の懸念でして、メールフォームのTLS/SSL化のため、メールフォームにformzuを適用しました。

ご存じの通り、当医院のサーバーでは、TLS/SSL対応できておりません。

まぁ、いろいろあるんですよね。

常時SSL化は、やはりさらなる投資が必要で、無料プランもあるにはあるんですが、契約をしなおしたり、サーバーのデータの引っ越しなど、いわゆる面倒な作業が多いのです。

そのため、ホームページ内のメールフォームなどの送信データが暗号化されていなかったので通信データのスニッフィングの脅威がありました。

お問い合わせフォームをformzu様に委託することで、送信データが暗号化されます。今後は安心してメールをフォームをご利用いただけます。

デコ活

おデコを活用しようという運動ではありません。

当医院では、環境省が推進しております、デコ活に賛同しております。

ヤマト運輸の配送時の再配達の軽減など、皆さまにはご協力を強くお願いをしております。


※「デコ活」とは
 「脱炭素につながる新しい豊かな暮らしを創る国民運動」の愛称であり、二酸化炭素(CO₂)を減らす(DE)脱炭素(Decarbonization)と、環境に良いエコ(Eco)を含む”デコ”と活動・生活を組み合わせた新しい言葉です。

~環境省ホームページより~

当医院の利用ルールでは、返送時は、送料着払いでのみとさせていただいております。

ヤマト運輸では、クロネコメンバーズ限定にて置き配の指定ができるようになりましたので、送料元払いでの対応も利用者限定で承っております。

置き配が指定できるようになりましたので、デコ活の推進する再配達の抑制に寄与できるようになりました。

返送案内時に、置き配を利用するため送料元払いでとその旨の希望をお知らせください。送料を含めて見積もりをお出しします。

一旦、送料着払いで返送してしまうと、置き配の指定はできなくなりますので、くれぐれも申告忘れなきようご注意ください。

32.768kHz クリスタル

発振回路についての記事になります。

たまごっちなどおもちゃの制御ICの外付け発振回路に付いている32.768kHzのクリスタルをご存じかとは思います。

マイコンなどの製品開発の経験などあれば、基礎知識として発振回路やIC内部のPLL回路などでこれらクリスタルの役目や回路仕様も把握していなければなりません。

もちろんですが、おもちゃ修理に関しても必須事項です。

車載マイコンの設計や開発をしていました頃は、品質や信頼性などたいへん厳しい要件があり検証や評価をしていたころをよく思いだします。

外付けの発振回路は、それぞれの回路の応じた品質や信頼性の検証や評価の基で設計されます。

電源、温度、部品のバラつき、基板の誘電率などなど。

さて、話を32.768kHzのクリスタルに戻します。

当医院の記事でもよく登場しますが、時計など時を刻む場合、よく目にするシリンダー型の32.768kHzのクリスタルを目にします。

で、なぜ時を刻むのに32.768kHzのクリスタルなのか?

と思ったことありませんか?

マイコン設計やデジタル回路の設計経験があれば、既にご存じかと思いますが、それは、インプリが容易だからです。

実現しようとすれば、他のクリスタルでも時を刻むことはできますが、32.768kHzですと容易になります。

皆さん、分かりますか?

理工系の学生さんであれば宿題にすべきところですが、答えはカウンターなどで容易に実現できるからです。

32.768kHzって何Hzですか?

32.768kHz = 32768Hz

1秒に32768回振動します。

これって、いいかえると、32768回の振動で1秒とも言えます。

発振子が、計測開始から32768回振動した時が1秒であると言えることになります。

この32768回というのがみそです。

他の周波数であれば、それぞれの回数カウントすればいいのですが、この32768回は、1秒を2の15乗の分周比で実現できます。※電卓で2を押し、×を2度押して、=を繰り返し押してみてください。14回目で32768になるでしょ?

ん?分周ってなに?という方は工学系の教養の書籍などで調べてみてください。

デジタル回路のお話になってしまうのですが、2の4乗、すなわち16bitのカウンターなど多用します。Verilogなんかでは簡単に記述でき、合成でも問題なく論理合成もできます。

もう、今現在はそんなことはしていなさそうですが、私が現役のころは、VerilogでHDLを記述しDesign Compilerで合成など懐かしい言葉となります。

巷では、AIで論理合成/配置配線が一括でGDSまで吐いてくれるそうです。時代も進んでおりますね、、、。

EDAベンダーさんには、エンジニア時代の諸先輩方が多くおられたのですが、皆さんお元気でしょうか?

さて、話をカウンターに戻すと16bitのカウンターであれば、

10進の32768という値は、2進では、1000_0000_0000_0000と表現でき、つまり2の15乗であります。

刻々をカウンターをクリスタルの発振の立ち上げか立下りのエッジでインクリメントした場合、ちょうど15bit目のインクリメントで1秒を刻めます。

例えば、FF(フリフロ)で実現されたカウンターのCKinに印加したイメージです。

参考

モーターブラシの修理

プラレールなんかで多用されている、130型のモーターについてです。

そう、こういったやつです。

いろんなおもちゃの各所で使われており、稼働不良の原因も様々ですね。

そのような故障の中にグリス劣化や焼損や焦げの導通不良も多いかと思います。

ドクターの皆さまにおかれましては、いろいろが修理の方策を模索されておられるかと思いますが、そのような中の手段の一つに破損したブラシを修理するという方針について当医院での経験をご紹介します。

インターネットでブラシ修理を検索とすると以下のような記事があろうかと思います。

  • 接点復活剤を吹いてコキコキして復活するか診る。
  • 規定よりも高い電圧をかけてみる。
  • モーターを市販の同型モーターに交換する。
  • 破損したブラシのみを手持ちのブラシと交換する。
  • 破損したブラシをリン青銅板で自作し交換する。

などなどあります。

当医院もいろいろ修理を実施した経験で、基本はモーター自体を交換した方が予後がいいという結論に至りました。

もちろんですが、予算優先の制約もあろうかと思いますが、品質と信頼性を第一優先とした意見です。

というのも、まずは完全に焼損しブラシの先がなくなっていたり、摩耗が進みコミュテータとの接点部に穴が空いていたり、その影響でコミュテータにも削れ筋が2本できていたります。

この溝がとても厄介です。

細かいサンドペーパーで磨き筋をきれいに消せればなおよしですが、程度が酷い場合は、研磨で接点が剥がれてしまいます。

1.接点復活剤などを吹き付けてコキコキを繰り返してみる方法

その場しのぎですね。一時的には回復しますが、すぐ再発はするでしょう。

時間制約や緊急的な場合のみの手段となり、品質や信頼性を優先する場合は、選択肢にはなりません。

2.高い電圧をかけてみる

これは、恐らくですが故障の原因が、ブラシとコミュテータに塗布されたグリスが劣化し高抵抗な状態になっているか酸化膜が付いているところへ高電圧つまり高電流を流し一機に焦がし除去しようというものだろうと思います。

また、異物や劣化グリスの固着で回転抵抗があれば、そこに高い電圧でトルクを一気に上げて突入電流で初動させようというものかと思います。

初動さえできれば、回転で電極の接触も改善されるのだろうと思います。

ですが、例えば高抵抗の場合は、突入電流でブラシが焼損するリスクもあるので状況次第でしょうかね。

いづれにしても一時的処置で恒久対策ではありません。

3.同型の新品モーターに交換

元々付いていたモーターの仕様が不明のため、形がそっくりなモーターに交換せざるをえないかもしれません。

ただ、規定電圧や電流をオーバーした場合は、ブラシの焼損や異常加熱を招きます。

おもちゃの仕様を解析し交換しても大丈夫なモーターに交換しますが、次の問題にトルクが足りなかったります。

ラジコンやプラレールなどガシガシ動く動力部の場合は、だいたいトルク不足や速度不足がでます。

まぁ、目視でコイルの形状や導線の径、巻き数で一目瞭然で違いがあればそっくり交換は難しいでしょう。

4.破損したブラシのみを手持ちのブラシと交換する

コミュテータの溝の程度が軽度であれば、無事なブラシに交換できると思います。

ただ、交換用のブラシを別途用意できません。

ミニ四駆用などのカーボンブラシは、単体でマブチ製のモーターが買えてしまいます。

5.破損したブラシをリン青銅板で自作し交換する

インターネットで紹介されていたりしますね。0.1mmや0.2mmのリン青銅版で代替えのブラシを作成してもいいかもしれませんが、予後悪いことが多いです。

だいたい、コミュテータの深く削られた溝を残したまま、ブラシを作成してもこの溝が悪さします。回転中に段差に接触しモーターの回転が安定しません。

特に速度が不安定で振動で変化します。

固定部がグラグラだとこでも接触が不安定になるので、端子部は元々付いていた端子部を残し破損した先をカットして先だけ交換という手もあるかもしれません。

また、リン青銅版をV字で折りバネ性を上げておられるかと思いますが、流せる電流が制限されるため、前述の不安定な挙動の原因になっているようです。

もし、リン青銅版でブラシを作成し交換する場合は、かならず2本のブラシとも交換します。

というのも、片方のみ交換すると左右でコミュテータとの接触の差異が生じます。

自作ブラシで交換する場合は、2本とも交換です。また、コミュテータとの接点も突入電流を考慮しコミュテータとの接触部を大きく取れるようにする。

V字ですと、突入電流の1Aが一時的に流れたとしても接点面積が小さいため、焦げる可能性が出てきます。できるだけ、コミュテータに溝があれば研磨でフラット化しておくです。

U字に曲げて作成したブラシです。


ATtiny用 OSC CAL値 キャリブレーション 冶具

旧スタッフブログ記事からの転記となります。

今回は、ATtinyマイコン向けのOSCCAL値のキャリブレーション治具を紹介します。

おもちゃの修理やモノづくりの制御マイコンに8bit RISCアキーテクチャマイコンのATtiny13aやATtiny85を利用しています。

8ピンとIOは少ないのですが、GP-IOでのスイッチやドライバの制御やPWMも使えるので、重宝しています。SPIやUARTもソフトで実現すると、今回のような治具の制作もできます。

さて、通信販売ページの赤外線リモコン(ハピエスト リモコン)などを製作する際やUART通信を行いたい場合など、ライブラリで使用する内部タイマーの精度が必要です。

特に製造段階でキャリブレーション済みであろうOSCの値であっても、デフォルト値のままだとズレていたります。

実際の使用環境(内部発振か外部発振、周波数、電圧、周辺温度)に合わせてOSC値を計測しインプリします。

今回は、その最適値の計測治具とプログラムを紹介します。

開発環境:Arduino IDE(統合開発環境なので、コンパイラやエディタなど一式含む)

※先人様のおかげではあるのですが、統合開発環境なのでmakeファイルなども一式使わせていただけ、便利な世の中になりました。コンパイラ一つとっても、gccのバージョンなどいろいろありますからね。

内部 RC OSC

ATtiny13aデータシート P23参照 ブロック図でいうところの青枠なのですが、精度を求めるなら、外部に水晶発振器を付けるということになるのですが、部品点数の増加や基板のスペース的なところもあって、内部発振器の精度でよければ、外付け回路無しで構成できます。

精度仕様

マイコン開発業務に携わった経験があればご存じかもしれませんが、低価格帯マイコンの出荷選別にコストは掛けれませんので、この数値は設計保証もしくは抜き取り検査だろうと思います。

インターネットなどでATtinyやその他マイコンの紹介記事を参照すると、内部RC発振を校正(最適なOSCCAL値のチェック)する記事をいろいろ拝見します。

当医院でもブレッドボードで最適なOSCCALを確認しているのですが、ちゃんと基板に起こしておこうという紹介になります。前振り長くてすんません。^^;

要件は、以下のような感じです。

  • ユニバーサル基板でサクッと作れる。
  • 電源は、使用環境での最適値を探索するため外部安定化電源から供給。
  • OSCCALの調整は、プッシュスイッチで。
  • OSCCALの値は、UARTからシリアルでターミナルソフトで確認。
  • オシロスコープでクロックサイクルの波形を目視する。
  • ターゲットマイコンは、ATtiny13aとATtiny85。ATtiny2313もそのうち。

当初、OSCCALの変更は、UART経由でキーボードで打ち込もうかと思っていたのですが、そもそも最適値でない場合、通信が文字化けして分からないことや、OSCCALの変更は、周波数の2%を超えるなということでプッシュスイッチの押下で±1づつを調整することにしました。 コンセプトとしては、ネット上でよく拝見する内容とほぼ同じとなります。

UARTでの通信とVCC電源ですが、Arduino Pro Mini用のシリアルI/F基板があり、ちょうど3.3V/5Vの2種の供給とUSB越しにUART通信ができるので、そのまま挿して接続できるようにしました。

3.3V/5V以外は、外部から給電できりょうにVCC/GNDピンを設け切り替えスイッチで切り替えるようにしています。

さて、キャリブレーションについてですが、ATtiny85のようにクロックアウト機能を有している場合は、FUSEビットを書き換えるなりで外部ピンにシステムクロックを出力させOSCCALを増減させジッタなりを評価してやればいいのかもしれませんが、ATtiny13aのようにシステムクロックを直に評価できない場合の手段が必要になります。

自分の場合は、インラインアセンブラにて、1CPUサイクルで実行できる命令にてポートにパルスを出力させるようにしました。

仕様書のISAの当たりにある表(Instruction Set Summary)で確認し、手っ取り早く、OUT命令が、1サイクルで実行されるので、適当なレジスタをスタッキングし退避させ、”HI” → “LOW” → “HI”とトグルさせてています。そのパルス信号をオシロスコープで周期を確認するといった具合にしています。

例えば、ATtiny13aを内部RC発振の1.2MHzで使用するとすると、デフォルト内部RC発振で起動します。

デフォルト値でCKSEL[1:0] = 10で9.6MHzで発振しますが、Fuse bitのCKDIVが立っているので、9.6MHz設定を8逓倍で回した場合、9.6MHz / 8 = 1.2MHzとなります。

因みに、SUT[1:0] = 10なので、longest start-up timeだそうです。


まぁ、ここら辺の基本的なお作法は、マイコンを使用上での基本中の基本なのでね。


1.2MHzの周期は、1/1.2M = 833nsをカーソルなりで計測し目視します。 同時にTeraTermに表示されているOSCCALの値が、最適値になります。

ATtiny85用コード

ATtiny13a用コード ATtiny13a用は、Software Serialが使用できないため、ATtiny13a用のライブラリを利用します。ライブラリの一部を更新しております。2022.3.3 追記


なめたネジはずし 失敗する工具

当医院は、たまごっちの電池ボックスの蓋の潰れたネジの開封依頼を多くいただきます。

ご紹介の記事でも注意喚起しておりますが、市販のネジ開け剤やネジ開け工具は使用してはいけません。

状況を悪化させるだけで、ネジは外せません。

ネジあけ失敗

以前相談をいただいた方から提供頂いた画像です。

ネット通販で市販されている、なめたネジ外しなる工具を購入され潰れたネジの開封に挑戦されたそうです。

ご覧の通り、ネジの頭がごっそり削り取られなくなっております。

たまごっちのネジは、柔らかい鉄製のネジなので、この手の治具や工具では、開封どころかネジを削るだけとなります。

もちろんですが、このような事態では当医院でも開封は難しいです。

再度のお願いになりますが、何も手を付けないでご相談をください。

ネジ頭の折れたたまごっちネジ穴の再建

折れたネジ

当医院は、初代型のたまごっちの修理を多くいただきます。

経年でネジが弱くなりネジを開けようとしただけで、なべネジの頭部分が折れてしまうことが多いです。

経年では、てんしっちのたまごっちとデビルっちのたまごっちで多く発生します。

最近では、こちらこちらの修理記事で現象を紹介しております。

ボタン電池の抑え蓋を固定するだけでいいので、これでもか!

という位強く締める必要はないのですが、経年で筐体に強固に食い込みその強さに負けて折れてしまうのでしょう。

さて、折れてしまったネジを交換できればいいのですが、頭が取れてしまっているので、ネジの残骸はもうどうしようありません。

当医院のアプローチとしては、筐体裏面からルーターでネジ穴を削り埋没しているネジを露出させます。

裏面

ルーターで慎重にネジを露出させます。

ネジ露出

ネジを露出させても、案外ネジ先は出ていませんが、出ているネジの残骸の先を摘まんで抜き取ります。

間違っても逆に戻してはイケません。

本体内部側に抜けるように摘まんで回転させます。

自分は、精密ニッパーを使用しているのですが、力を入れ過ぎるとネジをカットしてしまい、終わりの世界になります。

慎重に作業してください。

残骸除去
ネジ除去

リセットボタンの穴の一部もネジを除去するために削る必要がありますので、ネジ穴の再建と一緒にリセットボタンの穴も再建します。

再建は、正規のたまごっちのネジを蓋をした状態でねじ込み先の出た箇所にプラリペアを盛って固めてしまいます。

注意点としては、圧電素子の縁が直ぐ横にあるので、圧電素子の縁にマスキングしておき、はみ出たプラリペア材を後で取り除けるようにしておきます。

こんな感じです。

マスキング

プラリペアも粉を先に盛っておき、溶剤のリキッドを後で流し込む方法で行います。

マスキングした縁も固まっているので、カッターなどで縁に沿って切り込みを入れて剥がします。

ネジ穴再建

リセットボタンの穴も再建できました。

もちろんですが、ネジ穴の強度は、元々に比べ弱くなっております。

再建成功

先の修理記事では、そっくり換装できる部品取り機があったので、筐体を換装できましたが、換装ができる在庫が無い場合がほとんどですので、その際の補修方法としたいと思います。

4.3インチ タッチパネル付き液晶の互換性について 続編

2022.11.15 4.3インチ タッチパネル付き液晶の互換性について 続編

先日、スタッフブログに4.3インチのタッチパネル付き液晶の玩具間での互換性について記事をアップしました。こちらを参照

内容の主眼は、4.3インチのタッチパネルが使用されている知育玩具間でタッチパネルを流用できるかどうかというポイントでした。

今回の記事は、流用ではなく新品のタッチパネルが使用できるかどうかという記事となります。

先のスタッフブログ内でも新品の4.3インチのタッチパネルは、aitendo様の通販より入手可能と記載しました。搭載実績も稼働実績もあるので安心なのですが、如何せん購入価格が高額です。

そこで、とある海外の通販でより安く入手した4.3インチのタッチパネルが使用できるかどうかを検証してみました。

左:割れた液晶、右:新品の液晶

実は、11月11日のセール期間中でもあったので、別のパーツを購入するついてでに、4.3インチのタッチパネル付き液晶をまとめ買いしてしまいました。

今回のセール期間中でしたので、価格もお安く、2000円ほどで入手できました。

ただし、サイズや規格が一緒でも使えるのかどうかは別の話です。

まず、入手した液晶を見てみます。

比較したので、マジカルスマートノートの液晶です。

横サイズ
縦サイズ
見た目

通販サイトの説明では、インチサイズとケーブルの画像したなく、その他の情報としては、製品の型番ぐらいです。

後の祭りではあるのですが、ここで失敗をしました。

通販サイトでも、ご利用するつもりの機器で使用できるかどうかは、ご自身で確認してください。万一使用できなくても責任は持ちませんと明記されています。

自分も購入前に使えなくても流用検討用に購入したものなので、勉強代としてとらえておりました。

ですが、実際にマジカルスマートノートに装着すると、えらい事態になります。

紫っぽい色味

この画像を見てください。全体的に紫っぽい色味です。

しかも、明るさも暗いのです。 正常な場合は、このようになります。

正常な色味

少し斜めから除き込むと色味が正常に近づいたりします。

タッチ機能は問題ありません。

調べてみると、視野角と明るさにも規格が違うようで、その規格はさすがに記載もなく購入しておりました。

考えてみれば、タッチパネル液晶の使い道で実装される機器も千差万別なので、それに見合った使用のタッチパネルを購入するべきでした。

ですが、安く入手しようとすると、それ相応のリスクがあるので、今回はよい勉強になりました。

結論としては、視野角や明るさの規格を事前に把握できない場合は、今回のような事態になりうるということです。

安いからといっても、安易に装着はできませんね。