Forum: Mikrocontroller und Digitale Elektronik sbit dynamisch?


von D_HH (Gast)


Lesenswert?

Moin zusammen,

Ich programmiere mit dem 167cs von Infineon.
Mein Problem:

Ich habe 2 Signale die abwechselnd über einen Eingang eingelsen werden 
sollen.

Wenn ich vorher beide Pins über sbit deklariere:

sbit Signal1 = 2^0;
sbit signal2 = 2^1;

und später im Programm sage:
if(Auswahl == 1)
    Input = Signal1;
else
    Input = Signal2;

klappt es nicht.

Input ist als volatile Variable deklariert, da sie in einigen ISR und im 
Hauptprogramm eingelesen wird.

Wie kann ich es sonst machen? Kann man es irgendwie dynamisch machen?

Gruß
D

von Klapptwohl (Gast)


Lesenswert?

Wenn es "nicht klapp" dann liegt das nicht an dem gezeigten Code, der 
ist korrekt so.

Für weitere Hinweise müsste "klappt nicht" näher definiert werden.

von Matthias (Gast)


Lesenswert?

Was verstehst du unter "dynamisch" in diesem Fall?

Deine sbit-Deklarationen sind zumindest missverstaendlich fuer den 
Compiler. Meinst du vielleicht P2^0 und P2^1?
Nicht vergessen im DP Register die Pins zu Eingaengen zu machen.

von Peter D. (peda)


Lesenswert?

Sicher daß die Ports an der absoluten Adresse 0x02 stehen?


Peter

von D_HH (Gast)


Lesenswert?

Danke!
Meine auch

sbit Signal1 = P2^0;
sbit signal2 = P2^1;

DP Register sind gesetzt.

Wahrscheinlich liegt mein Problem daran, dass ich, wenn, ich den Port 
ändere auch eine Neu-Synchonisation auf die Empfangsdaten machen muss.

von Realist (Gast)


Lesenswert?

Du glaubst aber nicht etwa dass du auf den jeweiligen Port zugreifen 
kannst indem du auf "Input" zugreifst?  Das geht natürlich nicht.
Möchtest du sowas wie einen Zeiger auf den Port? Das geht nicht, es gibt 
keine Zeiger auf Bits.
Immer wenn du auf den Port zugreifen willst musst du "Auswahl" 
auswerten.

von AKKS (Gast)


Lesenswert?

Warum schreibst du signal2 einmal groß und einmal klein?

Ist dass der Fehler?

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.