www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Max 7219 mit SPI ansteuern


Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
end statement nich vergessen...

Autor: Sven Lichtner (d-bracket)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir! Werde es gleich mal ausprobieren.

Autor: eckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !!!

Autor: Udo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.