Forum: Compiler & IDEs MMA7455 SPI Beschleunigungssensor


von Jens (Gast)


Lesenswert?

Kann jemand helfen,

habe den IC mit SPI angesteuert, auch mit I²2 -- ohne Erfolg. Er gibt 
nur Unsinn raus, nicht die Werte, die ich in die Register schreibe.

Habe dann eine eigene SPI an PORTD geschrieben, dann auch mit langsamer 
Übertragungsrate probiert, auch ohne Erfolg.

Gibt es alternative Sensoren mit SPI?

Hat jemand einen C-Code zum Auslesen erfolgreich getestet?

Woran liegt es?

Danke.

von holger (Gast)


Lesenswert?

>Woran liegt es?

Code ist Müll, Schaltung von Arsch?

von sneJ (Gast)


Lesenswert?

holger schrieb:
>>Woran liegt es?
>
> Code ist Müll, Schaltung von Arsch?

Daran hatte ich garnicht gedacht, danke Wahrsager!




... bischen mehr Infos würden die Fehleranalyse wirklich vereinfachen

von Alex (Gast)


Lesenswert?

Falls Jens == sneJ, dann

... bischen mehr Infos würden die Fehleranalyse wirklich vereinfachen

=> ACK!

Achso, und natürlich falsches Topic fürs GCC Forum.

Also:

Verwendete Schaltung?
Code?
Was für ein IC?

von (tsaG) sneJ (Gast)


Lesenswert?

Jens != sneJ ... warum sollte er selbst schreiben, dass er mehr Infos 
rüberkommen lassen soll

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Danke an alle,

folgendes: Ich habe einen uC mit 5V und den MMA mit 3V.

Es lag nicht am Code. Zuerst habe ich alle Leitungen SDIO, SCK, SC 
direkt an den MMA angeschlossen und dann je einen PulUp Wid an 3V 
geschlossen. Dann habe ich beim uC nur das DDR Register bewegt, also nur 
Low-Zustände rausgegeben, den Hi-Zustand müsste ja dann der PulUp 
bringen --- das hat nicht funktioniert.

Jetzt habe ich alle uC Leitungen über 2,2K Reihe und dann 4,7K gegen 
Masse geschaltet, das geht auch, wenn MMA mit 3V sendet. Nun schalte ich 
direkt die Ports. Dummerweise ist mein Oszi kaput gegangen und ich kann 
im Moment nichts kontrollieren.

Nun geht alles und ich kann die SPI an irgendwelchen Ports betreiben, 
bei mir PortD .... SDIO_Output usw. sind Makros, die lediglich die Ports 
setzen.


Nochwas, wen es interessiert. Die Daten für die Achsen werden im 2er 
Complement ausgegeben, um Werte von 0..127 o.ä. zu erhalten muss man die 
ankommenden Werte mit 128 addieren und dann einen Wert um die 50 
abziehen .... aber das wisst Ihr sicher.

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

nochmal richtig

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
Noch kein Account? Hier anmelden.