Atmega162
との間の通信を書いていPC
ます。
私には( によって変換された)PCB
インターフェイスがあり、トランシーバーを介して に送られます。RS485
RS422
MAX485
ADAM-4520
COM port
私は端末で自分のプログラムをテストしてきましたが、からの文字の送信はMCU
正常に機能しますが、からの受信PC
は変更されているのは奇妙に思えます(この変換のスキームを理解できません)。
たとえば、これらの ASCII 文字は次のように解釈されます。
0 => 0
1 => 64
2 => 32
3 => 32
4 => 16
5 => 65
6 => 16
7 => 16
8 => 8
'1' => 204
'2' => 102
'3' => 70
'4' => 51
'5' => 141
'6' => 35
'7' => 51
'8' => 6
'9' => 142
いくつかの伝送パラメータについてテストしてきましたが、役に立たないようです。ソースコードは次のとおりです。
void USART_init()
{
UCSR0B |= (1<<RXEN0) | (1<<TXEN0) | (1<<RXCIE0);
UCSR0C |= (1<<UCSZ10)|(1<<UCSZ00)|(1<<USBS0)|(1<<UPM10);
UBRR0H = 0;
UBRR0L = 12;
DDRD |= 1<<PD1;
_delay_ms(1);
}
void USART_Transmit( unsigned char data )
{
PORTD |= 1<<PD4;
while ( !( UCSR0A & (1<<UDRE0)) );
UDR0 = data;
while (!(UCSR0A & (1 << TXC0)))
PORTD &= ~(1<<PD4);
}
ISR(USART0_RXC_vect)
{
unsigned char a;
while ( !(UCSR0A & (1<<RXC0)) );
a = UDR0;
speed_1 = a;
}
PD4
送信と受信を切り替えます。