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/doc3286.pdf Gsensor: http://www.st.com/stonline/products/literature/ds/11115/lis3lv02dq.pdf 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
Bei Atmel gibt es einige Applicationen zum SPI-Mode auf 8051ern. http://www.atmel.com/dyn/resources/prod_documents/doc3655.pdf http://www.atmel.com/dyn/resources/prod_documents/doc4348.pdf SPI-Programmbeispiele http://www.atmel.com/dyn/products/tools_card_v2.asp?tool_id=3419 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.
Codesammlung passt übrigens für das Thema nicht, vielleicht kann ein Admin das ganze mal nach µc & Elektronik verschieben.
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/doc3655.pdf 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
Frage hat sich mittlerweile erledigt, habs selbst rausgefunden... Werde jetzt mal schauen wie weit ich komme. Bei weiteren Fragen poste ich wieder.
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.