mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel 25080A - SPI - AT89C51RB2


Autor: Markus K. (markus1989)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

und zwar kämpfe ich grade mit dem EEPROM und der SPI Verbindung. Im 
Anhang findet ihr meinen C-Code zum Schreiben und Lesen auf das EEPROM 
und das Datenblatt. Leider funktioniert dies aber bis jetzt noch nicht. 
Vielleicht könnte da einer mal drüber schauen und mir sagen wo mein 
Fehler liegt.

Ich habe hierzu noch eine generelle Frage. In dem Artikel 
Beitrag "Problem beim Schreiben eines SPI EEPROM AT25080"  wird für die 
Überprüfung, ob der Transfer abgeschlossen ist, dass im EEPROM 
vorhandene Status Register herangezogen. Ich habe mich jetzt mit dem 
SPIF Flag am Controller versucht. Was für eine Art der Abfrage ist 
hierbei die bessere?

Eine weiter grundlegende Frage liegt in dem Slave und Master Modus der 
über den Controller ausgewählt werden kann im Control SFr. Ich brauche 
doch eigentlich nur einen Slave Modus wenn ich mehrere µC miteinander 
verbinden möchte, oder liege ich dabei falsch? Ansonsten ist ja mein µC 
immer der Master, da ja nur er den Takt erzeugen kann.

Ich danke euch im Vorraus. Es ist mein erster Versuch mit EEPROM und 
SPI, trotzdem hoffe ich, dass ich nicht ganz daneben liege. Leider 
besitze ich Momentan kein Oszi mit dem ich den Transfer überprüfen kann!

mit freundlichen Grüßen
Markus

Autor: Klaus B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wenn du vom Prozessor aus ein Eeprom ansprechen willst, muß der 
Mastermode eingestellt werden, dh. die CPU gibt die Clock vor und 
beginnt mit der Kommunikation.

Meiner Erfahrung nach, werden folgende Punkte am ehesten falsch gemacht:
1) Clock-Phase und Polarität nicht gemäß Datenblatt des Eeproms. Sprich: 
mit welcher Clockflanke werden die Daten am Bus geshiftet, mit welcher 
Flanke wird der Busstatus gelesen

2) Die Slave-Selectleitung darf beim Übertragen des Kommands nicht 
inaktiv werden (siehe Fiigure 8/9 Write- und Readtiming im datenblatt), 
da andernfalls das Eeprom intern die Com-Statemachine zurücksetzt

3) das SPI-TX-Register darf erst geschrieben werden, wenn das letzte 
Byte vollständig gesendet wurde, dh. das SPIF -Flag kann sinnvollerweise 
daüfr ausgewertet werden (-> SPI transmission finished)

4) die Auswertung des Eeprom-Statusregisters ist wichtig für das 
Erkennen, wann der Schreibzugriff auf einen Zelle fertig ist. Das 
Programmioeren dauert in der Regel meherere ms.

Ich hoffe, das konnte dir einwenig helfen !

Gruß!

Autor: Markus K. (markus1989)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir Klaus für die Antwort,

ich werde mir das nochmal mit Hilfe deiner Punkte ganz genau anschauen!

mfg Markus

Autor: R. B. (rabis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht so?
void SPI_WR (unsigned char spi_data) {     // 8 Bit
   SPDAT = spi_data ;
  while (SPSCR != 0x88) ;
}
Ist für AT89C51AC3 von ATMEL.

Gruß
Rabis

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.