Charlieplex 20 LED mit Arduino Uno\AVR; Interrupt langsam

OP (Firma: RW Electronics Inc.) #6644105
Lesenswert?
• ▲
▼
Frohe Ostern allen Foristen,

ich will mein aktuelles Projekt vorstellen. Ich möchte ca. 20 LED 
charlieplexen, mit dem Arduino Uno.
Desweiteren soll der Uno 6 Schalter und 3 Taster auswerten und 6 Servos 
steuern.
Brauchen werde ich das für ein Gleisbildstellwerk auf der Modellbahn.

Im Moment habe ich Probleme die Interruptroutine zu optimieren. Diese 
verbraucht zuviel Rechenzeit. Die
Grenze liegt bei 66666 Hz. Vielleicht stellt dies ja schon das Optimum 
dar? Aber, vielleicht hat ja
jemand Interesse und hilft mir auf die Sprünge mit Tips.

Diese Codestelle gefällt mit nicht sonderlich:
1
    //Column0
2
    if(column0_desired_pwm_value == pwm_tick){
3
      ddrByte &= ~column0;
4
      portByte &= ~column0;
5
    }else if(column_on){            //Dieser Code wiederholt sich in jeder Column
6
      ddrByte |= column0 | controlLine;    //
7
      portByte |= column0;          //
8
      portByte &= ~controlLine;        //
9
    }

Ich habe schon versucht diese Bedingung extra zu schreiben, aber ohne 
Erfolg. Entweder es leuchten
immer alle LED oder es werden andere LED mit angesteuert. Das liegt 
sicher daran, dass diese Bedingung
im else Zweige abhängig von der Vorbedingung ist.

Ich hänge mal den Code, Bilder, Schaltplan und Verdrahtungsplan mit an.
Wenn es mir nicht hilft, vielleicht anderen.
Gast #6644146
Lesenswert?
• ▲
▼
Ralf W. schrieb:
> Die Grenze liegt bei 66666 Hz.

Scheint mir jetzt zum multiplexen zu reichen.

Du willst dimmen ?

Da braucht man nur doppelt so viele Aufrufe, gesteuert z.B. durch 
compare und overflow interrupt eines timers, du könntest aber das 
100-fache schaffen. Wo ist also dein Problem ?

Antwort schreiben

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.

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.