atmel / avr: 2005年9月アーカイブ

mrga8など最近のAVRマイコンを取り扱ってなかったりAVRライターなどがラインナップから消えていたので、秋月はもうAVRを見捨てたのかと思っていたら、、、AVR最強のマイコン ATMEGA128(日本語データシート) を販売開始してました。しかも今のところDigi-Keyよりやすい

秋月の通販販売ページ

でもTQFPパッケージなんて、素人には使いにくいんだよね。
DIP変換基盤と一緒にやすく出してくれたら買うんだけどなぁ。

shlogのエントリーを参考にmega8のシリアルの送信受信をやってみる。

作ったハードのテストもかねて、
エントリーにあるソースを使ってやってみたらあっさりできた。
が...どうもシリアル送信の動作が時々おかしい(こないときがある)のでハードが変なのかとハードをしらべる。

別のハードでも同じ症状だったので、様のソースを解析。

switch(uart_recv_data){ // 受信データが
case 'o': // oの時
LED_SET();
if(c != uart_recv_data) uart_send_str("LED_SET\0"); // 前回と同じ文字で無ければ
break;
case 'x': // xの時
LED_CLR();
if(c != uart_recv_data) uart_send_str("LED_CLR\0");
break;
default: // その他の時
if(c != uart_recv_data) uart_send_str("ERROR\0");
}
c = uart_recv_data;

以上のソースがmainの中で実行されていて、解析中に割り込みが入ったりした時におかしくなっていたので、UART受信割り込みの処理の方に、解析のメソッドをうつす。

うまくいった。

書き換えたソースコード


久しぶりのWINAVRなので苦戦した。

*****以下覚え書き*****

・翔様によるとどうやら

uart_recv_dataはグローバル変数として、volatileで宣言しないとならない。

らしいので覚えておく。

このアーカイブについて

このページには、2005年9月以降に書かれたブログ記事のうちatmel / avrカテゴリに属しているものが含まれています。

前のアーカイブはatmel / avr: 2004年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

atmel / avr: 2005年9月: 月別アーカイブ

Powered by Movable Type 4.01