Hallo an Alle, ich möchte per USART mit dem AtMega16 eine Variable von uC-1 an den uC-2 Senden. Das Programm stelle ich mir so vor: Dazu habe ich zwei Fragen: 1. Kann das so funktionieren? 2. Kann ich zu Testzwecken mit dem selben uC das gesendete empfangen? Vielen Dank. _________________________________________________ #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> int main (void) { UCSRB |= (1 UCSRB << TXEN ); // Turn on the transmission circuitry UCSRC |= (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); // URSEL bit set to select the UCRSC register // 8-bit character size UBRRH = 0x00; UBRRL = 0x03; // UBRR = 3 UCSRA |= (0<< TXC); while (1) { while ((UCSRA & (1 << TXC)) == 0) {}; // Do nothing until transmission complete flag set UDR = 0x03; // soll später meine Variable werden. } } _________________________________________________
wenn du TXD RXD verbindest, dann sollte das gehen. Das geht auch beispielsweise bei den FTDI Chips die man an den PC per USB dranhängen kann. (ist auch oft praktisch zum debuggen von diesen verbindungen!) am besten wärs du probierst den code oben einfach mal aus ;-)
Aber RxD und TxD nicht auf der TTL-Seite verbinden, wenn ein MAX232 o.ä. angeschlossen ist! Dann auf der RS232-Seite verbinden, sonst ist auf RxD sowohl der Ausgang des MAX232 aktiv als auch TxD des MC; das könnte schief gehen.
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.