Port speichern

OP #1067747
Lesenswert?

Hallo Leute,

eigentlich habe ich das Gefühl, es ist eine einfache Frage, doch da ich 
im Forum nichts gefunden habe, bin ich mir da nicht mehr so ganz sicher.

Ich arbeite mit einem ATmega8 Prozessor und möchte gerne einen Port in 
einer Variable speichern.

Im Sinn von:
1
 if(channel==1) //irgend eine if-Verzweigung
2
 {
3
   myPort = PORTD; 
4
 }
5
 else
6
 { 
7
   myPort = PORTB;
8
 }
9

10
 myPort |= 0x20; //Diese zuweisung befindet sich natürlich irgendwo

Der Sinn dabei besteht jetzt darin, diese if(channel)-Abfrage nicht 
jedes mal durchführen zu müssen.

Frage: Was für ein Typ muss myPort sein?

Ich habe mit Pointern gespielt und Adressen gespeichert aber irgendwie 
funktioniert das nicht so ganz. Im Grunde ist "PORTD" ja nichts anderes 
als eine bestimmte Adresse im uC, also müsste ich die neue Variable 
genau gleich benutzen können.

Hat jemand eine Idee?
OP #1067773
Lesenswert?

Stefan, du hast doch recht, so funktioniert es!

Das Problem liegt in diesem Fall an einem anderen Ort. Als ich deinen 
Code noch einmal im "main()" ausprobiert habe, hat es funktioniert.

Das Problem liegt wohl im c++, im Kontruktor fülle ich myPort und in 
einer Member-Funktion führe ich sie aus.

Meld mich nach dem Mittag :)
Gast #1067799
Lesenswert?

Auch wenn es erledigt ist eine kurze Verständnisfrage:
Du willst also wirklich den Inhalt des PORTx-Registers lesen (den Du ja 
selbst irgendwann mal irgendwie aktiv gesetzt haben mußt) und nicht den 
aktuellen Pegelstand am Eingang (PINx)? Aber jetzt nicht sagen, daß das 
ja das Gleiche ist, denn das muß es nicht!
Gast #1067812
Lesenswert?

@Stefan Ernst
> Toll. Der Unterschied zu meinem Code ist dann genau welcher?

Der Unterschied ist :
Dein Code wurde ein paar Minuten vorher gepostet. Ich habe 
zwischenzeitig die Antwort hingeschrieben und vor'm absenden nicht in 
nem anderen Browser Fenster nachgeschaut ob Du schon jemand geantwortet 
hat.

Jetzt muss ich entweder schneller nachdenken und schreiben - oder 
einfach in Zukunft nicht mehr antworten um solch eine Fopas zu 
vermeiden.
#1067860
Lesenswert?

Lutz wrote:
> Auch wenn es erledigt ist eine kurze Verständnisfrage:
> Du willst also wirklich den Inhalt des PORTx-Registers lesen (den Du ja
> selbst irgendwann mal irgendwie aktiv gesetzt haben mußt) und nicht den
> aktuellen Pegelstand am Eingang (PINx)? Aber jetzt nicht sagen, daß das
> ja das Gleiche ist, denn das muß es nicht!

Schau dir den funktionierenden Code an, dann weißt du auch, was er 
wirklich will.
OP #1067909
Lesenswert?

Ok, das Ding läuft.
Danke für die Antwort. Die Lösung hatte ich eigentlich vor dem Post 
schon, nur lief es nur nicht :?
Habe den Port nicht als Ausgang gsesetzt gehabt kopfklatsch Sorry!

Na egal
@Diskusion: Was ich wirklich will ist nicht so entscheidend, es läuft 
genau so wie ich es möchte :)

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