Forum: Compiler & IDEs Internal Pullup funktioniert nicht


von Michael R. (mray)


Angehängte Dateien:

Lesenswert?

Hallo,

 ich habe ein Problem mit dem Internal Pullup. Das Setzen des internen 
Pullups zeigt keine Wirkung, die Schleife in der Funktion Setup wird 
offensichtlich, ohne das der Taster gedrückt wird, immer wieder 
durchlaufen, so dass die Anzeige flackert. Wenn ich einen externen 
Widerstand einbaue, funktioniert alles korrekt, jeder Tastendruck zählt 
die Variable tmpMinute um eins hoch und zeigt diese an. Im Debugger 
läuft übrigens auch alles korrekt (mit internem Pullup).
Was kann es sein?

TIA

Mray

von (prx) A. K. (prx)


Lesenswert?

Wer setzt denn EndFlag?

NB: Bei lokalen Variablen ist volatile meist unnötig.

von Michael R. (mray)


Lesenswert?

Das Programm ist noch in Arbeit, EndFlag wird noch nicht gesetzt, soweit 
bin ich noch nicht. Mir ist natürlich klar, dass in dem jetzigen Zustand 
die Schleife nie verlassen wird, im Moment möchte ich das korrekte 
hochzählen auf Tastendruck realisieren.
Ohne volatile habe ich es übrigens nicht zum Laufen bekommen, alle 
Befehle in der die Variablen vorkamen wurden nicht ausgeführt. Mit 
volatile funktionierte es tadellos. Ich hatte das auch so verstanden, 
dass ich volatile nur verwendedn muss, wenn die Variablen in 
Unterfunktionen verändert werden, aber wie gesagt, es klappte nur mit 
volatile.

von Stefan P. (form)


Lesenswert?

ersetze
PIND = 0b00001111; /* internal Pullups */
durch
PORTD = 0b00001111; /* internal Pullups */


ersetze
if (!(PIND & 1<<2))
durch
if (!(PIND & (1<<2)))

von Michael R. (mray)


Lesenswert?

Autsch, da hätte ich auch selber drauf kommen können.
Jetzt funktioniert als wie es sollte.

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.