Forum: Compiler & IDEs Polling: for(;(1<<OK_TASTE);); //Warte solange bis OK Taste gedrückt wird.


von Andy S. (andy11)


Lesenswert?

#define OK_TASTE PB5
for(;(1<<OK_TASTE);); //Warte solange bis OK Taste gedrückt wird.

geht das so?

lg andy

von Peter (Gast)


Lesenswert?

vermutlich nicht, denn alles was du bist jetzt geschrieben hast sind 
konstanten da ist nichts dabei was sich ändern kann.

von Klaus W. (mfgkw)


Lesenswert?

evtl.:
1
   for(;(PINB&(1<<OK_TASTE)););
oder gleich:
1
   while( PINB&(1<<OK_TASTE) );
oder noch besser:
1
   while( PINB&(1<<OK_TASTE) )
2
   {
3
   }

von Andy S. (andy11)


Lesenswert?

>vermutlich nicht, denn alles was du bist jetzt geschrieben hast sind
>konstanten da ist nichts dabei was sich ändern kann.

Klaus Wachtler schrieb:
> evtl.:
>    for(;(PINB&(1<<OK_TASTE)););
> oder gleich:
>    while( PINB&(1<<OK_TASTE) );

stimmt stimmt stimmt.

Danke

von Peter D. (peda)


Lesenswert?

Klaus Wachtler schrieb:
> while( PINB&(1<<OK_TASTE) );

Da mußt Du nicht mal drücken.

Es reicht, wenn Du vom Stuhl aufstehst oder über den Teppich läufst und 
dann den Finger in die Nähe hältst.
Die CPU ist schnell genug, den Entladepuls als Drücken zu erkennen.
Oder Du machst in der Nähe nen Staubsauger an.

Ich nehm daher immer ne Entprellroutine.


Peter

von Klaus W. (mfgkw)


Lesenswert?

Es gibt auch Leute, die einen C spendieren.
Du weisst, doch, ich liebe C.

von Andy S. (andy11)


Lesenswert?

Peter Dannegger schrieb:
> Es reicht, wenn Du vom Stuhl aufstehst oder über den Teppich läufst und
> dann den Finger in die Nähe hältst.
> Die CPU ist schnell genug, den Entladepuls als Drücken zu erkennen.
> Oder Du machst in der Nähe nen Staubsauger an.

Meinst du das ernst oder soll das ein witz sein?

lg andy

von Klaus W. (mfgkw)


Lesenswert?

Zumindest bei Entprellung macht er (glaube ich) keine Witze :-)

von Andy S. (andy11)


Lesenswert?

Klaus Wachtler schrieb:
> Zumindest bei Entprellung macht er (glaube ich) keine Witze :-)
da bin ich aber beruhight,
dann schaut das für mich mal gut aus:
1
for(;(!(EINGABE_TASTEN & (1<<OK_TASTE)));)//Warte solange bis OK Taste gedrückt wird.
2
  {
3
    _delay_ms(500);
4
    lcd_setcursor(0, 4);
5
    lcd_string("....OK..drücken.....");
6
7
    _delay_ms(500);
8
    lcd_setcursor(0, 4);
9
    lcd_string("####OK##drücken#####");
10
  }

lg andy

von Klaus W. (mfgkw)


Lesenswert?

ist das jetzt dein Ernst?
Das Ding wartet ja eine glatte Sekunde.
Wenn der Benutzer in der Zeit drückt und wieder loslässt, merkst du das 
gar nicht.
Es sei denn, du machst den C groß genug :-)

von Andy S. (andy11)


Lesenswert?

Klaus Wachtler schrieb:
> Wenn der Benutzer in der Zeit drückt und wieder loslässt, merkst du das
> gar nicht.

Merke ich was garnicht.

Klaus Wachtler schrieb:
> ist das jetzt dein Ernst?

Die 500ms ergeben sich weil der Benutzer meines Menüs sehen soll dass er 
ok drücken muss.
Also deshalb das "Blinken". und mit dem auch gleich die ENtprellung.
So ist das gemeint.

lg andy

von Andy S. (andy11)


Lesenswert?

SRYYY das war a bledsinn was ich gmacht hab.

Nicht beachten. Es stimmt nämlich prinzipiell nicht komm ich grad drauf.

lg andy

von Peter D. (peda)


Lesenswert?

Andy S. schrieb:
> Meinst du das ernst oder soll das ein witz sein?

Die Leitungen zu den Tasten wirken als Antenne. Und wenn das durch 
fehlerhafte Software nicht berücksichtigt wird, gibt es Fehlreaktionen.

Du kennst bestimmt auch Geräte, die sich durch elektrostatische 
Entladungen stören lassen.


Peter

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.