Etwas genau eine Minute Programieren

Hallo ich habe ein Problem
Ich möchte gerne ein Programm schreiben das einen Sensor (z.b. Taster)
abfragt und das genau eine Minute lang. Mein Problem ist ich weiß nicht
wie ich das machen soll wenn ich delay sage kann ich ja nebenbei nichts
machen.

MFG Hauke Peters

unsigned long ziel_zeit;
ziel_zeit = millis() + 1000L*60L;
while( ziel_zeit >= millis() )
{
  // frage sensor ab
}

das code Fragmet oben zu schreiben dauerte leider 1 1/2 Minuten. Somit habe ich leider etwas länger als eine Minute programmiert. Ich hoffe das macht nichts. :wink:

Oliver

ne das macht nichts aber was ist wenn ich das mitten im code mache kann ich milis "flushen"
und kannst du das mit den 1000L+60L erklären also das L

Also, es spricht nichts dagegen, dieses Code-Fragment irgendwo mitten im Code zu benutzen. Das mit dem "flushen" hab ich aber nicht verstanden.

Das "L" ist an sich in diesem Fall nicht notwendig. Es handelt sich hier um den Zahlen-Anhängsel, der aus der Zahl eine "long" Zahl macht. Aber genauer müsste es eigentlich "UL" für unsigned long heissen:

unsigned long ziel_zeit;
ziel_zeit = millis() + 1000UL*60UL;
while( ziel_zeit >= millis() )
{
  // frage sensor ab
}

Mit anderen worten "1000" wäre eine vorzeichenbehaftete 16 Bit Zahl, jedoch "1000UL" ist eine vorzeichenlose 32 Bit Zahl. Es ist an sich sicherer alle Terme eines Ausdrucks vom selben Datentyp zu haben. Da "millis()" einen unsigned long zurückgibt, sollte man auch einen unsigned long dazuaddieren.

Quelle: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
Abschnitt 6.4.4.1 (Seite 54, bzw 66 im PDF)

Oliver

Erklärt mir bitte jemand wieso 60000 mSek 1,5 Minuten sein sollen?
Grüße Uwe

Das war ein Wortwitz mit dem Titel dieses Threads: Jemand sollte etwas genau eine Minute programmieren (mit kleinem p). Ich habe aber 90 Sekunden gebraucht um das Codefragment zu programmieren (hab' s gestoppt) :wink:

Tatsächlich hatte ich den Titel falsch verstanden. Ich hab mich nämlich gefragt, wieso hier jemand gesucht wird, der eine Minute lang programmiert.

Oliver