Hallo, ich hab mir mich hier grade gefragt ob es nicht auch noch sinnvollere Möglichkeiten gibt als delay_ms() um eine Zeitspanne von mehreren Minuten abzuwarten. Konkret möchte ich folgendes machen: Mit einem LM50 und einem LM335 messe ich die Umgebungstemperatur (LM50 sitzt direkt neben dem Atmega, LM335 ist etwa nen Meter weit weg). Das möchte ich aber nicht ständig machen sondern nur alle 30 Minuten. Wird eine spezieller Wert unterschritten so möchte ich für einige Minuten ein Heizelement einschalten. Ich habe hierzu einen Atmega88 der seinen Takt durch einen formschicken 8 MHz Quarz bekommt. Und wie gesagt frage ich mich ob delay_ms wirklich sinnvoll für Minuten ist oder ob es nicht besseres gibt. Für meine Anwendung ist Genauigkeit nicht soo wichtig (mir ists wurscht ob das Messintervall nun exakt 30 Minuten ist oder obs nur 29.3 Minuten sind) aber es interessiert mich nun ob und wie man es besser machen kann als mit delay_ms().
Du könntest einen hohen presacler für T1 timer und den overflow flag auswerten oder den Interrupt nutzen. prescaler=1024 bringt z.B. (8000000/1024)/65536 = 0.119... Hz
OK, Timer selbst aufbauen ist ja auch kein Ding. Das hab ich schon bei PICs gemacht. Dachte hier halt nur ich frag mal, nicht dass es da was gibt, dass ich nicht kenne (z.B. ein delay_min() oder so). Dank euch für die Info.
Schon alleine deshalb, weil delay_<irgendwas> nicht <irgendwas> an abgelaufener Zeit wartet, sondern letztlich entsprechend CPU-Zeit abwartet bzw. sinnlos verbrät. Laufen keine Interrupts, dann dauert delay_<irgendwas> tatsächlich die erwartete Zeit. Hat man dagegen 50% Rechenleistung in den ISRs, dann dauert es 2*<irgendwas>, brauchen die ISRs 90% Rechenleistung, dann ist man schon bei 10*<irgendwas>...
Guck dir mal CTC an. Also Count To Compare. Damit kannst du wirklich extrem kleine Zeitspannen machen. Meistens löst man aber eher auf Sekunden auf, und zählt damit dann einen Zähler für Sekunden und ggf. einen für Minuten hoch. Zur Einstellung für deine Taktfrequenz kannst du http://apexys-toan.blogspot.com/2011/01/avrtimercalculator.html verwenden. Mit freundlichen Grüßen, Valentin Buck
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.