Hallo an Alle! Ich versuche das 1.Mal die UART zu verwenden und komme nicht so recht weiter, obwohl ich schon sämtliche Beiträge dazu gelesen habe. Also bitte nicht sauer sein, wenn es für Euch alter Kaffee sein sollte. Ich möchte Daten am PC empfangen und benutze folgendes Programm: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #define F_CPU 8000000 /* 8Mhz */ #define UART_BAUD_RATE 9600 /* 9600 baud */ #define BAUD (F_CPU/(UART_BAUD_RATE*16l)-1) void USART_INIT( unsigned int baud) { UBRRH = (0x00); UBRRL = (unsigned int) baud; UCSRB = (1<<RXEN) | (1<<TXEN); UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0); } void USART_Transmit(unsigned char data) { while ( !(UCSRA & (1<<UDRE))) ; UDR = data; } void main(void) { USART_INIT(BAUD); for(;;) { USART_Transmit('H'); USART_Transmit('a'); USART_Transmit('l'); USART_Transmit('l'); USART_Transmit('o'); USART_Transmit(0x0A); USART_Transmit(0x0D); } } Leider empfange ich nur Müll. Ich besitze das STK500 und ich denke es liegt an der Programmierung des internen Taktes? Ich programmiere das STK500 gleich mit WINAVR, wo ich auch das Programm schreibe. Was für Einstellungen könnten jetzt noch falsch sein????? Bitte helft mir....ich verzweifle bald!!! Danke Thomas
Den externen Oszilator mußt du über die Fuses konfigurieren. Wie das allerdings bei deiner Software funktioniert weiß ich nicht. Ansonsten mach es eben mit Pony Prog, da klappt es wunderbar. Hier steht wie's geht: http://www.elektronik-projekt.de/include.php?path=content/articles.php&contentid=29&PHPKITSID=563c6048af9592f5f67cc445b69b4ca5
der interne Takt vom STK500 beträgt maximal 3,68MHz. Somit ist deine eingestellte Baudrate viel zu niedrig. Setze einfach F_CPU gleich 3680000, und es müsste funktionieren. Gruß Rahul
Den internen Takt des STK kannst Du in der Karte "Board" ablesen (wenn Du die Programmiersoft aufgerufen hast. Read Osc.
Man kann auch den Takt über ein externen Quarz erzeugen, dazu muss man den Jumper OSCSEL in Position 2-3 bringen. Auf dem Stecker CRYSTAL kann man nun ein eigenen Quarz anbringen. Dann musst du bei Fuses wie oben schon Britneypunter gesagt hat genaue Einstellungen machen. Dann sollte es eigentlich gehn. PS ich hab das mit 8 MHz auch schon versucht es kommt nur müll an, ich weiss bis heut nicht was das genau ist. Ich hab dann wieder auf die 3,68 Mhz gewechselt und es ging wieder. Kann auch sein, das dein µC nicht mehr als 3,68 Mhz unterstützt ? Oder die 8 Mhz nicht in den Specs deines µC liegen ? Mal anderes Quarz versucht ?
Hallo an Alle! Erstmal vielen Dank für Eure zahlreichen Antworten. Leider habe ich es noch nicht ganz in den Griff bekommen, aber ich habe folgendes herausgefunden. Und zwar ist noch der interne Takt von 1MHZ voreingestellt. Ich habe in meinem Programm zur Berechnung der Baudrate auch 1MHz genommen. Bei 9600 Baud bekomme ich ein "Ä" übertragen, obwohl ich ein "D" senden wollte. Oder bei 55hex empfange ich D5hex. Läßt sich daraus schließen, dass der interne Takt nicht genau genug ist? Wie kann man den internen Takt ausschalten? Habe den letzten Beitrag gelesen. Aber ich wollte eigentlich keinen anderen Quarz stecken, sondern auf dem STK500 einen anderen einstellen. Da kann man doch auch bis 3,68MHZ einstellen. Nur was muss man noch ändern, damit dieser auch verwendet wird? FUSEBITs??? Wenn ja, welche? Vielen Dank.... Ciao Thomas
Hallo an Alle! habs jetzt hinbekommen, dank ext. Oszillator vcm STK500. Änderung der Fuses war notwendig!!! DAnke an Alle!!! Brauche bestimmt bald wieder mal Eure Hilfe!!! Ciao Thomas
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.