mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Entprellung + weiterer Timer funktiert nicht


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

hab da mal ne Frage. Und zwar habe ich mir den Entpreller von P. 
Dannegger genommen und wollte damit nun nen Menü für ne LED Steuerung 
erstellen. Meine LEDs werden mittels PWM angesteuert und laufen auch 
perfekt (ohne den Entprellcode).

Mein Problem ist, dass ich wenn ich die beiden Codes verschmelzen lasse 
überhaupt keine Funktion dem ganzen entlocken kann.

Lediglich die PWM funktioniert wenn auch eeeewig langsam. SOll heissen; 
man kann zugucken wenn die Lampen je nach RGB Wert an oder aus gehen...

In der Simulation habe ich das hochzählen des Timers mit dem Entpreller 
nicht verstanden. Es wirkt irgendwie zufällig (?)

Was mir aufstösst ist, dass die Interrupts immer deaktiviert und wieder 
aktiviert werden. Das kann doch nicht gut sein?!

Wenns was hilft würd ich sonst noch den Code nachliefern. Da der Code 
aber recht lang ist und ich nicht weiß wie man den anhängt laß ich das 
erstmal lieber.

Es geht mir also erstmal Prinzipiell um die Probleme der 
Entprellungsmethode in Verbindung mit anderen Timern.

Danke und lg

Tom

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:

> Mein Problem ist, dass ich wenn ich die beiden Codes verschmelzen lasse
> überhaupt keine Funktion dem ganzen entlocken kann.

Dann hast du beim Zusammenführen irgendeinen Fehler gemacht.

> Lediglich die PWM funktioniert wenn auch eeeewig langsam. SOll heissen;
> man kann zugucken wenn die Lampen je nach RGB Wert an oder aus gehen...

Die Entrprellroutine wird in eine Timer-ISR eingefügt, die man so 
einstellt dass sie ca. alle 10ms aufgerufen wird. Die exakte Zeitdauer 
zwischen 2 Aufrufen ist ziemlich unkritisch aber auf jeden Fall so lang, 
dass sie weniger als 5% an Rechenzeit verbraucht. Ohne jetzt 
nachgerechnet zu haben: wahrscheinlich sind wir sogar unter 1%

> Was mir aufstösst ist, dass die Interrupts immer deaktiviert und wieder
> aktiviert werden. Das kann doch nicht gut sein?!

Die Operationen an sich, zwischen cli und sei, sind sehr kurz und 
verzögern die reguläre Programmausführung kaum. Wenns doch zu lang ist, 
reicht es auch in der Hauptschleife nur bei jedem 10-ten oder 20-ten 
Durchlauf abzufragen ob eine Taste gedrückt wurde.

> Wenns was hilft würd ich sonst noch den Code nachliefern. Da der Code
> aber recht lang ist und ich nicht weiß wie man den anhängt laß ich das
> erstmal lieber.

Was bitte ist an einer Tastenabfrage und einer 3-fach PWM lang?

> Es geht mir also erstmal Prinzipiell um die Probleme der
> Entprellungsmethode in Verbindung mit anderen Timern.

Ist kein allzugroßes Problem.
Man nimmt den Timer, der am langsamsten ISR-Aufrufe generiert. Wenn die 
ISR irgendwo in einem Zeitraum von 5ms bis 20ms kommen, dann passt das 
schon für die Tastenentprellung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.