PIC18F14K50とFT232RLでシリアル通信を試した。
元々やろうと思っていて全然手を出していなかった。
というのも、arduinoの簡単さに感心してしまい、
PICはなぜすぐに色々な機能が実現できるライブラリさえ
提供していてくれないのだろう、という思いがあり、
やるなら使いまわせるライブラリを作りたい、と考えていた。
そんなおり、色々ネットを見ていて、
気が付くとよくきむ茶さんのサイトに辿り着いたりするのだが、
よくよく見るときむ茶さんがダウンロードできるようにしてくれているソースには、
UARTやSPIなど、面倒なところをライブラリにまとめてくれていて、
それを使えばわざわざ自分で書かなくても簡単に色々出来てしまう。
まさに欲しいなと思っていたものだった。もっと早く気付けばよかった。
ということで、きむ茶さんのサイトにある通りに試しただけ。
http://www.geocities.jp/zattouka/GarageHouse/micon/linkPC/FT232R.htm
今後も色々使い倒していきたいと思う。
18F14K50用のソースは下記。
|c|
// PIC18F14K50
//内部クロック
void interrupt inter(void) {
InterUART();
}
void init(void)
{
OSCCON = 0b01100010;
ANSEL = 0;
ANSELH = 0;
TRISA = 0;
TRISB = 0b00100000; //RX in
TRISC = 0;
USBEN = 0;
IOCA0 = 1;
IOCA1 = 1;
PORTA = 0;
PORTB = 0;
PORTC = 0;
}
void main(void)
{
char data[3];
init();
InitUART(12, 10, 51);
data[1] = 0x0d;
data[2] = 0x0a;
while(1) {
if (UART_Available() != 0) {
data[0] = UART_Read();
data[0] += 2;
UART_Send(data, 3);
}
}
return;
}
||
InitUARTの中身を見てみるとわかるが、ICによって処理が分けられている。
18F14K50にはRX, TXは1個ずつしか無いので特に設定はいらないため
そのまま使える。最初の2つの引数は使ってないので適当な値でもいい。
他のICを使う場合はそこに分岐処理を追加していけばいい。
githubに上がってみんなで更新していけるとよさげなライブラリ…。
ハマったところとしては、
どうしても割り込み関数が呼ばれず、全然動作しなかった。
なんか設定やコンフィグがおかしいのかな〜と思い時間かけて調べたが分からず。
よくよく調べるとFT232とPICのRX同士、TX同士をつないでいたという
初心者にありがちそうなミス…。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント