hallo wie kann ich nen atmega16 dazu bringen z.b. 5sec nichts zu tun und erst dann weiter zu machen, wenn z.b. 5sec vorbei sind, wie zb bei nem 5 sec 'beep'. weil mit nop braucht man ja 5000000 mal nop , bis er weitermacht um des zu ereeichen.
Timer benutzen, Overflow-Interrupt einrichten, Zähler in der Interrupt-Routine hochzählen und ausrechnen, bei welchem Vorteiler und welcher Taktfrequenz wieviele Zähl"stufen" nötig sind, bis 5 Sekunden um sind. Außerdem sollte ein Prozessor nie (!) 5 Sekunden nichts machen, denn dafür ist er viel zu schade.
Ohne Timer gehts auch, mit mehreren Warteschleifen ineinander 16 Bit von 0000 bis wieder 0000 zählen, z.B. mit adiw, brne sind das 3 Takte (?) das wären schon mal Taktfrequenz durch 3*65536,bei 8 MHz also etwa 1/40sec und dann noch eine 8Bit-Schleife drumherum mit 5*40=200 Durchläufen
Oder den scheduler von Peter Dannegger benutzen, damit bin ich grad sehr glücklich :) http://www.mikrocontroller.net/forum/read-4-49709.html#49709
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.