PICのConfigビットの「逆論理」な奴
2014-12-07
PIC工作には抵抗は無くなったものの相変わらずたま~にしか触らないため、その都度開発環境がバージョンアップします。するとその間に操作方法が変わっていたり・・・というか、忘れてしまっていることが多くて嫌になります。まぁ、そもそも上等でない脳みそが時間と共に劣化しているわけですから、何かしらで補わないとねぇ
これまで何度か同じ場面に遭遇し、覚え書きしておかなくちゃ
と思っていたPICのConfig ビットに纏わる「落とし穴」についてまとめておこうと思います。以前にMCLRがアサインされるポートのConfig 設定がおかしいとして書いた記事がありますが、これって全然舌っ足らずな情報なんですね、実は。そこで、その後もう少しきちんと調べた結果を備忘録として残しておこうというのがこの記事の主旨です。
XC8のConfig表現は独特ですが、自分は以下のように使っています。

pragmaで一つひとつ設定しているのが判ると思いますが、ここで「CLKOUTEN」に着目して下さい。ソース内の定義は「ON」であるにも関わらず、コンパイル結果では「OFF」・・・これって一体
・・・答えはデータシートにあります。

実はConfig ビットの各ビット値については、ハード論理とリンクするようにハイ・ローが逆の定義のものがあります。シンボル名にオーバラインがあるものがそれで、CLKOUTENにも実はオーバラインが付いています。すると、ソースで定義した「ON」は逆論理・・・実際の設定値としては「OFF」、即ち「0」になります。IDEの方ではそれをきちんと表現しているんですが、実際の意味合いとしてはデータシート上の値が設定値・・・つまり逆になります。
上記のソース内では「CLKOUTは使いたくないから1に設定しよう」という意図で「ON」(=1)にしています。データシート上、この値では「1 = CLKOUT function is disabled. I/O function on the CLKOUT pin.」となりますから問題なし。ところが、何かの拍子にIDEのConfig ビットを見てしまうと「OFF」となっていて混乱するわけです。
この件はIDEのマニュアルのどこかに書いてありそうですが、流石に探す気になれず・・・まぁ、そんなに頻繁に見る場所でもないですから普通は意識しなくてもいいんですが、「ちょっとEEPROMを・・・」といった場合(bit 8)にも気をつけないと、思わぬ動きに翻弄されかねませんね。

これまで何度か同じ場面に遭遇し、覚え書きしておかなくちゃ

XC8のConfig表現は独特ですが、自分は以下のように使っています。

pragmaで一つひとつ設定しているのが判ると思いますが、ここで「CLKOUTEN」に着目して下さい。ソース内の定義は「ON」であるにも関わらず、コンパイル結果では「OFF」・・・これって一体


実はConfig ビットの各ビット値については、ハード論理とリンクするようにハイ・ローが逆の定義のものがあります。シンボル名にオーバラインがあるものがそれで、CLKOUTENにも実はオーバラインが付いています。すると、ソースで定義した「ON」は逆論理・・・実際の設定値としては「OFF」、即ち「0」になります。IDEの方ではそれをきちんと表現しているんですが、実際の意味合いとしてはデータシート上の値が設定値・・・つまり逆になります。
上記のソース内では「CLKOUTは使いたくないから1に設定しよう」という意図で「ON」(=1)にしています。データシート上、この値では「1 = CLKOUT function is disabled. I/O function on the CLKOUT pin.」となりますから問題なし。ところが、何かの拍子にIDEのConfig ビットを見てしまうと「OFF」となっていて混乱するわけです。
この件はIDEのマニュアルのどこかに書いてありそうですが、流石に探す気になれず・・・まぁ、そんなに頻繁に見る場所でもないですから普通は意識しなくてもいいんですが、「ちょっとEEPROMを・・・」といった場合(bit 8)にも気をつけないと、思わぬ動きに翻弄されかねませんね。
大失態・・・ログ出すの忘れた(ToT)
2014-12-07
先週金曜日に忘年会戦線の「初戦」を無事に終えました。少々大人数だったため、まだ若い幹事が上手く取り回せるか心配しましたが、まずまずのノリで大いに飲みました
昨日は未だ拘っているLCメータの改善を行うべく、水魚堂さんのBschでユニバーサル基板への部品搭載図面を作成したり、このところご無沙汰だったPICの開発環境のバージョンアップを行ったりと、歯医者に行った以外はまたしても引き籠もっていました
そんな中、ふっと思い出したのが、先週末の「WW DX CW」のログ提出が未だだったこと。「そうそう、このコンテストの提出期限って結構早いんだよねぇ・・・」とルールのページを見に行くと・・・えっ、終わってるやん
『ログ提出はコンテスト終了後5日以内: SSBログは2014年10月31日 2359UTC、CWログは2014年12月5日 2359UTC.』
何となく1週間だと思い込んでいて、今週末に片付ければと高を括っていたのが不味かった・・・もう、後の祭りです

自分の「足跡残し」として集計結果と40mのマルチをアップしておくことにしました。やはりこの中では自分的には「HK」が光ります
eQSLではもうConfirm済み・・・いやぁ、早いなぁ
40mの結果として40QSOくらいは、その日のCONDXで「米国西海岸」まで届けば叩き出せる数字になりました。5W+釣竿君という組み合わせは、多分今後もあまり変わらないでしょうから、これまでの40mの結果も参考にしながら、さらなる改善点を見つけて1局でも多く交信できるようにして、そろそろやってくるであろう「冬の時代」・・・サイクル25までの長い長いローバンド・メインの期間にも飽きずに続けられるようにしたいと思います。

昨日は未だ拘っているLCメータの改善を行うべく、水魚堂さんのBschでユニバーサル基板への部品搭載図面を作成したり、このところご無沙汰だったPICの開発環境のバージョンアップを行ったりと、歯医者に行った以外はまたしても引き籠もっていました

そんな中、ふっと思い出したのが、先週末の「WW DX CW」のログ提出が未だだったこと。「そうそう、このコンテストの提出期限って結構早いんだよねぇ・・・」とルールのページを見に行くと・・・えっ、終わってるやん

『ログ提出はコンテスト終了後5日以内: SSBログは2014年10月31日 2359UTC、CWログは2014年12月5日 2359UTC.』
何となく1週間だと思い込んでいて、今週末に片付ければと高を括っていたのが不味かった・・・もう、後の祭りです


自分の「足跡残し」として集計結果と40mのマルチをアップしておくことにしました。やはりこの中では自分的には「HK」が光ります


40mの結果として40QSOくらいは、その日のCONDXで「米国西海岸」まで届けば叩き出せる数字になりました。5W+釣竿君という組み合わせは、多分今後もあまり変わらないでしょうから、これまでの40mの結果も参考にしながら、さらなる改善点を見つけて1局でも多く交信できるようにして、そろそろやってくるであろう「冬の時代」・・・サイクル25までの長い長いローバンド・メインの期間にも飽きずに続けられるようにしたいと思います。