Hi, ich habe ein Problem. Ich hab den AVR ATmega 644P mit 20Mhz Quarz Oszi. Ziel ist es, den USART zum laufen zu bringen. Hier der Code (C): #include <avr/io.h> // ================================= // ===== USART initialisieren ===== // ================================= void init_usart () { // Baudrate festlegen (Datenblattseite 190) UBRR0L = 129; // USART auf senden und empfangen einstellen UCSR0B = (1<<RXEN0)|(1<<TXEN0); // Stopbits einstellen. (USBSn auf 1 = 2 Stopbits - 0 = 1 Stopbit? UCSR0C = (1<<USBS0)|(3<<UCSZ00); // 8-bit Übertragung UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00); } // ================================= // ===== USART-Sendefunktion ===== // ================================= void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ) ; /* Put data into buffer, sends the data */ UDR0 = data; } // ================================= // ===== USART-Empfangsfunktion ===== // ================================= unsigned char USART_Receive( void ) { /* Wait for data to be received */ while ( !(UCSR0A & (1<<RXC0)) ) ; /* Get and return received data from buffer */ return UDR0; } int main(void) { init_usart(); while(1) { //USART_Transmit(USART_Receive()); USART_Transmit('a'); } } Der Schaltplan sieht so aus: http://www.avr-praxis.de/forum/attachment.php?attachmentid=887 Bilder auf meinem Steckboard gibt es hier: http://img25.imageshack.us/gal.php?g=img0196r.jpg Spannungen an den Kondensatoren: C3 = 8,40V C4 = 8,90V C5 = 4,47V C6 = 8,90V Phänomen: (Hab einen USB-RS232-Dongle) 1. Stom an => Rote LED leuchtet 2. RSR232 Stecker auf die Buchse ohne USB-Eingesteckt!! => Blaue LED leuchtet schwach und Rote unverändert. 3. USB-Stecker an PC => Blaue leuchtet heller und während der Dongle erkannt wird (dieses Geräusch, wenn man ein USB-Gerät einsteckt) blinkt sie unregelmäßig am hellsten)
Nur zur Info, habe es vergessen zu schreiben. Die Rote LED ist senden und die Blaue empfangen. Der eigentlich müsste ich im TErminalprogramm nur "a"s sehen
1 | // Stopbits einstellen. (USBSn auf 1 = 2 Stopbits - 0 = 1 Stopbit?
|
2 | UCSR0C = (1<<USBS0)|(3<<UCSZ00); |
3 | |
4 | // 8-bit Übertragung
|
5 | UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00); |
Lies dir im Datenblatt den Abschnitt über "Accessing UBRRH/ UCSRC Registers" durch. Das geht so einfach nicht. Für allererste Test hat es sich bewährt, die default-Einstellungen zu benutzen. Lass UCSR0C einfach in Ruhe, und stell deinen PC auf 8bit, 1 stop bit, no parity. Oliver
Uuups, Mega644. Bei dem klappt das doch mit UCSR0C ohne weitere Verrenkungen. Oliver
Fehler gefunden. Manchmal ist man einfach zu Dumm. Habe die Belegung am Stecker gespiegelt. Jetzt geht es.
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.