Hallo zusammen, ich arbeite mit einem AtMega8l und mit der Bascom Software zur Programmierung. Ich möchte nun über das implementierte SPI Protokoll die Register von dem Agilent Chip auslesen. Mit dem vorhandene Befehl spimove() und manupulationen des SPCR Registers sollte das funktionieren. Ich bekomme auch ein akzeptabeles Signal am Mikrocontroller heraus. Nur zum Einlesen der Informationen über den MISO gibt der Controller kein Taktsignal heraus und ich kann die Informationen auch nicht weiterverarbeiten. Vielleicht hat jemand eine Idee oder ein Seite mit ausführlichen Informationen über die SPI Befehle bei BASCOM
Habe ich die Frage irgendwie falsch gestellt. Oder bin ich zu unhöflich. Oder warum antwortet keiner. Nils
Naja... wenn man nicht weis welches Bauteil du ansprechen willst, wird dir es auch keiner sagen können.(Denn ich glaube, das Agilent nicht nur ein SPI-Bauteil hat) WEiters könnte der Programmcode interessant sein ;-)
Jupp, das Agilent (jetzt Avagotech) ist ein ADNS-3080 also ein optischer Maus Sensor. Viele Grüße Nils
HI, du hast: Do Delta_x = Spimove(&H03) 'Abfrage des Befehls Delta_y = Spimove(&H04) X_wert = X_wert + Delta_x ich vermute du musst erst mal was senden bevor du den wert des Empfangpuffer auslesen kannst. SPI ist ein Ring-Bus. d.h. es kommt hinten nur was raus wenn du gleichzeitig vorne was reinschiebst. Oder sehe ich es nicht. Gruß Marcel
Der Befehl spimove schiebt ja zuerst einen 8 bit Code über MOSI herein und eigentlich beschreibt das Datenblatt des Maus Sensors, dass danach der Mikrocontroller wieder 8 Taktflanken absendet und der Sensor antworten kann. Der Mikrocontroller sendet aber direkt den nächsten Befehl hinter her, also ohne eine Pause zu Antwort zu lassen.
Also ich kenne mich nicht mit Bascom aus: Daher weiß ich auch nicht genau was der Befehl Spimove() bewirkt. Er scheint mit aber nur etwas in den Sendepuffer der SPI-Schnittstelle zu schieben oder hat er gleichzeitig einen Rückgabewert? Gibt es bei Bascom noch einen Befehl mit dem du den Empfangpuffer auslesen kannst? z.B. Spimove(&H03); // Daten auf den Bus schieben Delta_x = SpiGetBuffer() // daten aus Puffer lesen //Fantasiebefehl Gruß Bernd
@ Nils wo gibts den Sensor zu kaufen, was hast du dafür bezahlt? Danke. Gruß Marcel
Also der Befehl ausgabe = spimove(befehl) gibt mit befehl einen 8 bit Code über den Bus und erhält in die Variable ausgabe die Antwort. @Marcel Den Sensor gibt es nur in großen Stückzahlen zu kaufen, er ist allerdings in auf dem Markt verfügbaren Mäusen verbaut. Einfach mal googlen.
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.