SPI an ATMEGA16 in ASM

OP #1503641
Lesenswert?

Hi!
Ich weiss, es gibt schon 1000 Thread mit diesem Thema.
Ich habe mir wahrscheinlich jeden schon zwei Mal durch gelesen und 
ändere schon seit drei Tagen an meinem Programm rum aber ICH KRIEG ES 
NICHT HIN!!

Ich bitte um Hilfe!!
Ich will ein EA DOGM132-5 Display an einem ATMega16 über SPI in ASM 
ansteuern.
1
SPI_INIT:
2
        push temp1
3
        ldi temp1, (0<<SPI2X)
4
        out spsr, temp1
5

6
        ldi temp1, 0xFF    ; Output = SCK, MOSI,... (ALLES!!!)
7
        out DDRB, temp1
8

9
    ldi temp1, (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0)
10
    
11
                                
12
        out SPCR, temp1
13
        out SPDR,temp1            ; Dummy Daten, um SPIF zu setzen
14

15
        pop temp1
16
        ret
17

18
; ---------------------- per SPI senden ------------------
19

20
Kommando_per_SPI:            ; in disdata1 stehen die Daten
21
        push temp1
22
        push disdata1          ; DENKE DRAN: CS,A0 setzen/löschen
23
      
24

25
        cbi PORTD, CS
26
        cbi PORTD, A0
27
      ;  sbi PORTD, LCD_RESET
28
        ldi temp1, (1<<MSTR)
29
        out SPCR, TEMP1
30

31
        
32
        out SPDR, disdata1
33

34
warte_SPI:  ;  in temp1, SPSR
35
        sbis SPSR, SPIF      ; solange, bis Interrupt aus!!
36
        
37
        rjmp warte_SPI
38
;        rcall warte_1ms
39
        
40

41
        in temp1, spdr
42
        
43
      
44

45
        pop disdata1
46
        pop temp1
47
        
48
        ret
49

50

51
;===============================================================================
52

53
Daten_per_SPI:
54
        push disdata1
55
        push temp1
56
        
57
        cbi PORTD, CS
58
        sbi PORTD, A0
59
  ;      sbi PORTD, LCD_RESET
60

61
        ldi temp1, (1<<MSTR)
62
        out SPCR, TEMP1
63
        
64
        
65
        
66
        out SPDR, disdata1
67

68
warte_SPI2:  ;  in temp1, SPSR
69
        sbis SPSR, SPIF      ; solange, bis Interrupt aus!!
70
        rjmp warte_SPI2
71

72
        
73
        in temp1, spdr
74
      ;  cbi PORTD, A0
75
        
76

77
;        rcall warte_1ms        
78
        pop temp1
79
        pop disdata1
80
        
81
        ret

Könnt ihr mir sagen, was da falsch läuft ???
Hardware hab ich schon 8 Milliarden mal durch gepiept.
Habe schon versucht das Display beim programmieren des ATMega über ISP 
abzunehmen oder dran zu lassen, daran liegts auch nicht...
Wenn ich MOSI und SCK beim uC-Programmieren dran lasse, hab ich kurz 
zwei dreimal einen schwarzen Bildschirm...

HILFE!!!
OP #1503662
Lesenswert?

Oh, ok, hast ja Recht...

Das Display bleibt aus(zeigt nichts an), bis auf das kurze 
"Komplett-Schwarz" während der uC-Programmierung, wenn ich die 
SPI-Leitungen dran lasse.
Kontrast läuft doch über Hardware, oder was meinst du? Die 8 Cs hab ich 
angeschlossen.
Anscheinend wird es noch nicht einmal initialisiert.
OP #1503698
Lesenswert?

Sooooo, habs so gemacht und "es" ist zum Leben erwacht.... EENDLICH!!!
Hab zwar nicht ganz das Bild, welches ich wollte aber das sollte dann ja 
klappen!

Hab fast Pippi in den Augen!! ;-)

Jetzt hab ich die Platine hoch genommen und alles ist wieder tot... Was 
sagt mir das? Die Sch... Buchsenleisten haben nicht immer Kontakt und 
ich hab mit der Messspitze beim Messen den Druck hergestellt, den er 
brauchte... Zum kotzen!

...Lötkolben heizt grad auf, Ihr seid Spitze!!
Muss dann "nur" noch einen vernünftigen Transfer meiner Daten hin 
kriegen...
OP #1503721
Lesenswert?

Hmmm... Umgelötet! Nach Neustart zeigt er wilde Pixel an und dann 
verblasst alles.... Sieht nach Kondensatorproblem aus, welche habt ihr 
da genommen? Hab 1uF Tantal genommen, sind die falsch??
Hat sich erledigt, einer war verpolt, der hat wohl die Spannung runter 
gezogen... Danke euch!!!
OP #1504237
Lesenswert?

Naja, bei den parallelen, die ich bis jetzt eingesetzt hab, liefen die 
Daten einfach in der nächsten Zeile weiter.
Wie wäre denn ein Befehl, um ihn in die nächste Spalte springen zu 
lassen?
Frage mich immer noch, wie ich beim DOGM132-5 die Zeilenbreite /höhe usw 
einstelle, hab die Init aus dem Datenblatt übernommen... Jemand nen 
Tipp?
#1504291
Lesenswert?

> Naja, bei den parallelen, die ich bis jetzt eingesetzt hab, liefen die
> Daten einfach in der nächsten Zeile weiter.

genau, nur das manchmal zB. bei 4 Zeiligen eine Zeile dazwischen frei 
bleibt, wenn man sich nicht darum kümmert.

Meine Vermutung:
nach der 131sten Spalte sollte die nächste Page anfangen.
Also Page umschalten. Datenblatte Seite 5.

Habe mit dem Ding noch nicht gearbeitet.

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