PIC16F1939は、PIC16ファミリーの一員ですが、その内実はPIC18を見ているかのような感覚を覚えます。PIC16F1939の各種の拡張は、PIC18が発表された際のそれに酷似しており、PIC16とPIC18にマーケティング的な機能差は残されているものの、決定的な差異はなくなりつつあるように感じます。
PIC16F1939を搭載したPICSYS16-CLCD
PIC16F1939の従来のPIC16からの拡張は色々と示されていますが、C言語でのプログラミングを考えると、以下の2点の拡張が極めて重要だと思います。
PIC-DEV-690RLに標準で搭載されている文字LCDの代わりに、ドットマトリックスLED:OPT-DML-2Sを搭載することができます。OPT-DML-2Sを搭載すると、ドットマトリックスLEDを利用したスケッチを楽しむことができます。
以下に、ドットマトリックスLEDの簡単なスケッチを示します。このスケッチはPIC-DEV-886RLでもそのまま利用できます。
#include "picsys16.h" void
PIC-DEV-690RLの文字LCDの代わりに、7セグメントLED:BLUE-7SEG-1を接続したスケッチ例を示します。
このスケッチはPIC-DEV-886RLでもそのまま利用できます。
#include "picsys16.h" void setup() {
PIC-DEV-690RLに標準で搭載されている文字LCDの代わりに、7セグメントLED:BLUE-7SEG-1を搭載することができます。BLUE-7SEG-1を搭載すると、7セグメントLEDを利用したスケッチを楽しむことができるようになります。
BLUE-7SEG-1では、PICの少ないピン数で4桁の7セグメントLEDに表示を行うために、ダイナミック点灯方式を利用しています。ダイナミック点灯方式を実現するための面倒な処理は、PICSYSが自動的に行ってくれます。
BLUE-7SEG-1を利用したスケッチ例を示します。このスケッチはPIC-DEV-886RLでもそのまま利用できます。
PICSYS16でのプログラムの作成法を説明します。
PICSYS16-CLCD
最初は少し面倒に思われるかもしれませんが、1度MPLABのプロジェクトを作ってしまえば、それを使いまわしできるので、2個目以降のプログラムの作成はとても楽になります。:-)
PICSYS16のパッケージ内容を簡単に説明します。
PICSYS16のパッケージ内容
PICSYS16では、ドットマトリックスLEDを簡単に制御することができます。
ドットマトリックスLEDの表示に必要な継続的なリフレッシュ処理は、PICSYS16が自動的に行います。
exdml1.c: ドットマトリックスLEDの利用
#include "picsys16.h"
void setup()
{
DML_init(SR_DAT, SR_CLK, SEG1, SEG2, SEG3, SEG4) ;
pinMode(SW1, INPUT) ;
pinMode(SW2, INPUT) ;
pinMode(SW3, INPUT) ;
pinMode(SW4, INPUT) ;
}
PICSYSを利用する上での技術的な注意/制約事項を示します。
ピン割り付け機能
PIC24Fの特徴的で協力な機能であるピン割り付けとそれを利用した周辺モジュールの利用機構はまだご提供できていません。
PWM
PICSYSのPWM出力は、LEDの表示の明暗をPWMのデューティー比制御により変化させる程度の簡易的な利用を想定した構成になっています。このため周波数は、ちらつきを感じない62.5Hz程度と低く、また固定されています。また、デューティー比の指定分解能はMCUのクロックによりますが、16-64になっています。
PICSYSにおけるI/Oピンの指定は、RA0の場合にはRA(0)、RB4の場合にはRB(4)の様に行います。
PICSYSはAVR用のArduinoに触発され、PICでも簡単にプログラミングを行える環境を構築することを目標に開発されたソフトウェアフレームワーク(ライブラリ)です。
PICのプログラミングで以下のようなことを感じたり、これらが利用の障害になっていませんか?