Forum: Mikrocontroller und Digitale Elektronik Mega16->74HC595->ULN2003A macht Probleme


von Christoph (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
habe ein kleines Programm für ein Lauflicht
programmiert, nur um zu testen ob ich ein
74HC595 ansteuern kann. Habe hier schon viele
Beiträge zum 595 gelesen und dem Bild
entsprechend aufgebaut:
http://www.mikrocontroller.net/attachment/4937/neu-1.jpg

Leider läuft das nicht so wie ich will...
7 LEDs Lauflicht fängt bei LED1
an und läuft bis LED7 durch, dann leuchtet kurz LED3 und
Lauflicht fängt wieder bei LED1 an.
Ich denke, dass das Problem irgendwo in der SW
zu finden ist, habe aber grade voll nen Brett
vorm Kopp und komme einfach nicht weiter...
Habe es probiert, die einzelnen Daten 0x00,0x01,0x02 ....
manuell zu übertragen, das funktioniert einwandfrei,
aber sobald ich das in einer for(...){...} laufen lasse
geht es nicht mehr und LED3 geht immer kurz an :(
Programm ist im Anhang !

Zur Hardware:
ATMega16 -> 74HC595 -> ULN2003A -> LED-Bar

74HC595:
Pin    Verbunden mit
1  QB    ULN2003A IN2
2  QC    ULN2003A IN3
3  QD    ULN2003A IN4
4  QE    ULN2003A IN5
5  QF    ULN2003A IN6
6  QG    ULN2003A IN7
7  QH
8  GND    GND
9  QH*
10 /SCLR  VCC
11 SCK    µC PB7(SCK)
12 RCK    µC PB4(SS)
13 /G    µC PB4(SS)
14 SI    µC PB5(MOSI)
15 QA    ULN2003A IN1
16 VCC    VCC

ULN2003A:
Ausgänge Out1-Out7 über 150R auf Kathode
der einzelnen LEDs der LED-Bar

von Εrnst B. (ernst)


Lesenswert?

Christoph wrote:

> 13 /G    µC PB4(SS)

Hab deinen Quelltext nicht angeschaut, aber als erster Tipp: leg mal den 
/G Eingang fest auf Masse.

/Ernst

von Falk B. (falk)


Lesenswert?

@Christop

CPHA und CPOL stimmen nicht, das 74HC595 arbeitet anders. Setz mal 
beides auf 0. Ausserdem ist dein Schlaf Funktion Mist, lass den Unsinn 
mit den Floating Point Zahlen! Normale INT sind hier das Mittel der 
Wahl.

MfG
Falk

von Gast (Gast)


Lesenswert?

Könnte es daran liegen?
1
for(i=0;i<=8;i++)
2
    {
3
      SPI_Data_Transmit(LED_Data[i]);
4
      schlaf(75);
5
    }
i hat nur 8 Felder , du zählst aber bis 9.

von Christoph (Gast)


Lesenswert?

Oha,
da ist ja schon ne ganze Menge Mist passiert :(
Jo stimmt Float sollte man stets vermeiden, schon klar,
habe nicht drauf geachtet, habe das aus einem meiner älteren Codes
kopiert...CPOL und CPHA hatte ich zuvor auf 0,
das die auf 1 sind habe ich aus dem Programmcode vom Thread
Beitrag "HC595 ansteuern in C"
und das /G mit auff SS gelegt ist aus dem oben schon erwähnten 
Schaltplan...


Dann werde ich mal das alles ändern :)

Habt vielen Dank für eure "strengen" raschen Blicke ;)
super hier :D

von Falk B. (falk)


Lesenswert?

@ Christoph (Gast)

>kopiert...CPOL und CPHA hatte ich zuvor auf 0,
>das die auf 1 sind habe ich aus dem Programmcode vom Thread

Naja, ich hab nochmal nachgeschaut. Es würde auch funktioieren mit CPHA 
und CPOL auf 1.

MFG
Falk

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.