Eingangspegel ungleich Ausgang

Gast #2207985
Lesenswert?

Manfred W. schrieb:
> Finde ich irgendwie unhübsch. Hätte das gerne in einer Zeile gelöst.
Wenn man direkt auf die Pins zugreifen kann ist es einfach. Einige 
PIC-Compiler können das oder man nutzt eine kunstvolle Konstruktion mit 
struct/enum à la Dannegger. Ansonsten halt eine Zeile kunstvolles 
Kauderwelsch oder eine if-Abfrage, dann sinds halt zwei Zeilen und 
fertig.
Gast #2207992
Lesenswert?

Manfred W. schrieb:
> Man bräuchte ja nur den Zustand vom Eingang an den Ausgang übertragen.
Dann übertrag mal schön.

Sorry, was soll man auf solch einen Satz antworten? Zum driten Mal: Es 
geht, aber wenn es nur kosmetische Gründe hat ist das if deutlich 
besser. Packs halt in ein Präprozessormakro und verstecks irgendwo oder 
was weiß ich.
Persönliche Seite #2208400
Lesenswert?

Manfred W. schrieb:
> Also wenn Eingang PINC3 = 1 dann Ausgang PIND4 = 0 und umgekehrt. Also
> immer das Gegenteil.

Manfred W. schrieb:
> weil ich dann 2 Abfragen machen müßte. Für jeden Zustand eine. Finde ich
> irgendwie unhübsch. Hätte das gerne in einer Zeile gelöst.


(PINC & (1<<3)) ? (PORTD &= ~(1<<4)) : (PORTD |= (1<<4))


...sollte funktionieren (ist mein erster Versuch mit dem 
Bedingungsoperator "?")

Gruß,
Magnetus
Persönliche Seite #2210086
Lesenswert?

abc schrieb:
> Magnus Müller schrieb:
>> (PINC & (1<<3)) ? (PORTD &= ~(1<<4)) : (PORTD |= (1<<4))
>
> Interessant. Der ?-Operator fiel mir auch direkt ein, aber mit PORTD =
> ()?():() wird das nichts. Deine Methode hingegen dürfte funktionieren.

Von "PORTD =" hab ich ja auch nix geschrieben.

Ich meinte das so:
1
while (1)
2
{
3
  (PINC & (1<<3)) ? (PORTD &= ~(1<<4)) : (PORTD |= (1<<4));
4
}

Ist von mir mittlerweise getestet worden. Funzt einwandfrei.
Gast #2211020
Lesenswert?

Magnus Müller schrieb:
> Ist von mir mittlerweise getestet worden. Funzt einwandfrei.
Das Gegenteil habe ich auch nicht behauptet. :-) Hab mich oben etwas 
unklar ausgedrückt, "PORTD = ... ()?():()" war meine erste Idee.

H.joachim Seifert schrieb:
> PIND.4=!PINC.3;
>
> Finde ich persönlich am schönsten.
> Leider nicht C-konform, und die meisten Compiler unterstützen das nicht.
Man kann sich da wohl mit einem speziellen ähhh "Konstrukt" behelfen was 
sich irgendwo im Forum findet, ich meine es kommt vom Herrn Dannegger. 
Ist allerdings nicht unbedingt anfängerkompatibel weil nicht ganz 
einfach zu durchschauen (aber ein tolles Beispiel für fortgeschrittene 
C-Konstrukte)...

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