hey, serielle schnittstelle des mega32 initialisieren : //---- enable receiver and transmitter + receive interrupt ----// UCSRB = BIT7 | BIT4 | BIT3; -> OK //------------- set baud rate ---------------------------------// UBRRH = 0x00; // 115200 baud @ 11.0592MHz UBRRL = 0x05; -> OK //------------- set frame + data format -----------------------// UCSRC = (BIT7 | BIT2 | BIT1); // 8data + 1stop (0x86) -->>>>> .. das sch... register lässt sich nicht setzen emulator mkII : wenn ich das datenformat (register UCSRC) setzen will, wird der wert nicht ins register übernommen. diese register werden unmittelbar nach dem reset gesetzt (keine int-requests, keine timer, ...) habe schon alle möglichen variationen probiert ... ohne erfolg !!!! vielleicht kann mir jemand helfen ?!? thx neubi
> //------------- set frame + data format -----------------------// > UCSRC = (BIT7 | BIT2 | BIT1); ich hoffe mal hinter Bit7 steht dann (per define oder so) (1<<7) weil wenn da nur die 7 hintersteht machst du nix anderes als (7 | 2 | 1) und das ist sicher nicht das was du willst. Gruß Fabian
#define BIT0 0x01 #define BIT1 0x02 #define BIT2 0x04 #define BIT3 0x08 #define BIT4 0x10 #define BIT5 0x20 #define BIT6 0x40 #define BIT7 0x80 ... und der dreck geht noch immer nicht :) ...
Muss es denn kompliziert sein ? UCSRC = (BIT7 | BIT2 | BIT1); wird zu : UCSRB = 0x83; Z.
Neubi wrote: > #define BIT0 0x01 > #define BIT1 0x02 > #define BIT2 0x04 > #define BIT3 0x08 > #define BIT4 0x10 > #define BIT5 0x20 > #define BIT6 0x40 > #define BIT7 0x80 > > > ... und der dreck geht noch immer nicht :) ... Nicht, dass die Bits schon als Makro in der io.h (avr-gcc vorrausgesetzt) mit den Namen aus dem Datenblatt vorhanden wären, und die Benutzung dieser, das Programm auch übersichtlicher gestalten würde. > UCSRC = (BIT7 | BIT2 | BIT1); // 8data + 1stop (0x86) Bis auf die total sinnfreien Bezeichnungen stimmt es. Wie wäre es mit etwas mehr Code?
//------------- set frame + data format -----------------------// UCSRC = (BIT7 | BIT2 | BIT1); // 8data + 1stop (0x86) -->>>>> .. das sch... register lässt sich nicht setzen Das was du da machst ist völlig in Ordnung. Brenn das mal in einen ATMega32. Wenn es funktioniert schmeiss deinen Emulator weg. Holger
Du hast natürlich im Datenblatt die geschichte mit der I/O Adresse von UCSRC und UBRRH gesehen und natürlich in der Hilfe für das AVR-studio (in der auch ALLE anderen Atmel-sachen die zu AVRs gehören beschrieben sind) gesehen, dass man mit dem JTAG das UCSRC GAR NICHT lesen kann (hab in der Hilfedatei nach "UCSRC" gesucht/suchen lassen...). steht unter "special considerations"-> "JTAG Interface specific considerations" sry, bin ein bischen sarkastisch und zu belesen ;)
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.