4

Atmega162との間の通信を書いていPCます。

私には( によって変換された)PCBインターフェイスがあり、トランシーバーを介して に送られます。RS485RS422MAX485ADAM-4520COM 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送信と受信を切り替えます。

4

0 に答える 0