[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

平成から令和へ、天皇陛下の退位と新天皇即位2019/04/30 14:04:52

いよいよ平成から令和なるときがやってきた。
私の平成と言えば、設計会社に転職したのが平成で、この頃はインターコンチの会議システム関係の設計などからスタートした。今じゃブラックと言われるような超残業時代でもあったけど、この会社に入らなかったら、今の私はきっと無かっただろう。

これも時代だね。



キャラクタLCDで令和

せっかくなので、キャラクタLCDをCGRAM対応したついでに、令和という漢字フォントを埋め込んでおいた。年とか日を先に作るべきだったw 興味があれば下からダウンロードできます。





PIC16F1823とキャラクタLCDによる「シリアル通信モニター」アップデート2019/04/07 15:50:24


シリアル通信モニター20文字x4行キャラクタLCDに対応

先月末、依頼のあったPIC開発も無事終わったので、ついでに久々にホームページ上のキャラクタLCDによるシリアル通信モニターのファームウェアを更新した。対応したのはPIC16F1823を使用したタイプで、特に20文字4行のSC2004では何と8年ぶりの更新だ。ハイテック時代から現在のXC8コンパイラになってから、変換効率が良くなったので、アスキーモードとバイナリーモードを搭載できた。

Arduino等からシリアル通信を接続すれば、そのまま簡易表示器となるので便利だと思う。


キャラクターLCDは、最近のトレンドとしてI2CタイプのLCDが価格が安くて扱いやすいので、昔ほどキャラクターLCDが多用されなくなった。今度はI2CタイプのLCDでシリアルモニターを作ってみようか考え中。



以下は、MPLABXについて、つらつら書いてあるので、興味のある方だけどうぞ。

ところで、MPLABXについて少々情報を書きこんでおこう。
シリアル通信モニターを含めた私がホームページで公開している情報が古くなったので、そろそろMPLABX5以降でアップデートしなきゃと思っていたのだが、色々と問題があり、その一つ一つを解決していたら時間が過ぎてしまった。

例えば、昔のソースコードをMPLABXで読み込むと、互換を保つために、アップデートするかの質問でYesを選択し、コンパイラを最新に選択し直して更にYesを選択すれば、何も苦労せずビルドができるのだが、これを新規でフォルダを作った所から始めると、ビルドするのに一苦労だった。

MPLABX5.15 +XC8 Ver2.00以降は新規でソースをビルドする場合は以下に注意。
割り込み記述だと、
(旧)void interrupt handler(void) {
(新)void __interrupt () my_isr_routine (void) {

絶対アドレス指定だと、
(旧)foo[10] @ 0x2000;
(新)foo[10] __at(0x2000);

と書き直さないとエラーになってしまう。
また、
static bit LCD_RS @ ((unsigned) & LATA * 8 + 6)
とかは古い表記なのでエラーになる。

この場合は、
レジスター名bits.ビット名
を使い記述していくのが良い様だ。オートコンプリートが働くし、この方がむしろ後々のメンテナンス性が良い。 具体的には RA2と書くよりPORTAbits.RA2と書いた方が、どのレジスターのビットなのかが分かるし、PORTAbitsと打ち込んだ時点でMPLABX IDE側が候補を出してくれる

そもそも、出力ポートにはPORT表記のRAやRBを使わないでLATAやLATBなどを使った方が良い。PORT表記はリードモデファイライトという、昔のPICマイコンの仕様で、ポートをセットしたつもりでも、容量性負荷があったり、マイコンの動作速度が速かったりするとセットされないという厄介な事象があるからだ。PIC16F1000以降やPIC32などはLATというラッチレジスタがあるため、この問題は回避される。新規でコードを書くならLATAとかLATBとかを使うべきだろう。

それとC言語の仕様で「charやintは使わない~2016年、C言語はどう書くべきかより」で紹介した通り、<stdint.h>や<stdbool.h>をインクルードし、unsigned charやunsigned intoをそれぞれ、
uint8_t、uint16_tと書き直したりしてC99準拠になるように合わせたり、
ビルド時に型の不一致のWarningが出ないように、 
 LCD_UsePort = (uint8_t)((LCD_UsePort & LCD_PortMask) | (c & 0x0f));
というように、符号なしは符号なしとして明示的に型を合わせたりして修正を行った。
型の不一致は、uint8_tとint8_tなど、条件分岐時に起きたり、関数の戻り値として
return (bool)FERR; などと、boolean指定にするなどをしていった。



ただ、取れないワーニングがいくつかあって、例えば「unresolved #include <alloca.h> in included .~」とワーニングでるのは別にxc.hが問題になっているわけではなくバグっぽい。
マイクロチップフォーラムより、



実質はビルドできるけどC99をC90にして回避するのが今の方法の模様。左側にあるスパナのアイコンをクリックして設定。



これで出なくなったけど、対処療法なので、次のアップデートで直ってくれることに期待する。



それと、希にコンパイルができない場合は、Tools→OptionsからXC8のパスを再検索すると直る事がある。その時はMPLABXを一回再起動し直した方が良いだろう。

開発環境は、マイクロチップに限らず、どのメーカーのマイクロコントローラーを使っても、それなりの問題は持っているものなので、こうやってブログなどで備忘録として書き留めて情報を共有しておくと良いかなと思っている。



昔のPICマイコンのストックにはご注意2019/03/16 14:18:03


自宅での開発作業風景

この一ヶ月は、休日の空いた時間で私の知り合いから依頼を受けた装置の開発のお手伝い。何でも医療用の一部に使われる様だが詳細は良くわからないw



ADコンバータ値を取得して制御する程度のものなので、PICマイコンを使う。そうそう、この机はこうやって高さを調整できるので、袖机になって机が広く使える。



回路も必要最低限にして、ブレッドボードでのデバッグ。最初はPIC16F1825にしてたのだが、プログラムも大きくないからデバイスはPIC16F1823でいいやと途中から変更。これがあとで苦しめられる事にw 

ADコンバータを実装してテストしているときにそれはやってきた。いつも普通に使えているADコンバーターが、途中で動作しなくなる。ウォッチドッグを入れて確かめたら、どうやらAD完了のGo/Doneが来ない。あ、これはもしや・・・・



エラッターの事すっかり忘れてたよ(´・ω・`)



そうだった、この時も同じ事があって、デバイスを違うもの変更したんだった。
今回該当したのはADCのGo/Done完了フラグが来ない事がある不具合。この回避策は2つあって、1つがスリープからの復帰、もう一つが86Tcycleカウントしたあと手動でGo/Doneをクリアする方法。



現在出回っているPIC16F1823なら、秋月はレビジョンA9になっていたのを確認したので、よっぽど小売り業者でない限りはこのエラッタに該当しないと思うが、私の手持ちPICマイコンが古かったため、またエラッタにご対面したという次第。

今回はもうチップを変えられないので、レビジョンA6でも動作するようにスリープ式に変更。
スリープの方法は、Timer割り込みなど全部を禁止にして、更にGIEを0にしてグローバル割り込みを禁止し、ADIE割り込みを許可したあとにSLEEP命令とNOP命令を書きこむ。
こうすると、ADIEが発生したときのみSLEEPの次の次の命令から復帰するのでプログラムは簡単だ。復帰後はADIEをクリアしてADIFもクリア。Timer割り込みなどの使用している割り込みをセットした後にグローバル割り込みGIEをセットすればOK。

スリープする前にはWatchdogを切っておかないとWatchdogが発生したら、0番地スタートにならず、スリープのルーチンを抜ける変な動作になるのでご注意を。

とりあえずA6でもA9でも問題なく動作できるようになって納品が終わり、受け入れ検査でパスしてほっとした。


教訓:
 1.デバイスを使うときはエラッタを読みましょう。
 2.致命的なエラッタを持ったPICマイコンは迷わず捨てましょうw



PICマイコン開発の手伝い2019/02/03 18:47:18


PICの開発

去年の暮からずっと頼まれていたPICを使った開発なのだが、簡単にできるだろうなんてずっと放置していたら、1月があっという間に過ぎてしまった。さすがに本腰を入れてやろう。

MPLABXのツールが5.10になった事もあって、開発環境を一通りアップデートし、ビルドが一通りできる事を確認。2月中くらいまでにはプロトタイプ上げないとなぁ。

そういえば、最近のC言語のソースコードはunsigned intやunsigned charなどをu_intとかint8_tとかで変数の型を宣言する様だ。C99の仕様でもあり、それが間違いとも指摘されていると昔のブログで書いた気がする。 2016年、C言語はどう書くべきか  

あれから3年は経過しているが、今でも普通にcharとかintを使っている。理由は、

 最初に出会ったCのお手本が「はじめてのC」だから (まあ、今となっては古いか)
 XC8のサンプルコードが今までそうだったから
 前身のHitech C時代に型の説明がなされていたから
 所詮使ってもPICのC言語だから (上から目線やめい)
 過去のソースコードを流用しているから (これ大きい)
 私がそこまで追いついていないから 真実 (´・ω・`)

そもそもマイコンで使用するCとWindowsなどで使うCに違いがあって、そのビット幅などの違いの解釈を使用する環境に合わせられるように提唱したのが標準C99の規格の様だ。
それなので、これからCを書こうとする人は、それに則った方が後々苦労しないし、変な方言に巻き込まれなくて良いと思う。

C99準拠のC言語の解説本を物色中。もしご存知な方がいればコメント宜しくちょんまげ('ω')

C99の仕様(Build Insiderより)

ユーチューブやツイッターで油売ってないでやるか(´・ω・`)


MPLAB SNAPを買ってみた2019/01/14 01:20:41


MPLAB SNAP購入

去年の暮に発表されたMPLAB SNAPが秋月でも取り扱っていたので試しに購入してみた。
中身は基板の入った袋だけ。USB MicroBケーブルは付属していない。



PICKIT4と比較。基板むき出しで小さい。CPUに張り付けてあるQRコードを読み込むと、サイトに誘導される





マイクロチップのサイトで公開されている動画を見ると、このCPUコアはICD4と同じPIC32を使用していると解説していた。



そもそもPICkit4と何が違うのか。ドキュメント(PDF)によると、幾つかの違いがあり、大きな違いはVPP書き込みをしない事である。つまり、低電圧書き込みのみの対応。configではLVPをONにする必要がある。低電圧書き込みをする場合、デバイスによっては内部リセットが使えず強制的にMCLRピンを使ったり、LVPにするための専用ポートを操作したりする場合がある事に注意。
8ピンPICなどは、あまり恩恵を受けない感じだ。

こういった制約はあるが、PICkit4は秋月価格でも5400円に比べて、こちらは半分以下の1740円で買えるのが大きな魅力だろう。



USBの認識はPICKIT4と同じ。



実際に使用してみた。スクショではMPRABX5.05だが、MPLABX5.10でも動作を確認した。
どちらも書きこみができる。LVP(低電圧書き込み)をONにしないでビルドすると、無情にも、
Programming did not complete.
The low voltage programming feature requires the LVP configuration bit to be enabled on the target device. Please enable this configuration bit and try the operation again.
というエラーになるので、その時はLVPをONに書き直してもう一度ビルドを行う。
※なぜか5.05ではこのエラーは起きなかった。5.10を使用した方が無難だろう。

ついでに、MPLABXの問題なのだが、バージョンアップした後の起動初回はどうも不安定で、2台のパソコンでMPLABXでSNAPが使えないほか、ビルドもうまく動作しなかった。
この場合、一度Projectを全部閉じてMPLABXを再起動し、プロジェクトを開くと直るようである。
それでも直らないのであれば、別のプロジェクトで作り直した方が良いかもしれない。
これは、MPLABXのバージョンアップの時に、設定情報の引継ぎ(Windows位置も含む)を行うか聞いてくる場合、よく発生する様だ。新しいMPLABXをインストールする前に、前回のプロジェクトを完全のClose ALLで閉じてから行うとかしたほうが良いだろう。

あと、既にネットではSNAPの事について、動作を行ったサイトが役に立った。紹介しておこう。


Amazonを見ているとPICkit3ジェネリックとかあって、それが安い値段で売られているんだねw
実力はどうなんだろう。

PICkit4レビュー2018/04/16 23:59:59



今日朝方、郵便局からFedExの荷物が配達。以前注文していたPICkit4だ。9日くらいで届いた。



PICkit2、3と開けにくかったプラスチックのブリスターパックから代わり、段ボール梱包。



説明書なし、CDROMなし、ほんとに今時の最低限の梱包だ。ここまで省くとすがすがしさすら感じてしまう。




USBケーブル、本体、ステッカーが2枚入っている。なぜステッカーがという突っ込みはやめておくw



この本体、ケース自体が押しボタンスイッチになっている。後程分解写真を公開。
PICkit2,PICkit3では、中に書きこみファームウェアを入れておいて、ボタンを押すだけでプログラムができるProgrammer to Go相当の機能があるが、ファームウェアがまだ必要最低限のサポートなので、いつか機能が実装されるだろう。



ICSPコネクタは8ピンになり、USBコネクタはマイクロUSBを採用、そしてマイクロSDカードスロットが付いているのが特徴。



重さは、38グラム。他よりも約10グラム重くなったのは、エンブレムデザイン兼スイッチの重さだろう。



お約束分解w 
結構トリッキーな組み立てになっていて、斜めについているフルカラーLEDが、ポリカーボネート製の光誘導板を介して上フタの斜めの所を光らせている。そしてスイッチはその板自体が押されて下のタクトスイッチが押される仕組み。斬新というか誰のアイディアだろうw

基板に載っているCPUはPIC32なのだが、ARMとある。実はこれAtmelのARMコアがマイクロチップの型番になってPIC32CZシリーズとなった物だそうだ。ロットが若いPICkit4では現にAtmelのCPUが載っている。(Twitterでの画像

追記:ATSAME70Q21Bで間違いない様だ。(日本語のプレスリリースよりpdf



光誘導版はここに配置される。実際のひかり方は、青やバイオレット、黄色などフルカラー特有の色で表示される。なお、この輝度はMPLABXの設定で可能な様だ。




気になるUSBコネクターまわり。マイクロUSBが世界標準になったが、この華奢さが結構心配だったりする。PICkit4の場合は、ケースフランジをスルホールで止めているため、壊れにくい設計になっている。




PICkit3までは、すたれてしまったミニUSBが採用されていていたが、PICkit4になってマイクロUSBになったので、汎用のUSBケーブルが使用できるのは、とても便利な事だろう。




ICSPヘッダーは、従来の6本から8本に拡張されたが、これはICSPの他JTAGなどのインターフェース拡張として2本追加された格好である。このピンはまだRFU(将来使う予約ピン)の定義である。



1ピンから6ピンまでは昔の接続と同じであるので、物理的に接続が可能であれば、PICkit2,3のコネクタに直接接続することができる。




使用できるデバイスは、グリーンフラグになっている完全サポートのデバイスはまだ一つもないがw、イエローフラグとなっているデバイスは、少し古めのデバイスは使える様だ。

使用できるデバイス一覧は、MPLAB PICkit 4 In-Circuit Debuggerページにあるサポートデバイス一覧(http://www.microchip.com/mplabx-ide-release-notes)からダウンロードし、Device Support.htmを開くと見ることができる。



PICkit4を使うには、MPLABX ver4.15以上が必須となる。MPLABX関連のダウンロードは、私のホームページの左にあるリンクから行く方がすぐアクセスできる。

PICkit4特有の設定があり、ソフトブレークの使用もこのチェックボックスにチェックを入れる事で初めて使用可能となる。



他に、PICkit3ではなかった細かい設定などができる様だ。プログラム速度も変更できるようなので、実際比較してみたが、



PIC16F1459ではどちらも12~3秒程度、PICkit3でも4でも同じ速度だった。今後のファームウェアなどの改良で速くなる可能性はありそう。
ただ、PIC24やPIC32などの大容量プログラムについては未検証なので、どれだけ速くなったかは後で実験してみたい。


PICkit2,3,4

というわけで、9年ぶりに新しツールPICkit4が発売されたが、そのハードウェアの恩恵を受けるにはもうしばらくかかりそうだ。

日本では、以前紹介したオレンジピコ以外でも共立エレショップでも取り扱い(予約)を始めた様だ。そのうち秋葉原でも普通に手に入るようになるだろう。マイクロチップダイレクトはこちら。


PICkit4をマイクロチップダイレクトで注文してみた2018/04/07 21:51:34



以前PICkit4について紹介したが、一体どんなものか探るために購入をしてみよう。




日本ではまだメジャーな店舗では取り扱っておらず、相変わらずPICkit3が根強く売られている。
というわけでマイクロチップダイレクト経由で輸入。

最後に使ったのが3年以上前になるので、住所などが古いままだったから修正してポチ!




日本語表示にしていたのだが、注文するボタンが何故か中国語だったので、英語に設定しなおして最初から注文しなおしたw

手に入れてから動作させるレビューを行おうと思う。今月下旬到着予定。


追記:
日本でも、オレンジピコで取り扱っている。即納だそうだ。


マイクロチップのサイトの404エラーがwww2018/04/06 22:03:06


マイクロチップの404エラーwww

久々にホームページ側のPICリンクを修正しようとリンク確認を行ったら、マイクロチップのサイトで404エラーが起きている部分に異変がw

なんと、4.04ドルでボードを推しているのだw しかもアトメルwww


ちゃんとカートに入る(見た目4.04ドルじゃないけどクーポンコード使うと4.04になるらしいw)
粋な演出ナイス👍


おっと、ずっと放置していたホームーページのリンクは全部修正済。
もうバージョンアップやめたんじゃないかと思っていた、


は、ちゃんとアップデートしている。特に驚いたのはSDCCが未だにバージョンアップを続けていることだ。

一方、XC8とかMLAは今年になって暫くバージョンが上がっていない。

特に、MLAは1年以上そのままだ。そのままHarmony主体になるのか引き続き監視体制。



MPLAB PICkit 4 In-Circuit Debugger 発表!2018/02/28 00:44:09


MPLAB PICkit 4 In-Circuit Debugger
License
 All rights reserved by Microchip Techn


PICマイコンの廉価版書き込みツールとして2009年2にPICkit3が発表されてからすでに丸9年が経ったが、ここにきて新たなPIC書き込みツールが発表された。

MPLAB PICkit 4 In-Circuit Debugger である。

プレスリリース


・シリコンのクロッキング速度に追従
・デバイスが許す限り速く自動的にプログラム
・ターゲット電圧1.20V〜5.5V
・広いターゲット電圧はさまざまなデバイスをサポート
ターゲットに最大50mAの電力を供給可能
・フィールドでプログラムするためにターゲットから電力供給が可能
  Programmer to Go相当(MPLABX IDEでアップデートすることで対応)
・ターゲットから100μA未満での最小消費電流
・ポータブルUSB電源およびRoHS準拠
USB 2.0ハイスピードを搭載し、外部電源は不要
・CEおよびRoHS準拠
・8ピンシングルインラインヘッダー
ストリーミングデータゲートウェイを備えた4線式JTAGやシリアルワイヤデバッグなどの高度なインターフェイスをサポート

互換性
2線式JTAGとICSPを使用したデモボード、ヘッダ、ターゲットシステムとの下位互換性
・ターゲットから自己電源を供給するオプション(2.7V〜5.5V)
・プログラマーツーゴー(PTG)のサポート(MPLABX IDEでアップデートすることで対応)
・プログラムデータを保持するSDカードスロット
ターゲットをプログラムするにはロゴを押してください

コスト効果
・高性能デバッガ/プログラマの一部として使える性能とコストパフォーマンス
・メンテナンスと機能のアップグレードが簡単

MPLAB X IDEの最新バージョンをインストールすることで、新しいデバイスのサポートと機能を追加できます。
これはwww.microchip.com/mplabxから無料でダウンロードできます


特筆する部分には太字+赤色で表示しています。
※以上翻訳終わり。内容は原文をご確認ください。


ということで、スイッチは、そのロゴ自体がスイッチになっている様だw

マイクロチップダイレクトではすでに販売している模様。現時点では3月13日以降発送予定
気になる値段はUSD47.95なので、さほど高いわけではない。

とりあえず購入してみようか考え中。


MPLABX IDE Ver4.01以前に作成したプロジェクトフォルダが開けない時の対応2017/12/01 23:56:19


MPLABX4.01以降を使用するときに、前回使ったプロジェクトを閉じないでMPLABXを終了し、再度立ち上げると、MPLABXが途中で無反応になる現象を確認した。

色々と調べたところ、4.01以降の場合管理者権限で起動しないとJAVAが正常に動作しないため、起動不良を起こす様だ。この現象は、お使いのPCでも変わるようで、Windows7やWindows10でも挙動が異なる事を確認した。

同じwin10/64でも、YOGA BOOKは問題なく、デスクトップのASROCKは起動しなかった。会社のwin7/64は起動時JAVAのエラーが多発してビルドが出来なかった。いずれも管理者権限で起動したら問題が解消。





まず、起動してもMBLABXが無反応となり、アプリケーションを終了できなくなった時の対処方法。Control+Alt+ESCでタスクマネージャーを開きmplab_ideとJAVAを終了

これでだんまりしていたMPLABXはwindowsから消えるはずである。


MPLABX IDE4.01以降での不具合と対応

恒久対策としては、MPLABX IDEを右クリックして管理者権限にしてしまえば、あとは問題なく立ち上がるだろう。








Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]