Ich will auf einem AT MEGA 644 ein Zeichen/ String empfangen. Kann ich das so realisieren?: main: ... if(String[0] == 'D') { PORTC|= (1<<PC4); ... ISR(USART0_RX_vect) { String_empf[n] = UDR0; // empfangenes im String speichern n++; // Zähler erhöhe } Oder wie prüfe ich ab, ob das erste Zeichen zB ein D ist?
Problem, ich komme nicht in die ISR(USART0_RX_vect)woran könnte das liegen? Initialisiert hab ich das ganze: #define UART_BAUD_RATE 9600 // Baudrate = 9600 Baud UBRR0 = (F_CPU / (UART_BAUD_RATE * 16L)) - 1; //Baudrate UCSR0C = (3 << UCSZ00); // 8bit, no parity, ein Stoppbit UCSR0B = (1 << RXEN0)|(1 << RXCIE0); // Empfänger freischalten UCSR0B = (1 << TXEN0)|(1 << TXCIE0); // Sender freischalten
hallo, im zweiten setzen des control-status-register überschreibst du wieder das erste setzen. denke ich jdf. bye kosmo
UCSR0B = (1 << RXEN0)|(1 << RXCIE0); // Empfänger freischalten UCSR0B = (1 << TXEN0)|(1 << TXCIE0); // Sender freischalten Kosmo hat Recht. Also entweder so: UCSR0B = (1 << RXEN0)|(1 << RXCIE0) | (1 << TXEN0)|(1 << TXCIE0); // Empfänger und Sender freischalten Oder so: UCSR0B = (1 << RXEN0)|(1 << RXCIE0); // Empfänger freischalten UCSR0B |= (1 << TXEN0)|(1 << TXCIE0); // Sender freischalten
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.