Registeradresse von z.B. PORTB?

Gast #181023
Lesenswert?

Wie bei jeder anderen Variable:
uint8_t* zeiger_auf_portb = &PORTB;
*zeiger_auf_portb |= 1; // bit 0 setzen

Ich vermute aber stark, dass du das nicht gemeint hast, da das absolute
C-Grundlagen sind, die man wirklich beherrschen sollte bevor man sich an
die Mikrocontrollerprogrammierung wagt.
Daher bitte ich deine Frage etwas zu präzisieren.
Gast #181024
Lesenswert?

Hmm - auf
volatile uint8_t* x = &PORTC;

bin ich selber schon gekommen - hätte nur nicht gedacht, dass das mit
sowas wie PORTC oder so funktioniert -

Mich hat nur das Resultat von
  *x = 0xaa;
wird zu:
 a0c:  8a ea         ldi  r24, 0xAA  ; 170
 a0e:  80 83         st  Z, r24

verwirrt - ich dachte, dass der IO-Bereich vom RAM getrennt wäre - das
ist aber tatsächlich nicht so -
0x0000 - 0x001f = GPR
0x0020 ->0x005f = IO-Register und dann ab
0x0060 das interne RAM ...

Trotzdem danke für deine Antwort -
ich denke wohl zu kompliziert :)
Gast #181026
Lesenswert?

Die AVRs sind genial ... nur die jetzigen ATMEGAs sind schon teilweise
überladen ... mit internen Oszillator, JTAG und und und was man alles
erstmal deaktivieren muss, bevor sich das Ding wie ein classic-AVR
verhält g

Hab lange Zeit die AVRs nur in Assembler programmiert und hab jetzt ein
kleines Projekt, bei dem es sich lohnt mal den avr-gcc/g++
auszuprobieren ... bis jetzt bin ich ja echt beeindruckt - vorallem die
Unterstützung für c++ spezifische Sprachkonstrukte wie Klassen usw
gefallen mir sehr gut ...

Soll zwar noch Probleme mit der STL geben - aber die brauch ich bei
meinem Projekt eh nicht ...

So - schluss mit der Schwärmerei und weiter ans Werk :)

thx und n8

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren