Hallo Forum ich möchte mit einem ATmega32 ein Graphik-Display EA-DOGS 102-6 über SPI ansteuern - was mir leider bisher noch nicht gelungen ist. Bei meiner Fehlersuche ist mir folgendes aufgefallen: ich schicke folgende Sequenz ans SPCR: 0<<spie|1<<spe|0<<dord|1<<mstr|1<<cpol|1<<cpha|1<<spr1|1<<spr0 beim Auslesen des Registers zeigt sich aber folgendes: 0<<spie|0<<spe|0<<dord|0<<mstr|1<<cpol|1<<cpha|0<<spr1|1<<spr0 wie kommt das? wie kann ich weiter vorgehen? (der ganze .asm-file im Anhang) Gruß Bernd
out spdr,SPI_Code sbi portb,cs rcall abwarten_bis_gesendet CS zieht man erst auf High wenn alles gesendet wurde, nicht vorher.
Hallo Holger, erstmal vielen Dank für die schnelle Antwort. den Code habe ich jetzt so angepasst: out spdr,SPI_Code ;sbi portb,cs rcall abwarten_bis_gesendet sbis portb,cs es ändert nur leider nichts am Ergebnis :-( Gruß Bernd
ja, an beiden Stellen. Das oben genannte Ergebnis erscheint auch wenn ich direkt zur Schleife springe ohne das vorher über die SPI-Schnittstelle was gesendet wurde... Das ganze befindet sich im fliegenden Probeaufbau auf einem STK500 - ob das Board hier Ärger macht?! Schließlich programmiere ich den Chip über die ISP-Schnittstelle - die hängt ja am SPI. Gruß Bernd
habe in der Korrektur noch einen Fehler entdeckt, es muss so aussehen: out spdr,SPI_Code rcall abwarten_bis_gesendet sbi portb,cs ...aber auch damit keine Funktion...
> ldi temp,spcr lädt den Registerinhalt vom SPCR ins temporäre Register (R16) > out portd,temp zeigt mir den Inhalt vom temporären und somit auch vom SPCR am Port D an, (...denke ich zumindest - aber aufgrund Deiner Nachfrage kommt mir der Gedanke es sollte "in" anstelle von "ldi" sein, das probier ich gleich mal aus) Gruß Bernd
Es wird die Konstanste 0x0D = 0b00001101, und damit das, was Sie uns ganz oben gezeigt haben.
Entschuldigung, nebenher Caruso hören geht nicht, also nochmal: Es wird die Konstante 0x0D = 0b00001101 nach temp geladen ...
mit "in" ist die Anzeige des SPCR wie sie sein sollte, also hab ich hier wohl einen Fehler gemacht - sorry, Anfänger eben ;-) (stellt sich allerdings die Frage was er mir mit "ldi" angezeigt hat - der Inhalt des SPCR kanns ja dann nicht gewesen sein!) Unabhängig davon habe ich nach wie vor keine Anzeige am Display - ich werde den Verdacht nicht los daß das Display selbst defekt ist... an dieser Stelle schon mal vielen Dank für eure Hilfe :-) Gruß Bernd
Hi >(stellt sich allerdings die Frage was er mir mit "ldi" angezeigt hat - >der Inhalt des SPCR kanns ja dann nicht gewesen sein!) Die Adresse von SPCR. MfG Spess
> Anfänger Okay, dann gerne ausführlich: SPCR hat die Adresse 0x0D laut Datenblatt Register Summary, mit 'ldi temp,SPCR' wird genau dieser Wert, also die Konstante 0x0D geladen. > werde den Verdacht nicht los daß das Display selbst defekt ist Auch das ist ein typischer Anfängerfehler, meist liegt es an einem selbst.
vielen Dank für eure Erklärungen. Display ist definitiv nicht defekt - es war ein Draht der Spannungsversorgung abgebrochen... Es zeigt mir zwar noch nicht den gewünschten Inhalt, aber es lässt sich zumindest schon mal ansprechen - will sagen: die Pixel werden dunkel Gruß Bernd
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.