0735774ワット発電中さん
2016/06/28(火) 23:14:38.32ID:yzU1GKL7基本シリアルで命令を送るのですが、命令を送ってもスンとも動かずで・・・
マイコン側はボーレート9600のパリティなし、8bit、ストップビット1、フロー制御なしの設定にするため
ATmega168PのCLKDIVを外して8MHz駆動に変えています
レジスタの設定も下記のようにしているのですが、何が間違っているのでしょうか。
// ADCの設定
ADMUX = 0b00000000; // AREF 右詰め
ADCSRA = 0b10000111; // 62.5kHz
// シリアル通信の設定
UBRR0 = 51; // ボーレート9600
UCSR0A = 0b00000000;
UCSR0B = 0b00011000; // RX,TX使用
UCSR0C = 0b00000110; // データ8bit, ストップビット1, パリティなし, 非同期
Windows側でTeraTermで確認したところ、特になにも信号が送られてくる気配はありませんでした。
シリアルの送信プログラム部分はこんな感じにしています
#define HEAD 0x7E
#define END 0xEF
void send_byte(uint8_t arg_b)
{
while(!(UCSR0A & 0b00100000));
UDR0 = arg_b;
}
void play_file(uint8_t arg_folder, uint8_t arg_file){
send_byte(HEAD);
send_byte(0x04);
send_byte(0x42);
send_byte(arg_folder);
send_byte(arg_file);
send_byte(END);
}