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