Wenn man länger nichts mit dem Zeug zu tun hat, fängt man mehr oder weniger gleich wieder von Null an... Ich möchte gerne mit einem ATtiny13V eine Tastenabfrage programmieren. Dafür habe ich mir das bekannte Entprellung-Beispiel von hier herangezogen, dass mir einen kurzen und langen Tastendruck abfragt. Nur irgendwie will es nicht. AVR Studio bringt mir beim kompilieren zwar keinen Fehler, aber das muß ja nichts heißen. Die Einschaltzustände passen soweit, nur reagiert das Programm weder auf den kurzen noch langen Tastendruck. Wo soll ich hier ansetzen?
Mist, da is einiges schief gelaufen. Hatte den falschen AVR im AVR Studio angegeben, klar dass dadurch keine Fehler sichtbar werden. Habe den Code jetzt mal an den ATtiny16 angepasst. Allerdings tut sich trotzdem nichts.
Dann darfst du dich nicht wundern wenn du dem Timer seinen Interrupt abdrehst.
Dann mußt du mir aber erklären warum das in dem Beispiele: http://www.mikrocontroller.net/articles/Entprellung nicht passiert. Der Fehler muß wo anders liegen. Habe das Programm auch mal durch den Simulator von AVR-Studio gejagt und da scheient alles korrekt abzulaufen.
Weil die interrupts in get_key_press wieder aktiviert werden. Füge nach deinem Funktionsaufruf get_key_short ein sei(); hinzu und es sollte funktionieren.
Das hat leider nichts bewirkt. Abgesehen davon habe ich mich ja genau an das Beispiel gehalten. Ich hab mal den Schaltplan dazu gezeichnet, vielleicht liegt ja hier der Hund begraben, wobei da eigentlich nicht viel drann ist.
Ok, 1 Fehler hab ich schon gefunden. Beim Ttiny13 liegt der Teiler im TCCR0B und nicht im TCCR0A. Damit ich auf die 10ms komme, muß ich vermutlich auch den TCNT0 hier anpassen: TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); Der AVR läuft momentan mit dem Tankt von 4800000 Hz
Zeig mal deinen neuen Code. Hast du den Watchdog aktiviert? Wenn ja deaktiviere in und trenne den avr von der Stromversorgung. Der muss aus bleiben.
Guck mal, ob Du einen Timerinterrupt richtig hinkriegst. Programmiere einen Timerinterrupt alle 10ms und zähle darin ein Variable bis 100 und toggle dann ne LED. Die LED muß dann alle 1s umschalten. Und nimm besser den CTC-Mode, dann brauchts kein Reload im Interupt. Nur die älteren AVRs konnten noch kein CTC. 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
