現状、AVRとPCの通信させ、送信するデータを'1'のように文字データに変換して、ディスプレイ上に表示させることは成功しています。
また、専用のソフトを用いて、PCとLCDとの接続も行い、PCが送信するデータによってLCDの表示を切り替えることに成功しています。
現在、このPCの部分をマイコンに変更し通信を行おうとしているのですが、どうも上手くいきません。
プログラムは現在以下の様になっておりまして、send()の()の中を変更して試しているのですが、どうも上手くいきません。
#include<avr/io.h>
#include<util/delay.h>
#include<math.h>
#define FOSC 1000000; /*fosc=1MHz*/
typedef unsigned short byte; /*0~65535*/
/*UARTch1送信用関数*/
void send1(byte d1){
while(!(UCSR0A & _BV(UDRE0))); /*UART送信準備完了まで待機*/
UDR0 = d1;
_delay_ms(500);
}
/*UARTch2送信用関数*/
void send2(byte d2){
while(!(UCSR1A & _BV(UDRE1))); /*UART送信準備完了まで待機*/
UDR1 = d2;
_delay_ms(500);
}
int main(void){
//////////PORT//////////
DDRD = 0b11111111;
PORTD = 0b01000000;
//////////Resister//////////
/*UART_ch1*/
UBRR0 = 12; /*ボーレート=9600bps, UBRRn=(fosc/(16*BAUD))-1*/
UCSR0A = 0b00100010;
UCSR0B = 0b00011000;
UCSR0C = 0b00000110;
/*UART_ch2*/
UBRR1 = 12;
UCSR1A = 0b00100010;
UCSR1B = 0b00011000;
UCSR1C = 0b00000110;
//while(1){
_delay_ms(10000);
PORTD = 0x00;
send2(0xFF);
send2(0x82);
//}
return 0;
}
設定しています。実際に9600bpsにしたPCと通信が成功しているので、問題ないと思います。
send()の()内が原因だろうと思うのですが、どう変更すればいいか分からず困っています。
どなたか回答お願いします。