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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian J. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Niemand?

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

Schon mal den Betreff gelesen?

von Horst (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.