Forum: Compiler & IDEs Abstand PORTA, PINA, DDRA


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

sind bei allen AVRs die Abstände zwischen den Adressen für die 
I/O-Register gleich? Also gilt immer etwas wie:
1
    &DDRC == (&PORTC + (&DDRA-&PORTA))   // immer true?

Bei den Standard-ATmegas, die ich benutzt, paßt das (ATmega16, 32, 644), 
aber sollte ich sicherheitshalber damit rechnen, daß das mal in die Hose 
gehen kann?

von Karl H. (kbuchegg)


Lesenswert?

Soweit ich weiss gibt es auch Ausnahmen, auch wenn ich dir jetzt auf die 
Schnelle nicht sagen kann, bei welchen AVR-µC das so ist (irgendwelche 
von den großen Megas weichen ab)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich vermute, daß Du einen Compiler hast, bei dem die entsprechenden 
Headerdateien für alle AVR-Derivate enthalten sind.

Dann solltest Du mit grep/findstr leicht die jeweiligen Definitionen 
extrahieren können, um Deine These zu überprüfen.

So sieht das aus, was findstr auswirft:
1
findstr /c:"define PORTA " avr\*.h
2
3
avr\iom128.h:#define PORTA     _SFR_IO8(0x1B)
4
avr\iom1284.h:#define PORTA   _SFR_IO8(0x02)
5
avr\iom1284p.h:#define PORTA _SFR_IO8(0x02)
6
...
7
8
findstr /c:"define DDRA " avr\*.h
9
10
avr\iom128.h:#define DDRA      _SFR_IO8(0x1A)
11
avr\iom1284.h:#define DDRA    _SFR_IO8(0x01)
12
avr\iom1284p.h:#define DDRA _SFR_IO8(0x01)
13
...

Das sollte sich in einer CSV-Datei o.ä. zusammenfassen und auswerten 
lassen.

von Walter T. (nicolas)


Lesenswert?

Karl H. schrieb:
> irgendwelche
> von den großen Megas weichen ab

Danke, das reicht mir schon!

von Peter II (Gast)


Lesenswert?

schau mal bei den 4 stelligen Tinys nach (ich glaube Attiny1634) Dort 
gibt es 4 Register je Port.

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.