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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren