趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
とりあえずス口コソ試作版が完成したので、ほぼ同じ回路で作り直したところ、なんと、まったく動かない(動作開始後すぐにハングする)。。。。
どう見直しても、回路には問題がない。それにもかかわらず、動かない。。。。
年末より原因を調査していて、年明けてようやく原因が見つかった。
原因は、
「PICマイコンのバグ」
バグというと、不具合のように聞こえるが、まぁ確かに不具合といえば不具合なのだが、PICというマイコンは不具合のあることが前提で出荷されていて、不具合はErrataとして回避方法が公開されている。
今回遭遇した不具合はA/D変換の不具合で、回避方法は8MHz以下で動作させること、となっている。しかしこのス口コソは、一部掛け算のロジックを使っていて、32MHzじゃないと満足に動作しなかったりする。
さて、困った。。。
ここで気になるのが、10月に買ったマイコンだと問題が起きなくて、12月に買ったマイコンだと問題が起きたということ。12月に買ったマイコンのほうが古いのかも?と思って調べてみた。
PICのマイコンには、7桁のなぞの文字が印刷されている。これは缶詰の刻印とおなじで、製造時期をあらわしている。10月に買ったものには 105083H 、12月に買ったものは 1052QE5 と書いてある。これを意訳すると、 2010年第50週に製造開始したリビジョンのロット83H、2010年52週に製造開始したリビジョンのロットQE5、だとわかる。つまり、12月に買ったほうが新しくて、新しいほうが対策されているはずなのに動かないというなぞの現象が起きていることになる。
ということで、16F1938のErrataをよ~く読んでみた。
PIC16F1938にはSilicon Revision A1、A2という2種類が存在して、A1にはADC Conversion may not Complete というバグがあることがわかった。で、A2では解決しているのだが、A2の記述が追記されたのが2010年12月。。。。つまりあれだ、10月に買ったリビジョンは、まだADC Conversion may not Completeの対策もなにもやっていないということで、問題がありながらも(俺は気にしなかった)なんとなく動いていた。12月に買ったリビジョンはADC Conversion may not Completeの暫定対策として8MHzより高速ではA/D変換するとPICがハングするように(中途半端に動作しないように?)なっているようだ。
なんだこりゃ~
つまり、リビジョンA2が市場に出てくるのを待つか、1050NNN以前の古いリビジョンのものを探すしか方法はなさそうだ。。。。。
まぁ、要するに、PIC16F1827やPIC16F1938とか、超高性能、高機能なのに100円ちょっとで売っているのは、それ相応の理由があるってこと。今、16F88や16F648を使っている人は、まだこの新しいシリーズに手を出してはならない。。。。まだ早い!
PICは製品が安定するまでに数年かかるので、それまでは枯れた旧製品を使って開発しましょう。新製品は安くて高性能だけど、手を出すと今回の俺のように痛い目にあう。
後日追記:今、秋月で売っているのは修正済みバージョン。非常に安定している。もう16F88や16F648を新規で使うことはないだろう。。。
どう見直しても、回路には問題がない。それにもかかわらず、動かない。。。。
年末より原因を調査していて、年明けてようやく原因が見つかった。
原因は、
「PICマイコンのバグ」
バグというと、不具合のように聞こえるが、まぁ確かに不具合といえば不具合なのだが、PICというマイコンは不具合のあることが前提で出荷されていて、不具合はErrataとして回避方法が公開されている。
今回遭遇した不具合はA/D変換の不具合で、回避方法は8MHz以下で動作させること、となっている。しかしこのス口コソは、一部掛け算のロジックを使っていて、32MHzじゃないと満足に動作しなかったりする。
さて、困った。。。
ここで気になるのが、10月に買ったマイコンだと問題が起きなくて、12月に買ったマイコンだと問題が起きたということ。12月に買ったマイコンのほうが古いのかも?と思って調べてみた。
PICのマイコンには、7桁のなぞの文字が印刷されている。これは缶詰の刻印とおなじで、製造時期をあらわしている。10月に買ったものには 105083H 、12月に買ったものは 1052QE5 と書いてある。これを意訳すると、 2010年第50週に製造開始したリビジョンのロット83H、2010年52週に製造開始したリビジョンのロットQE5、だとわかる。つまり、12月に買ったほうが新しくて、新しいほうが対策されているはずなのに動かないというなぞの現象が起きていることになる。
ということで、16F1938のErrataをよ~く読んでみた。
PIC16F1938にはSilicon Revision A1、A2という2種類が存在して、A1にはADC Conversion may not Complete というバグがあることがわかった。で、A2では解決しているのだが、A2の記述が追記されたのが2010年12月。。。。つまりあれだ、10月に買ったリビジョンは、まだADC Conversion may not Completeの対策もなにもやっていないということで、問題がありながらも(俺は気にしなかった)なんとなく動いていた。12月に買ったリビジョンはADC Conversion may not Completeの暫定対策として8MHzより高速ではA/D変換するとPICがハングするように(中途半端に動作しないように?)なっているようだ。
なんだこりゃ~
つまり、リビジョンA2が市場に出てくるのを待つか、1050NNN以前の古いリビジョンのものを探すしか方法はなさそうだ。。。。。
まぁ、要するに、PIC16F1827やPIC16F1938とか、超高性能、高機能なのに100円ちょっとで売っているのは、それ相応の理由があるってこと。今、16F88や16F648を使っている人は、まだこの新しいシリーズに手を出してはならない。。。。まだ早い!
PICは製品が安定するまでに数年かかるので、それまでは枯れた旧製品を使って開発しましょう。新製品は安くて高性能だけど、手を出すと今回の俺のように痛い目にあう。
後日追記:今、秋月で売っているのは修正済みバージョン。非常に安定している。もう16F88や16F648を新規で使うことはないだろう。。。
PR
この記事にコメントする