LED Cube Multiplexing mit Interrupt

Gast #3316962
Lesenswert?
• ▲
▼
Hallo,

Ich habe mir auch einen kleinen LED Cube gebaut und möchte das 
Multiplexing jetzt von Delays auf Interrupts umstellen. Dabei habe ich 
das Problem, dass zusätzlich zu den LEDs die eigendlich an sein sollen 
zusätzlich immer noch eine weitere LED in der gleichen Spalte schwächer 
mitleuchtet. Zur Veranschaulichung habe ich ein Biild gemacht und den 
Code habe ich auch gleich mit hochgeladen.
Ich hoffe ihr könnt mir helfen, falls der Fehler sehr dumm ist bitte 
nicht steinigen^^ Bin noch Anfänger...

Vielen Dank!
Angehängte Dateien:
#3317072
Lesenswert?
• ▲
▼
Schreibs mal so
1
ISR (TIMER0_OVF_vect)
2
{
3
  PORTC = 0;   // alles abschalten
4

5
  i++;
6
  if (i==4)
7
    i=1;
8

9
  if (i==1)
10
  {
11
    PORTD = PORTB = 0;    // PORTD und PORTB: Spalten
12
    PORTC = (1<<PC0);
13
  }
14
  
15
  else if (i==2)
16
  {
17
    PORTD = PORTB = 0;
18
    PORTC = (1<<PC1);
19
  }
20
  
21
  else if (i==3)
22
  {
23
    PORTD = PORTB = 1;
24
    PORTC = (1<<PC2);
25
  }  
26
}

Dadurch verschaffst du nach dem Abschalten der Ebene ganz am Anfang der 
Elektronik ein bischen Zeit in der nichts leuchtet, so dass sich kleine 
Kapazitäten entladen können und tatsächlich alles abgeschaltet und aus 
ist, ehe dann die neue Spaltenbelegung für diese Ebene aktiv wird.
Gast #3317198
Lesenswert?
• ▲
▼
Die veränderte Reihenfolge hilft leider nicht.

Zum Testen habe ich auch noch ein _delay_ms() eingefügt, was aber nur zu 
einem geringeren Leuchten führt.  Komischwerweise leuchtet mit Delay 
auch die unterste LED der Spalte etwas mit, was sie ohne Delay nicht 
tut.

Ich schalte die Ebenen über BC 635 Transistoren. Die müssten über solche 
Frequenzen von ein paar Hundert Herz eigendlich lachen, oder?
Die Spalten sind direckt am Atmega8 angeschlossen.

Danke schon mal für die Hilfe, ich hoffe wir finden den Fehler noch.
Gast #3319925
Lesenswert?
• ▲
▼
Da gibt es nicht viel herzuzeigen. Ich habe versucht das ganze so 
einfach wie möglich zu halten.
- Spalten mit einem Vorwiederstand (1k Ohm) an einen I/O Pin des 
Mikrocontrollers
- Ebenen über einen BC 635 an Ground (Basiswiderstand 4,4k Ohm)
- ein Taster mit Pull-Up (10k Ohm) am gleichen Port wie die Ebenen
- sonst die Standardbeschaltung mit Abblockkondensatoren aus dem 
Tutorial
- Stromversorgung per LM7805 und Netzteil (9V)
- die Platine ist leider ziemlich unübersichtlich, es hat gerade alles 
drauf gepasst, falls es hilft mach ich aber gerne auch ein Foto

An der Software liegt es also definitiv nicht?
Wie sieht denn bei anderen hier im Forum die Ausgabe auf den Cube aus?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.