Forum: Mikrocontroller und Digitale Elektronik Was hat es mit dem URSEL-Bit auf sich?


von Paul H. (powl)


Lesenswert?

Hi,

warum ist denn z.B. beim ATmega16 das URSEL-Bit notwendig? Wieso kann 
man UCSRC nicht wie jedes andere Register auslesen und schreiben?

mfg PoWl

von Markus E. (engelmarkus)


Lesenswert?

Ich zitiere:
> When the function writes to the UCSRC Register,
> the URSEL bit (MSB) must be set due to the sharing
> of I/O location by UBRRH and UCSRC.

UBRRH und UCSRC haben dieselbe Adresse :) . Durch das Bit sagt man ihm, 
was man beim Schreiben an diese tatsächlich ändern möchte.

Und weiter:
> The UBRRH Register shares the same I/O location as the UCSRC Register.
> Therefore some special consideration must be taken when accessing
> this I/O location.
> When doing a write access of this I/O location, the high bit of the
> value written, the USART Register Select (URSEL) bit, controls which
> one of the two registers that will be written. If URSEL is zero during
> a write operation, the UBRRH value will be updated. If URSEL is one,
> the UCSRC setting will be updated.
Siehe Datenblatt "USART -> Accessing UBRRH/ UCSRC Registers" Seite 162.

von Paul H. (powl)


Lesenswert?

OK, danke, ich meinte jetzt aber eher, was die AVR-Entwickler dazu 
getrieben hat diesen zusätzlichen Umstand einzuführen. Gabs da ein 
Problem?

von Markus E. (engelmarkus)


Lesenswert?

Schau mal im Datenblatt auf Seite 331. Die I/O Locations liegen zwischen 
0x20 und 0x5F, ab 0x60 beginnt der "richtige" SRAM. Scheinbar sind aber 
alle belegt. Deswegen dieser Umweg.
Bei neueren AVRs können die I/O Locations auch über 0x5F hinausgehen, 
aber wahrscheinlich wollten sie die Kompatibilität zu anderen Atmegas 
aus der Reihe erhöhen.
Bitte melden, wenn ich Schmarrn erzähle, das hab ich mir grad so 
zusammengereimt...

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
Noch kein Account? Hier anmelden.