Hallo, welche Headerdatei gehört zu einem ATmega644 - P20, wenn man den USART benutzen möchte? Im Manual steht leider nur von den part specific header files. Die Initialisierung funktioniert nicht, weil schon UBRRH1 / UBRRL1 (wie es es im Manual steht, im Forum fand ich auch die Bezeichnung UBRR1H / UBRR1L) vom Compiler als undeklariert zurückgewiesen wird. Ich habe also mit der Suchfunktion im Verzeichnis WINAVR20100110 nach UBRRH1 bzw. UBRR1H gesucht und nichts gefunden. UBRRH würde ich finden - in Dateien mit iom..., allerdings nicht in einer, die iom644 heißt. Dann habe ich nach uart /usart.h gesucht - nichts (außer an abseitiger Stelle uart). In WinAVR scheint diese Headerdatei (noch?) nicht enthalten sein. Muß man sich die Headerdatei aus irgendwelchen anderen Quellen besorgen oder alles selbst definieren? mfg Alexander
Nach Definitionen für den zweiten UART wirst Du beim 644 lange suchen können. Den hat nur der 644*P*. Kleiner Buchstabe, große Wirkung.
Alexander Schmeil schrieb: > welche Headerdatei gehört zu einem ATmega644 - P20, wenn man den USART > benutzen möchte?
1 | #include <avr/io.h> |
Alexander Schmeil schrieb: > Die Initialisierung funktioniert nicht, weil schon > UBRRH1 / UBRRL1 > (wie es es im Manual steht, im Forum fand ich auch die Bezeichnung > UBRR1H / UBRR1L) > vom Compiler als undeklariert zurückgewiesen wird. Benutze die Bezeichnungen, wie sie im Datenblatt stehen. Wenn es dann Fehler gibt, hast du wahrscheinlich beim Compilieren nicht den richtigen µC-Typ angegeben.
Hc Zimmerer schrieb: > Nach Definitionen für den zweiten UART wirst Du beim 644 lange suchen > können. Den hat nur der 644*P*. Kleiner Buchstabe, große Wirkung. Kleiner Nachtrag: Dass nach dem Bindestrich ein P steht, macht aus dem 644 keinen 644P. Dieses P bezeichnet nur die Gehäuseform.
Stefan Ernst schrieb: > Benutze die Bezeichnungen, wie sie im Datenblatt stehen. Wenn es dann > Fehler gibt, hast du wahrscheinlich beim Compilieren nicht den richtigen > µC-Typ angegeben. <avr/io.h> ist vorhanden, UBRRH0 bzw UBRRL0 steht in der Initialisierungsfunktion, und in makefile steht # MCU name MCU = atmega644. auf dem µP ist aufgedruckt ATMEGA644 20PU 0842 (egal, wo das P ist, ich brauche nur einen UART). Leider funktioniert es nicht.
Alexander Schmeil schrieb:
> UBRRH0 bzw UBRRL0 steht in der Initialisierungsfunktion,
was laut datenblatt aber UBRR0H und UBRR0L heißen müsste...
Alexander Schmeil schrieb:
> UBRRH0 bzw UBRRL0 steht in der Initialisierungsfunktion
Die Register heißen UBRR0H und UBRR0L. Die Datenblätter sind leider oft
nicht konsistent in Bezug auf die Bezeichnungen in den Beispielen oder
dem Fließtext. Entscheidend sind die Bezeichnungen bei der Beschreibung
der Register:
1 | 18.11.5 UBRRnL and UBRRnH – USART Baud Rate Registers |
oder in der Registerliste am Ende des Datenblattes:
1 | (0xC5)UBRR0H ... |
2 | (0xC4)UBRR0L ... |
Stefan Ernst schrieb: > oder in der Registerliste am Ende des Datenblattes:(0xC5)UBRR0H ... > (0xC4)UBRR0L ... Ich habe es geändert - und die anderen Registerbezeichnungen auch und nun mault der Compiler nicht mehr. Es mußte ein Programm, das auf dem ATMEGA16 lief, auf einen ATMEGA644 übertragen werden. Leider haben sich dabei manche Register- u. BitBezeichnungen geändert. Außerdem mußte ich feststellen, daß mein Manual nicht konsistent ist (Mischung von ATmega644 und ATmega644P; ist inzwischen behoben) Ist denn wenigstens mein Versuch, die Übertragung auf asynchr. 8N1 einzustellen, gelungen?
1 | UCSR0C |= (1<<UCSZ01) |(1<<UCSZ00) ; // Asynchr 8N1 ??? |
Gruß Alexander
Alexander Schmeil schrieb: > Ist denn wenigstens mein Versuch, > die Übertragung auf asynchr. 8N1 einzustellen, gelungen?
1 | > UCSR0C |= (1<<UCSZ01) |(1<<UCSZ00) ; // Asynchr 8N1 ??? |
Ja. Ist aber andererseits auch komplett überflüssig. "Async 8N1" ist der Default-Inhalt des Registers.
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.