ricola
23.10.2005, 19:29
Hallo,
ich habe eine RS232 Verbindung zwischen ATMEGA16 und seriellem
Port des PC aufgebaut. Mein Code sieht dabei folgendermaßen aus:
// 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
ich habe eine RS232 Verbindung zwischen ATMEGA16 und seriellem
Port des PC aufgebaut. Mein Code sieht dabei folgendermaßen aus:
// 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