Hallo,
- I/O sind die unteren IO-Register
- Extended I/O sind die memory mapped IO-Register (oberer Bereich, gibts nicht immer)
- Data ist das SRAM
In dieser Reihenfolge ist auch der Speicher aufgebaut.
das sieht man auch gut im Datenblatt ...
Beim Mega8-Datenblatt ist es noch etwas besser zu sehen als beim
Mega48/88/168. Beim Mega8 sind die CPU- und Funktionsregister alle
IO-Mapped. Beim Mega48/88/168 sieht man das manche Funktionsregister
nicht mehr in den IO-Bereich gepaßt haben und bereits als extendend im
Memory-Bereich des Adressbereichs liegen.
Der gesamte Adressbereich ist also durchgängig mit den CPU-Registern,
den Funktionsregistern, den Extendend Funktionsregistern und dann dem
normal benutzbarem Speicher belegt. Was IO- und was Memory-Bereich
ist, das hängt auch damit zusammen wieviel Bits man bei den 16Bit breiten
Befehlen für die interne Adressierung der Register definiert hat.
wie man sieht sind in dem Befehlscode 5 Bit für das Quellregister R0..31
und 6 Bit für das IO-Register vorgesehen. Durch diese Begrenzung
wird festgelegt ob das Ziel noch im IO- oder bereits im Memory-Bereich
des Adressraums liegt.
Gruß
Dino