とある案件で開発中。納品物件はプログラムと回路図なので、ブレッドボードで開発していた。
キャラクターLCDやスイッチなどを付けることを見越して40ピンタイプのPIC16F1939を使用していたが、仕様がある程度決まって、周辺もI2Cとシリアル通信、数個のLED表示になったので、ピン数の少ないPICマイコンにマイグレーション(migration:移植)することにした。
移植先はPIC16F1827。PIC16F1939ではSSPがひとつだったのに対してこれはI2CやSPIのエンジンであるSSPグループが2つある。というわけで、ソースを少し変更することになる。
SSPxxxというレジスター名を全部SSP1xxxに置換してしまう。SSP2はUARTのピンと排他的に使うことになるので、今回は使用しなかった。
またUARTピンと重複しているのでRXDTSEL =1、TXCKSEL =1にに設定。これで、
RB1→SDA
RB4→SCL
RB2→RXD
RB5→TXD
と使えるようになった。これらの特別機能ピンを使う時は入力に切り替える。TXDだから出力と勘違いして動かなかったりした事があった。UARTやI2C設定に切り替えると自動的にポートがその機能にあった入出力に設定される。
PORTもAとBだけになるので、それ以外の要らないポートは削除。数回エラーを取り除いたら、さほど苦労もせずにマイグレーション完了。けっこうあっさり終わるものだ。
I2Cの動作も問題なく動いている。
一日かけて、納品に耐えうるプログラムと手作り基板を作り上げたので、今まで使ったブレッドボードはこれにて役目を終える。
数十分かけて組み上げたブレッドボードは数分で分解。それと引き換えに回路図とプログラムが出来上がる。10年以上前はブレッドボードの使用に否定的だったが、今ならブレッドボード+PIC+PICkit3+USBシリアルでの構成が一番デバッグが楽でよく行う開発手法となった。資源の有効活用できるし、時間もさほど掛からない。
PICマイコンは、このPICを初めとした次世代14ビットPICであるF1000番を好んで使うようになった。書き込み速度は速いし、PICkit3でインラインでバッグができる。
PIC16F1827でも4Kワードも使えるので、#include <stdio.h>を組み込んで、
void putch(unsigned char c){
sci_PutByte(c);
}
と定義すれば、
printf("DATA=r:%5u ",sensordata[i]);
とか簡単に0~65535をUARTに出力できて便利。printfデバッグ+PICkit3によるトレースデバッグが低コストで開発期間が早い。PICに書いては動作させて、UARTからレジスタ内容を送り出す様にプログラムを書いて、デバッグを繰り返す開発だった数年前を考えると、個人宅環境で素晴らしいデバッグ環境が安価に揃うようになったものだ。
最近のコメント