Forum: Mikrocontroller und Digitale Elektronik LED Cube Multiplexing mit Interrupt


von Blaaa (Gast)


Angehängte Dateien:

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!

von Karl H. (kbuchegg)


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.

von Blaaa (Gast)


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.

von Karl H. (kbuchegg)


Lesenswert?

Dann musst du mal deine Schaltung bzw. den Aufbau herzeigen.

von Blaaa (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.