74HC595 und ATtiny13 Lauflicht

OP #2037588
Lesenswert?

Hallo!

Ich habe eine Schaltung mit einem ATtiny13, 2x 74HC595, zwei Darlington 
Arrays und 16LEDs aufgebaut. Die LEDs sollen als Lauflicht fungieren.
Mein einziges Problem ist, dass immer wenn das erste Bit im 
Schieberegister leuchten soll (Ausgang Q0 bzw. QA (je nach hersteller)), 
dann leuchten alle LEDs an diesem Schieberegister.
Die Software sollte in Ordung sein. Ich habe zur Fehlereingrenzung 
einfach statt vorher nun einem nun ein zweites Schieberegister 
verwendet, da ich dachte, ich hätte einen Fehler in der 
Schleifenbedingung (oder dergleichen), denke aber, dass ich dies nun 
ausgrenzen kann, da auch das mittlere (also 9.) Bit den gleichen Fehler 
beim zweiten Schieberegister hervorruft.

Hier der QT:
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
void my_delay(uint16_t ms)
5
{
6
  for(uint16_t t=0; t<=ms; t++)
7
    _delay_ms(1);
8
}
9

10
void setPin(int pin, uint16_t state)
11
{
12
  if(state)
13
  {
14
    PORTB |= (1<<pin); 
15
  }
16
  else
17
  {
18
    PORTB &= ~(1<<pin);
19
  }
20
}
21
 
22
int main (void)
23
{
24
  DDRB  = 0b11111111;
25
  PORTB = 0x00;
26

27
  while(1)
28
  {
29
    for(uint16_t i=0; i<=15; i++)
30
    {
31
      for(uint16_t k=0; k<=15; k++)
32
      {
33
        setPin(PB0, (k==i ? 1 : 0) );
34
        setPin(PB1, 1);
35
        setPin(PB1, 0); //shift
36
      }
37
      setPin(PB2, 1);
38
      setPin(PB2, 0); //save
39

40
      my_delay(300);
41
    }
42
  //  my_delay(2000);
43
  }
44
  return 0;
45
}

Youtube Video: http://www.youtube.com/watch?v=E2uuzhIYU1Q

Ich hoffe, ich habe alle nötigen Informationen mitgegeben.
Dake schoneinmal für eure Mühen.

Grüße Carsten
Angehängte Dateien:
OP #2038652
Lesenswert?

Es funktioniert doch wie gewünscht, daher nehme ich an, dass die taktung 
stimmen muss. Die Beschaltung ist genauso, wie in dem verlinkten 
Tutorial.
Übernommen wird bei ansteigender Flanke.
Das einzige Problem ist halt, dass wenn das 1. Bit des Registers 
leuchtet, alle LEDs an dem Register leuchten.
Einen genauen Schaltplan kann ich frühestens morgen geben, da ich nicht 
zu Hause bin.
Was soltle beim takten denn falsch gemacht werden? Ich takte doch so 
oder si mit beiden Flanken ein Mal an gleicher Stelle...
OP #2038785
Lesenswert?

Und warum funktioniert es dann sonst richtig? Das wäre dann doch ein 
sehr großer Zufall, den ich mir auch, wenn ich mir den QT ansehe nicht 
im geringsten erklären kann. Immerhin müsste sich in dem Fall auch nur 
eine Veränderung alle 16*200ms, also 3,2s einstellen. 14 von 16 LEDs 
leuchten ja zur richtigen Zeit am richtigen Ort... grübel
OP #2040755
Lesenswert?

Sodele. Das ERgebnis ist: Die beiden Darlington Arrays waren falsch 
herum eingesteckt... GND lag an Q0/QA an. Faszinierend, dass sie dennoch 
so gut funktionierten... Die Schaltung funktioniert nun vollständig und 
korrekt.
Es konnte eigentlich nurnoch an diesen beiden liegen, da die Beschaltung 
der restlichen Hardware und die Software richtig sein mussten 
(Überprüfung der Geschwindigkeit mit der Delay-Zeit usw.).
Vielen Dank für die Hilfen und Mühen!

Grüße Carsten
OP #2041779
Lesenswert?

Nachdenken. ;-) Dem Fehler logisch auf die Schliche kommen. Das 
Schieberegister hat ja soweit funktioniert, dass hätte es auf keinen 
Fall, wenn eine Leitung vertauscht gewesen wäre. Ich habe dann einfach 
noch einmal das Datenblatt vom Darlington-Array genommen und auf Anhieb 
den Fehler festgestellt.
Der Effekt ergibt sich dadurch, dass, wenn Qo=0 ist, der Ausgang auf GND 
liegt und der Array dadurch "normal" beschaltet ist. Wenn er nun High 
wird, dann liegt die Masse vom Array auf +5V an. Scheinbar schalten dann 
alle Transistoren irgendwie durch... Müsste man sich näher mal ansehen, 
aber nun werde ich ersteinmal lieber den ATTiny13 durch den ATTiny2313 
ersetzen und dann möchte ich eine serielle Schnittstelle und 4 PWM 
Ausgänge zum Laufen bekommen. ;-)

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