Forum: Mikrocontroller und Digitale Elektronik Problem beim Bit Löschen


von Socke (Gast)


Lesenswert?

Hallo zusammen,
Ich habe da mal wieder eine Sache wo ich nicht weiterkomme  und ich 
dankbar für einen Tipp wäre.

Zum Ablauf, ein Antrieb fährt auch, und Meldet seinen offenen Zustand 
über einen Enlagenschalter und lässt einen Lüfter laufen. Fährt die 
Klappe nun wieder zu(Enlagenschalter weg), soll der Lüfter aufhören zu 
laufen.

Meine Idee wahr bisher:

If (PIND&(1 <<PIND1)) //Wenn Antrieb auf
{
PORTA|=(1 <<PA0); // Lüfter einschalten
}else
{
PORTA&=~(1 <<PA0);//Lüfter ausschalten

Jedoch startet der Lüfter zwar wenn der Enlagenschalter die 
Startbedingung gibt, jedoch hört er nicht wieder auf wenn der Antrieb 
wieder zu fährt.

Danke


Gruß

von Joe (Gast)


Lesenswert?

Ein Bit setzt man mit einer "oder"-Verknüpfung.   z.B. or 00100000
Ein Bit löscht man mit einer "und"-Verknüpfung.   z.B. and 11011111

Joe

von Falk B. (falk)


Lesenswert?

Die Bitmanipulation ist richtig, der Fehler steckt im weiteren 
Programm.

von Socke (Gast)


Lesenswert?

Joe schrieb:
> Ein Bit setzt man mit einer "oder"-Verknüpfung.   z.B. or 00100000
> Ein Bit löscht man mit einer "und"-Verknüpfung.   z.B. and 11011111
>
> Joe

Ich wahr der Meinung das würde ich tun.

von Enlagenschalter (Gast)


Lesenswert?

Pullup oder pulldown am Enlagenschalter vorhanden? Setzt einen 
Breakpoint in den else-Zweig. Der wird bestimmt nie angesprungen.

von Tuck I. (tuckito)


Lesenswert?

Bitte poste dein komplettes Programm.
Wenn du das nicht preisgeben möchtest, schrumpfe deinen Code soweit wie 
es geht, so, dass du den Fehler noch nachstellen kannst.

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.