Hallo,
ich habe eine RS232 Verbindung zwischen ATMEGA16 und seriellem
Port des PC aufgebaut. Mein Code sieht dabei folgendermaßen aus:
Code:
// external clock speed (12.0 MHz)
#define CPU_SPEED 12000000
// Baudrate for USART Interface
#define UART_BAUDRATE 9600
// UART UBRR Value
#define UART_UBRR ((CPU_SPEED/(16l*UART_BAUDRATE))-1)
// init USART transmit
UBRRH = (unsigned char)(UART_UBRR>>8);
UBRRL = (unsigned char) UART_UBRR;
// enable USART transmit
UCSRB |= (1<<TXEN); // set UART TX
UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); // Asynchronous 8N1
// wait for empty transmit buffer
while ( !(UCSRA & (1<<UDRE)) ) ;
// put data into buffer and send
UDR = 'M';
Wenn ich dann den Controller über MAX232 an den COM4 stecke, dann
kommt dort aber nur Müll an (9600Baud eingestellt, 8 Daten, 1 Stop)
Also habe ich mir den Pin2 mit dem Oszy angesehen:
Signalpegel von -8V (High), Peaks bei +8V (Low):
0 1 0 1 1 0 0 1 0 dann immer 1 (Stop+Ruhe)
das würde also einem Startbit und einem invertierten M (0 1 0 0 1 1 0 1) entsprechen.
Wo liegt jetzt das Problem, dass ich kein M bekomme?
Ach so: Die Breite eines Bits beträgt laut Oszy etwas über 100µs, also
genau 9600 Baud, hier liegt das Problem demnach nicht!
DANKE für Hilfe
Gruß
RICOLA
Lesezeichen