Forum: Mikrocontroller und Digitale Elektronik Probleme mit Tasterentprellung


von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ich habe vor kurzen eine erste Schaltung mit einem Mikrocontroller 
aufgebaut. Es handelt sich dabei im einen ATtiny2313.

Prinzipell handelt es sich bei der Schaltung um ein einfaches 
Tastenaggregat. Für die benötigte Entprellung der Taster habe ich die 
Entprellroutine von Peter Dannegger verwendet.

Grundlegen funktioniert das Programm auch. Es gibt nur ein Problem das 
denke ich mit der Entprellung zusammenhängt.
Man muss jeden Taster einen kurzen Moment festhalten damit der Wert 
angenommen wird. Mit kurz meine ich schon eine merkliche Zeit. 
Normalerweis tippt man einen Taster an und der Wert wird übernommen.

Ich denke das ich irgendwo einen Programmierfehler gemacht habe, welchen 
ich nicht als solchen erkenne. Ich kenne mich bis jetzt nur grundlegend 
mit der Programmierung aus. Es war schon ein ganzen Stück Arbeit sich 
erstmal einzuarbeiten.

Es währe sehr nett wenn mir jemand helfen könnte. Es ist wahrscheinlich 
nur ein kleiner Fehler der behoben werden muss.

Gruß

Matthias

von Vuvuzelatus (Gast)


Lesenswert?

Stimmt die Taktfrequenz? Ist vielleicht die CKDIV8-Fuse gesetzt (das ist 
sie nämlich im Auslieferungszustand des Controllers, siehe Datenblatt)? 
Dann ist f_Takt = 1/8 f_Quarz.

Testmöglichkeit: Eine der LEDs mit z. B. 1 Hz blinken lassen und 
checken, wie schnell sie wirklich blinkt.

von Matthias (Gast)


Lesenswert?

Unfassbar genau das war es.
Dieses Fuse-Bit ist mir entgangen. Da bin ich wohl in ein typische 
Anfägerfalle getappt.

Vielen Dank für die Hilfe, jetzt funktioniert alles so wie es soll. Ich 
hab auch gleich einen Kommentar in die Programmierung gesetzt, damit das 
in Zukunft nicht mehr passiert.

Gruß

Matthias

von Hannes L. (hannes)


Lesenswert?

Matthias schrieb:
> Dieses Fuse-Bit ist mir entgangen.

Dieses Fusebit brauchst Du aber nicht zu deaktivieren. Du kannst nämlich 
per Programmcode den System-Taktvorteiler auf jeden von Dir gewünschten 
Wert setzen. Suche mal im Datenblatt nach CLKPR.

...

von Matthias (Gast)


Lesenswert?

Hmm, ich hab einfach das Fusebit CKDIV8 deaktiviert.
Hat das irgendwelche Nachteile?

von Vuvuzelatus (Gast)


Lesenswert?

>Hmm, ich hab einfach das Fusebit CKDIV8 deaktiviert.

Allright.

>Hat das irgendwelche Nachteile?

Es kann durchaus vorteilhaft sein, einen Controller mit niedriger 
Frequenz zu takten, vorausgesetzt natürlich, er erfüllt seine Aufgaben. 
Z. B. entstehen alle "langsamen" Outputs eines Controllers letztlich 
durch mehrstufiges Herunterteilen seiner Taktfrequenz, und wenn die 
schon niedrig ist, kann man sich vielleicht eine Teilerstufe sparen, 
oder kommt mit weniger künstlichen Verlangsamungsmaßnahmen in der 
Software aus.

Ein weiterer Punkt: Die Stromaufnahme eines Controllers im Active-Modus 
steigt deutlich überproportional mit der Taktfrequenz. Deshalb ist es 
bei batteriebetriebenen Geräten sinnvoll, den Controller nur so hoch wie 
nötig zu takten.

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
Noch kein Account? Hier anmelden.