Hallöchen Mit diesem Theard werde ich mir wohl nicht viele Freunde machen... Hab ähnliche Theards gelesen die wenigen bis keine Antworten erhielten. Dennoch benötige ich eure Hilfe. Ich möchte eine MPU-6000 über SPI mit einem PIC16F887 betreiben. Ein Rätsel ist mier woher die MPU weiss, welcher Bus (I2C oder SPI) verwendet werden soll. Zwar gibt es ein Register106 wo man umschalten kann, aber mit einem Bus muss ja gestartet werden, oder? Aus meiner Verzweiflung habe ich einfach mal versucht dieses Register106 auszulesen: - SPI_Write(11101010)MSB"1" = lesen - delay - SPI_Read(buffer) Getan hat sich gar nix. SPI Clock hat 500kHz (mit KO gemessen). Vielen Dank schon mal Gruss Michael Datenblätter: http://www.invensense.com/mems/gyro/documents/PS-MPU-6000A.pdf http://invensense.com/mems/gyro/documents/RM-MPU-6000A.pdf
Ich verstehe des Datenblatt so, dass SPI aktiv ist, sobald CS low ist. Falls Du das SPI für mehrere Geräte nutzt, sollte das IIC-Interface als erstes abgeschaltet werden.
DankeDanke Achso ist das. Sollte soweit kein Problem sein, da ich nur diesen Slave habe und somit CS immer low ist. Hab jetzt noch das Register106 auf SPI eingstellt und nochmals versucht zu lesen. Funktioniert noch nichts. Bin aber noch guter Dinge :-) Werde mich nochmals melden. Mit Problemen oder mit guten Neuigkeiten. :-D
>habe und somit CS immer low ist.
Vielleicht übernimmt der Chip die Daten nur auf der
steigenden /CS Flanke?
Hab den CS Pin jetzt auch im Programm: delay_ms(1000); Genug Zeit um Chip hochzufahren RC1_bit = 0; /CS, SPI Mode aktivieren SPI1_Write(0b01101010); Schreiben in Adresse 106 SPI1_Write(0b00010000); Daten in Adresse 106 schreiben, I2C aus SPI1_Write(0b11101010); Lesen von Adresse 106 delay_ms(1000); Genug Zeit um Chip antworten zu lassen RC1_bit = 1; /CS, SPI Mode aktivieren Lesen tut sich nichts sinnvolles. Auch am KO nichts gutes. Schreiben sieht soweit gut aus, nur dass ich 4 Schreibblöcke auf dem KO sehe statt nur 3! Ist es möglich dass er Antwortet am im I2C Mode? Naja weil es auf der selben Leitung geschieht.
> Schreiben sieht soweit gut aus, nur dass ich 4 Schreibblöcke auf dem KO > sehe statt nur 3! Ist es möglich dass er Antwortet am im I2C Mode? Naja > weil es auf der selben Leitung geschieht. starte das Programm doch mal ohne angeschlossenen Sensor, ob dann immer noch 4 Bytes sichtbar sind.
Hab falsch gemessen. Sorry. Da ich 3mal Sende und 1mal Empfangen möchte. Sieht man auf der Taktleitung natürlich 4Blöcke. Im Anghang die Bilder vom KO. 1.Bild: Blau: Clock Gelb: Send (vom PIC aus gesehen) 2.Bild: Blau: Read (vom PIC aus gesehen) Gelb: Send (vom PIC aus gesehen) 3.Bild: Blau: Read (vom PIC aus gesehen) Gelb: CS Soweit ich sehe, stimmt die SPI Logik. Scheint das nur so oder will die MPU zurücksenden aber bringt den Pegel nicht hoch? Hab den Pin bereits durchgemessen, weder Kurzschluss noch Niederohmig. Von einem Opendrain Ausgang steht ja nix. Hab mich genau an die Hardware vom Datenblatt gehalten. Achja, ich habe die SPI Frequenz auf 125kHz gedrosselt.
Hi zusammen Habe den Fehler, oder zumindest einen gefunden. VDD war nicht angeschlossen -.- Der Draht war nur an das Zinn angelehnt und nicht richtig verlötet. Hab am Anfang alles durchgepiepst, da sahs gut aus. Naja den Sensor kann ich mir wohl abschreiben. Da mein Studentenbudget etwas mager ist, wird das Projekt vorerst auf Eis gelegt. (in der Schweiz sind die Dinger richtig teuer ;-)) Trotzdem vielen Dank für eure Bemühungen
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.