Entprellung + weiterer Timer funktiert nicht

Gast #1519213
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.