Forum: Mikrocontroller und Digitale Elektronik ATmega32 SPCR falsche Daten


von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

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

von holger (Gast)


Lesenswert?

out spdr,SPI_Code
  sbi portb,cs
  rcall abwarten_bis_gesendet

CS zieht man erst auf High wenn alles gesendet wurde, nicht vorher.

von Bernd (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>den Code habe ich jetzt so angepasst:

An beiden Stellen?

von Bernd (Gast)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

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...

von S. Landolt (Gast)


Lesenswert?

> ldi temp,spcr
> out portd,temp

Was soll das darstellen? ldi?

von Bernd (Gast)


Lesenswert?

> 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

von S. Landolt (Gast)


Lesenswert?

Es wird die Konstanste 0x0D = 0b00001101, und damit das, was Sie uns 
ganz oben gezeigt haben.

von S. Landolt (Gast)


Lesenswert?

Entschuldigung, nebenher Caruso hören geht nicht, also nochmal:
Es wird die Konstante 0x0D = 0b00001101 nach temp geladen ...

von Bernd (Gast)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von S. Landolt (Gast)


Lesenswert?

> 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.

von Bernd (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.