Forum: Mikrocontroller und Digitale Elektronik AS5040 Probleme beim Auslesen der Daten


von Leo B. (luigi)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe folgendes Problem:
Für einen BL-Motor-Regler habe ich mir den AS5040 ausgesucht und auf 
eine Platine gelötet (Schaltplan hänge ich mal eben an).
Nun scheitere ich aber am Programmieren. Nach einigem hin und her (SPI 
ist leider doch nicht ganz perfekt zum auslesen der Daten) schaffe ich 
es nun einen halbwegs sinnvollen Bitstream aus dem Chip zu lesen, die 
Positionsangaben bleiben mir aber Rätselhaft.

Konfiguration des ATMEGA48:
- 20MHz Takt
- SPI-Bus für Kommunikation und Programmierung
- USART im MSPI-Modus für das SSI-Interface des AS5040 (SPI-Frequenz: 
500kHz)
- kleine Gatterschaltung auf den T1-Pin am AVR um evtl. einmal den 
Timer/Counter1 synchron zum AD5040 Positionswert laufen zu lassen 
(aktuell nicht bestückt)

Mein aktuelles Vorgehen zum auslesen des AS5040:
Ich ziehe den CS-Pin auf low, warte etwa 1µs und beginne dann mittels 
SPI 4 Byte (0xAA 0xAA 0xAA 0xAA) an den Chip zu senden. 0xAA damit ich 
auch am Oszi was sehen kann und 4 Byte weil 2 knapp zu wenig waren, da 
das SSI-Interface nicht ganz SPI kompatibel ist, sodass vorneweg immer 
ein 1 gelesen wird, welche nicht zum Datenstrom gehört und hinten dann 
ein Byte fehlt.
Nun so bekomme ich jedenfalls alle Daten vom AS5040 in den Atmel. Den 
weg auf meinen Bildschirm beschriebe ich mal ganz knapp:
Atmel -(SPI)-> STK500(ATMEGA8515) -(UART)-> PC
Am PC erhalte ich dann mittels HTerm Bitfolgen folgender Art:
1000 0101, 0001 0011, 1010 1010, 1010 1010 (Magnet weit weg)
1011 1111, 1111 1111, 1010 1010, 1010 1010 (Magnet ganz drangehalten)
1000 0111, 1011 0000, 1010 1010, 1010 1010 (Magnet in richtiger 
Position)

Ich habe folgendes Schema festgestellt:
10 ddd ddd ddd OCF COF LIN MAG+ MAG- PAR 0 10101010101010

Die erste 1 ist meiner Meinung nach ein Fehler, der auftritt, wenn man 
das SSI-Interface mittels SPI ausliest.
- d sind dabei 9 Datenbits. Da es 10 sein müssten wird wohl die erste 0 
auch eines sein. Dieses Bit bleibt aber immer auf 0 egal wie ich den 
Magneten halte. Finde ich schonmal sehr komisch.
- OCF, COF, MAG+, MAG- dürften die im Datenblatt beschriebenen Bits 
sein. Das verhalten spricht jedenfalls dafür.
- PAR ist das "even Parity" das zumindest bei meinen Stichproben immer 
gestimmt hat.
- die nun folgende "10"-Sequenz sind dann wieder die vom Atmel 
rausgetateten 0xAA welche durch den AS5040 wieder zum Atmel zurück 
kommen.

So, aber nun meine Frage:
Wo kann ich noch Fehler machen, sodass ich keine sinnvollen Datan 
auslesen kann. Also der Datenstrom an sich ist ja "entschlüsselt" denke 
ich, aber der enthaltene Datenteil (also die d's oben) geben keinen 
Sinn.
1. sind es nur 9 Bit, nicht die erwarteten 10 Bit
2. kann ich keinen Zusammenhang der Zahlen mit irgendeiner 
Rotationsachse des Magneten feststellen. Sind die Daten Gray-Codiert 
oder dergleichen?

Wer kann und will mir dazu Tips geben oder mir ein wenig unter die Arme 
greifen?
Auch nur Ideen sind willkommen, ich sitze gerade schon 3 Stunden ohne 
Lösung vor genau diesem Problem...

Vielen Dank schonmal
lg Leo
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.