Forum: Mikrocontroller und Digitale Elektronik Pointer von PORTn auf DDRn zeigen lassen


von Besc (Gast)


Lesenswert?

1
unsigned int* portAddress = ((unsigned int*)&PORTB);
Ausgabe ergibt 0x38;
1
portAddress--;
Ausgabe ergibt 0x36;

Der Pointer 'portAdress' zeigt auf PORTB des AtMegas128 (0x38).
Im Datenblatt erkennt man Adresse 0x37 ist DDRB und Adresse 0x36 ist 
PINB.
Meine Absicht ist es nur die Adresse eines Ports zu übergeben und 
mittels Subtraktion von 1 die Adresse des zugehörigen DDRs zu ermitteln.

Doch wie im Code oben zu sehen bekomme ich für 0x38 - 1 = 0x36.
Eine andere Ausgangsadresse (DDRn, PINn) und Nutzung von Addition kam 
zum selben Ergebnis.

von holger (Gast)


Lesenswert?

>portAddress--;
>
>Ausgabe ergibt 0x36;

Natürlich tut es das bei einem Pointer auf 16Bit.

von spess53 (Gast)


Lesenswert?

Hi

>Meine Absicht ist es nur die Adresse eines Ports zu übergeben und
>mittels Subtraktion von 1 die Adresse des zugehörigen DDRs zu ermitteln.

Passt aber nicht bei PinF.

MfG Spess

von Besc (Gast)


Lesenswert?

Danke, daran hatte ich garnicht gedacht.
1
unsigned char* portAddress = ((unsigned char*)&PORTB);

von Besc (Gast)


Lesenswert?

> Passt aber nicht bei PinF.
Stimmt, danke. Bisher nur nach PORTn und DDRn geschaut.

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.