www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI-Problem ATmega8 (Assembler)


Autor: mäxchen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich habe ein Problem beim ansteuern eines EEPROMS über SPI.
Beim EEPROM handelt sich um den Typ M95640.
Und zwar müsste das Programm folgendes machen:
1. SPI initialisieren, als Master, Modus 0.
2. 00000011 senden, READ-Befehl
3. 00000000 senden, Adresse High-Byte
4. 00000000 senden, Adresse Low-Byte
5. Daten enpfangen (dafür Dummybyte (0x00) senden)
6. Empfangene Daten an Port D ausgeben
7. fertig

Wenn ich jetzt das Programm auf dem uc laufen lasse, erscheint immer 
der Wert 7F am Port D. Der EEPROM sollte jedoch auf allen Speicherzellen 
FF haben, da er neu ist.
Ich habe schon zwei verschiedene EEPROMS ausprobiert, auf beiden ist 
dasselbe Problem, Ich habe auch schon die Verbindungen kontrolliert, 
aber es ist alles in Ordnung, also muss der Fehler wohl am Programm 
liegen.
Und im Forum habe ich auch schon gesucht, habe aber nichts gefunden.

Ich hoffe, ihr könnt mir bei dem Problem helfen.

Gruss  Mäxchen

Autor: Dennis B. (higret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich hab SPI noch nicht wirklich benutzt, aber muss die Abfrage

 sbis   SPSR,SPIF


nicht vor dem

out SPDR, data

??


lg

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, sbis kontrolliert, ob die übertragung vollständig ist.
Ist sie nicht vollständig, wird   rjmp   Wait_Transmit    ausgeführt, 
sonst überspringt sie das Programm, lädt die epmfangenen Daten in das 
register data, und kehr vom unterprogramm zurück.

P.S.: Die SPI_MasterTransmit und SPI_MasterInit wurden grösstenteils vom 
Datenblatt des mega8 entnommen.

Gruss mäxchen

Autor: Dennis B. (higret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt hab ma eben das datenblatt angeschaut.


aber was mir aufgefallen ist, sind data direction, CPOL und CPHA 
richtig?

EDIT: hab mir mal das datenblatt des eeprom angeguckt, sollte mit den 
standard einstellung vom atmega8 funktionieren. der fehler muss also 
woanders liegen.

vielleicht in der Verdrahtung??

lg

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein die Verdrahtung stimmt 100%ig. Hab ich schon mehrere Male 
kontrolliert.

Autor: Dennis B. (higret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss PORTB nicht noch als ausgang definiert werden??

oder hast du das nur beim kopieren vergessen?

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port B wird in SPI_MasterInit als Ausgang definiert.

Autor: Dennis B. (higret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh stimmt, hmm keine ahnung wo dann der fehler ist

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat dann sonst niemand eine Idee woran das liegen könnte?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Schaltung scheint ja super geheim zu sein...
Ich vermisse die Behandlung von /CS.
Das muß beim PowerOn H sein und dann auf L gelegt werden.

Wie sind /WP und vor allem /HOLD bei Dir beschaltet?

Gruß aus Berlin
Michael

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schaltung ist überhaupt nicht geheim, einfach den EEPROM über das 
SPI angeschlossen.
Ich vermisse die Behandlung von /CS.
Das muss beim PowerOn H sein und dann auf L gelegt werden.

Wirklich? bei meinem Programm ist dieser beim Einschalten ständig auf 
Masse. Das werd ich mal ändern.
Wie sind /WP und vor allem /HOLD bei Dir beschaltet?

Die sind auf high-Pegel, also  nicht aktiv.

Also ich ändere mal das mit dem CS-Pin und gib dann mal einen Bericht 
obs lauft oder nicht :)

Gruss Mäxchen

P.S. Wie macht man hier eigentlich Zitate?

Autor: mäxchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert immer noch nicht :(((
Langsam bin ich echt am verzweifeln ...

Autor: Werner Stratmann (bocnc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es schon eine Lösung für das Problem. Ich lese zwar immer FF, aber 
auch wenn ich vorher versucht habe was zu schreiben

Gruß
Werner

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.