mikrocontroller.net

Forum: Projekte & Code SPI Assemblercode AT89S8253


Autor: Chris B. (cbb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

erstmal die Datenblätter der beiden IC's die ich mit der SPI 
Schnittstelle verbinden möchte.
µC: http://www.atmel.com/dyn/resources/prod_documents/...
Gsensor: 
http://www.st.com/stonline/products/literature/ds/...

Wie ich die Beiden miteinaner Verbinde (hardwaremäßig) ist mir klar, 
auch wegen des Pegels. Darüber habe ich mir schon gedanken gemacht und 
Lösungen die Funktionieren sollten. (mehrere Möglichkeiten :) )
Mir geht es jetzt um die Assembler programmierung.
Wie komme ich an die Daten des Gsensors.
Habe mir da mal grundsätzlich überlegt, wie ich vorgehen könnte.
Gemacht habe ich soetwas noch nicht. Bisher nur Zähler und andere 
einfache Dinge in Assembler programmiert.

Meine Überlegung, wie ich da vorgehen könnte war folgende:
Der Gsensor besitzt ein Dummyregister.
Mein 1. Gedanke war das ich dieses ja mal auslesen könnte um einfach zu 
überprüfen, ob ich eine SPI Verbindung hinbekomme.

Dazu habe ich noch 3 Register auf meinem µC die ich hierfür "einstellen" 
bzw. verwenden muss.

Grundsätzlich muss ich ja erstmal die Geschwindigkeit/Taktung usw. 
richtig einstellen. Also das  SPCR.
Für die Datenübertragung verwende ich das SPSR und SPDR.

Ich habe soetwas noch nicht gemacht, folglich weiß ich nicht genau wie 
ich da vorgehen kann/muss. Möchte es aber auf alle fälle lernen! :)
Es ist nur sehr schwer für mich festzustellen ob es "tut".
Es ist nicht einfach wie ein I/O Port, an dem ne LED tut, oder eben 
nicht.

Also für das Prog muss ich zuerstmal das SPCR "richtig" einstellen.
Danach kann ich dann an die Datenübertragung.
Hier wollte ich den µC als MAster und den Gsensor als Slave verwenden.
Zuerst muss ich ja mal den Gsensor mit CS (am µC ist es SSn) ansprechen.
Danach muss  ich eine "Anfrage" schreiben, wie ein read befehl für das 
entsprechnede Reg.?
Danach legt der Gsensor die Daten auf SPI und ich kann mit dem SPSR die 
ganze zeit die Übertragung überwachen und am Ende dann das SPDR 
auslesen?

Wenn ich etwas im SPCR verändern möchte, gibt es da andere befehle wie 
einfach nur mov spcr, #05Ch ? (war jetzt nur ein BSP)
Und wie kann ich danach überprüfen ob das richtige hineingeschrieben 
wurde?
Ich habe ein Entwicklungsboard mit dem AT Controller, auf dem habe ich 
einen Port mit LEDs herausgeführt, darauf könnte ich (um es sichtbar zu 
machen, ob es tut) einfach die Register legen  und ausgeben.

Würde mich um Unterstützung und Hilfe sehr freuen. :)

Viele Grüße Chris

Autor: Alf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Atmel gibt es einige Applicationen zum SPI-Mode auf 8051ern.

http://www.atmel.com/dyn/resources/prod_documents/...
http://www.atmel.com/dyn/resources/prod_documents/...

SPI-Programmbeispiele
http://www.atmel.com/dyn/products/tools_card_v2.as...

Im Prinzip ist alles richtig was Du schreibst. Schließ das Teil an, und 
programmiere los. Wenn Du allerdings nur wenig Erfahrung hast, ist 
SPI-Kommunikation nich gerade ein Einstiegsthema.

Alternativ lässt sich das SPI-Timing auch ohne die Hardware-SPI zu 
verwenden, leicht über normale I/O-Pins realisieren. Ist zumindest eine 
gute Lernaufgabe.

Du musst eventuell noch beachten, dass der AT89S8253 per SPI geflasht 
wird. Damit ist das SPI-Interface dann doppelt belegt, ansich kein 
Problem, bei Atmel gibts dazu auch AppNotes.

Autor: Alf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Codesammlung passt übrigens für das Thema nicht, vielleicht kann ein 
Admin das ganze mal nach µc & Elektronik verschieben.

Autor: Chris B. (cbb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

dankeschön für die Links!
Bin jetzt dabei mich einzuarbeiten.
Habe da ein paar Fragen zum Assembler Code:

Diese command and bit definitions sind die Geräte abhängig, oder 
allgemein gleich?
Suche das nämlich in den application Notes des GSensors ohne erfolg.

Bin noch nicht ganz durchgestiegen wie alles funktioniert, das Schreiben 
interessiert mich vorerst mal nicht, da ich nur etwas auslesen möchte.
Bzw. dieser Sensor hat meine ich auch ein Register in dem man 
einstellungen vornehmen kann, mache ich das auch mit dem normalen 
schreiben wie in dieser Datei: 
http://www.atmel.com/dyn/resources/prod_documents/...

Für die Adressierung der Daten brauche ich ja keine 2*8bit, da der 
Sensor nur 8bit adressen hat.
Also kann ich mir dieses Low/high adresse schonmal sparen. :)

Und für die Kommunikation, schreibe ich wirklich nur eine zahlenkombie 
in das SPDR und dann sendet der sensor automatisch etwas zurück, wenn er 
den befehl kennt?(vorausgesetzt es ist alles richtig eingestellt und 
initialisiert ;) )

Sorry für komische fragen, habe noch keine solche kommunikation 
aufgebaut.

viele grüße

Chris

Autor: Chris B. (cbb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage hat sich mittlerweile erledigt, habs selbst rausgefunden...
Werde jetzt mal schauen wie weit ich komme. Bei weiteren Fragen poste 
ich wieder.

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.