Forum: Mikrocontroller und Digitale Elektronik STM32F103 - I2C über DMA Gyro Sensor


von Christian J. (Gast)


Lesenswert?

Hallo,

hat jemand vielleicht ein Beispeil für eine I2C Auslesung, die per DMA 
zyklisch rotierend passiert? Basierend auf den StdPeriph Libs!

Ich würde gern einen Gyrosensor (kenne bisher nur den ADXL345) auslesen, 
der rund 20 Register hat. Denke mal die liest man einfach in einem 
Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab. 
Ich weiss nur noch nicht wie ich das triggern soll? Per Timer? Ideal 
wäre ein ununterbrochenes Auslesen des Chips.

Falls jemand eine bessere Empfehlung für einen Gyro Chip hat, gern auch 
mit Kompass wäre das natürlich auch gut.


Gruss,
Christian

von Christian J. (Gast)


Lesenswert?

Niemand?

von Jim M. (turboj)


Lesenswert?

Du hast Dich ja noch nichtmal für einen konkreten Chip entschieden, und 
wir kennen Deine Anforderungen nicht.

Außerdem haben die Dinger normalerweise einen konfigurierbaren "habe 
fertich" Pin. Dass Du das nicht aus dem Datenblatt auslesen konntest 
lässt dann doch tief blicken.

Es gibt bei den Distributoren eine parametrische Suchfunktion, 
vielleicht haste die auch noch nicht gefunden...

von Ludwig (Gast)


Lesenswert?

Jim M. schrieb:
> Du hast Dich ja noch nichtmal für einen konkreten Chip entschieden, und
> wir kennen Deine Anforderungen nicht.

Da du nicht der Sprechers des µCNets bist, solltest du ich schreiben 
statt wir. Der Rest deines Beitrags taugt auch nichts und ist ziemlich 
pöbelhaft.

von Christian J. (Gast)


Lesenswert?

Jim M. schrieb:
> Du hast Dich ja noch nichtmal für einen konkreten Chip entschieden

Schon mal den Betreff gelesen?

von Horst (Gast)


Lesenswert?

Christian J. schrieb:
> Denke mal die liest man einfach in einem
> Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab.
Warum? Brauchst Du ständig alle 20 Werte neu?

> Ich weiss nur noch nicht wie ich das triggern soll?
Normal macht das der Sensor. Wenn die Werte bereit stehen bekommst Du 
einen Interupt und liest die Werte die Du brauchst.
Warum willst Du ständig Werte einlesen, die sich nicht geändert haben?

Christian J. schrieb:
> Ideal wäre ein ununterbrochenes Auslesen des Chips.
Nein, ideal ist ein Auslesen wenn der Chip neu gemessen hat. Wenn es 
dumm läuft sind die Werte zwischen den Messungen nicht gültig und Du 
bekommst nur Unsinn.

von Christian J. (Gast)


Lesenswert?

Horst schrieb:

> Christian J. schrieb:
>> Denke mal die liest man einfach in einem
>> Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab.
> Warum? Brauchst Du ständig alle 20 Werte neu?

Hallo,

ich möchte eine kleine Kopterplattform bauen, quasi nur EuroPlatine und 
4 Motoren mit ESC dran. Für die PID Regler brauche ich alle Werte immer 
so schnell wie möglich, also maximale Rate so dass sie zur Berechnung 
zur Verfügung stehen. Den ADXL345 kenne ich sehr gut, den Mp6050 bisher 
nicht, der deutlich komplexer ist.


>> Ich weiss nur noch nicht wie ich das triggern soll?
> Normal macht das der Sensor. Wenn die Werte bereit stehen bekommst Du
> einen Interupt und liest die Werte die Du brauchst.
> Warum willst Du ständig Werte einlesen, die sich nicht geändert haben?

Ok, also per FIFO Interrupt.

> Christian J. schrieb:
>> Ideal wäre ein ununterbrochenes Auslesen des Chips.
> Nein, ideal ist ein Auslesen wenn der Chip neu gemessen hat. Wenn es
> dumm läuft sind die Werte zwischen den Messungen nicht gültig und Du
> bekommst nur Unsinn.

von Christian J. (Gast)


Lesenswert?

Hallo,

ist es überhaupt möglich einen DMA Trigger per Pin-Change zu erzeugen? 
Ich finde da leider nicht drüber im Manual des F103. Würde jetzt erstmal 
den Umweg gegen den INT Pins des Sensors (Fifo full) auf einen 
Pin_Change INT der CPU zu verzweigen und in deren ISR den DMA Trigger 
manuell anstossen.
Denn CPU Zeit will ich mit dem Auslesen was mit 400Hz passiert nicht 
verbraten.

Hat da schonmal jemand was in der Richtugn gemacht?

Christian

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.