Software PWM Lösungsansatz

OP #3329802
Lesenswert?
• ▲
▼
Guten Tag,

ich hänge bei einem alten, wieder hervorgebrachten Projekt. Mein 
Thermometer mit 10 RGB LEDs, von 10-30°C, je 2°C eine LED. Je kälter 
desto mehr blau, je wärmer, desto mehr rot sollen die LEDs leuchten.

Ich habe daher eine Matrix, welche die Ansteuerung der Einzelfarben 
erlaubt.

Nun hänge ich aber an folgendem Problem. Wenn ich den Code wie im Anhang 
mal testweise geschrieben auf den µC brenne:
1
int main() {
2
  while(1) {
3
    
4
    LightUpLed(0x01, 0x01, 30);
5
    LightUpLed(0x01, 0x02, 30);
6
    LightUpLed(0x01, 0x04, 30);
7
    LightUpLed(0x02, 0x01, 30);
8
    LightUpLed(0x02, 0x02, 30);
9
    LightUpLed(0x02, 0x04, 30);
10
    LightUpLed(0x04, 0x01, 30);
11
    LightUpLed(0x04, 0x02, 30);
12
    LightUpLed(0x04, 0x04, 30);
13
    
14
  };
15
};
16

17
void LightUpLed(uint8_t uRow, uint8_t uCol, int Brightness)
18
{
19
  int diff = (100 - Brightness) * 10;
20
    
21
    PORTC = ~uRow;
22
    PORTD = uCol;
23

24
    for (int i = 0; i < Brightness; i++) {
25
      _delay_us(1);
26
    };
27

28
    PORTC = ~0x00;
29
    PORTD = 0x00;
30
    
31
    for (int i = 0; i < diff; i++)
32
    {
33
      _delay_us(1);
34
    };
35
}

Dann hab ich auf den LEDs ein unwahrscheinliches Flackern drauf. Bei 
1MHz internem Oszillator ist das wohl viel zu langsam. Allerdings möchte 
ich den Takt niedrig halten, da das Teil hinterher an einem 9V Block 
läuft, und mir 10mA Stromaufnahme eigentlich eh schon viel zu viel sind.

Habt ihr irgendwelche Ideen?

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.