Forum: Mikrocontroller und Digitale Elektronik Max 7219 mit SPI ansteuern


von Sven L. (d-bracket)


Lesenswert?

Hallo,

ich habe ein Problem bei dem ihr mir vielleicht weiterhelfen könnt.

Zur Zeit versuche ich mit meinem Mikrocontroller (AT90S8515) vier 
7-Segment-Anzeigen anzusteuern. Dazu benutze ich den Treiberbaustein Max 
7219 von Maxim. Da Daten an diesen Baustein seriell geschickt werden 
müssen, habe ich erst versucht, ein Programm zu schreiben, dass dieses 
Problem löst. Als das nicht funktionierte habe ich versucht den 
Treiberbaustein mit der SPI-Schnittstelle anzusteuern, was leider auch 
nicht funktioniert hat.

Ich habe meinen Schaltplan mehrmals überprüft und konnte keinen Fehler 
feststellen.

Vielleicht kann mir jemand von euch ein Beispielprogramm schicken mit 
dem ich den Treiberbaustein ansteuern kann. Das Programm müsste 
allerdings in Assembler geschrieben sein, da ich noch kein C 
programmiert habe.

Freue mich auf eure Antworten.

Gruss
D-Bracket

von eckel (Gast)


Lesenswert?

max_adresse equ 20h
max_daten   equ 21h
max_clock   equ p1.0
max_data    equ p1.1
max_load    equ p1.2


mov sp,#21h
main:  lcall max_init
       sjmp main

max_init:  mov max_adresse,#...
           mov max_daten,#...
           lcall max_out

           mov max_adresse,#...
           mov max_daten,#...
           lcall max_out

           mov max_adresse,#...
           mov max_daten,#...
           lcall max_out

           ......
           ret

max_out:   mov a,#128
next:      mov r0,a
           anl a,max_adresse
           clr max_data
           jz set
           setb max_data
set:       setb max_clock
           clr max_clock
           mov a, r0
           rr a
           cjne a,#128,next

next1:     mov r0,a
           anl a,max_daten
           clr max_data
           jz set1
           setb max_data
set1:      setb max_clock
           clr max_clock
           mov a, r0
           rr a
           cjne a,#128,next1
           setb max_load
           clr max_load
           ret

von eckel (Gast)


Lesenswert?

end statement nich vergessen...

von Sven L. (d-bracket)


Lesenswert?

Danke dir! Werde es gleich mal ausprobieren.

von eckel (Gast)


Lesenswert?

kann sein das en kleiner fehler drin is da ich das grad aus dem kopf 
geschrieben hab aber müsste gehen.-..

mach einfach erstmal nen displaytest

von Michael U. (amiga)


Lesenswert?

Hallo,

mußte nicht beim MAX7219 Load währen des letzten Clock-H auf H gehen zum 
übernehmen?

Deshalb ging ja Hardware-SPI nur mit dem MAX7921, wenn ich jetzt nicht 
irre.

Gruß aus Berlin
Michael

von Stephan (Gast)


Lesenswert?

soweit ich mich erinnern kann brauchte der 7219 Low an Load beim 
Übetragen und übernimmt mit L nach H.
Beim 7221 reicht eine Flanke an Load.
Wurde hier aber schon mehrfach diskutiert. Suchfunktion !!!

von Udo (Gast)


Lesenswert?

Hallo,

da ich gerade an einer Laufschrift mit 8x8Matrix und 7219 bastel konnte 
ich eure Vermutungen direkt ausprobieren.

>>mußte nicht beim MAX7219 Load währen des letzten Clock-H auf H gehen zum
>>übernehmen?

Nein, die H-Flanke am LOAD-Eingang kann später als die letzte H-Flanke 
des CLK-Impulses kommen.

>>Deshalb ging ja Hardware-SPI nur mit dem MAX7921, wenn ich jetzt nicht
>>irre.

Falsch, ich habe hier 8 kaskadierte 7219 über 0,5m abgeschirmte Leitung 
an der SPI-Schnittstelle eines ATmega32 hängen und steuer die mit 4 MHz 
CLK-Frequenz über die SPI Schnittstelle an.

>>soweit ich mich erinnern kann brauchte der 7219 LOW an Load beim
>>Übertragen und übernimmt mit L nach H.

teilweise falsch, der 7219 übernimmt die Daten bei einer H-Flanke des 
LOAD-Signals, aber bei der Übertragung der Daten kann LOAD HIGH bleiben, 
erst nach der Übertragung der Daten muß LOAD einmal kurz auf LOW-HIGH 
wechseln.
Es schadet aber auch nicht wenn vor der Datenübertragung LOAD auf LOW 
gesetzt wird und nach der Datenübertragung auf HIGH.

Gruß
Udo

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.