Hallo, Ich habe einen externen Interrupt. Wenn ich den Pushbutton druecke sollen meine LEDsihren Zustand aendern (an/aus). Das funktioniert auch ganz gut, aber es geschieht nicht sofort, sondern in zwei Stufen: zB wenn alle LEDs an sind: Ich druecke den Interrupt-> die LEDs leuchten schwaecher (ca 1Sekunde)->danach gehen sie ganz aus. umgekehrt genau so. Wenn ich die LEDs einfach ansteuere geht das fix: direkt voll an oder voll aus. In der Interruptservice-Routine aendere ich einfach den Status der Bits. Warum sind geht das da nur so langsam und in zwei Stufen? ...verwende einen ATMega16. mg, Johannes
Aha! und was nun? wie entprell ich den nun? in SW oder in HW(reicht da ein TP mit Kondensator und Wiederstand? welche Werte?)? mg, Johannes
mach das per Sofware. (weniger Aufwand) Dazu gibt es in der Codesammlung nette Beispiele... Und Tasten fragt man eher nicht per Interrupt ab, solange der Controller nichts wichtigers zutun hat.
Ich frag die Taste nicht ab... sie ist am INT0 Pin angeschlossen. Wenn man sie drueckt erzeugt sie einen Interrupt. Ist das nicht Standard so? kann man das eleganter machen? mg, Johannes
Tasten an normale Portpins anschließen, und zwar nach Masse. Den internen PullUp des betreffenden Portpins aktivieren. Einen Timer zyklisch (z.B. alle 10ms) den Pin testen lassen (über Overflow-Interrupt und eine kleine ISR). Ein Flag anlegen. Taster mindestens 2x lesen und Flag entsprechend setzen, wenn beide Male der gleiche Pegel gelesen wird, Schaltvorgang auslösen, ansonsten weiter abfragen, bis sie 2x denselben Wert hat. Das funktioniert dann für beide Schaltzustände an und aus gleich gut.
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.