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