Probleme mit AS5040 rotary encoder

Gast #1176646
Lesenswert?
• ▲
▼
Guten Abend,

ich hoffe ich finde hier jemanden, der den AS5040 schon mal benutzt hat.

Ich versuche den gerade über SPI auszulesen und bekomme nur 0x2001 als 
Rückgabewert.
Laut Datenblatt sollte nach dem Startup das OCF bit auf high gehen, 
dieses bleibt aber leider auf low.

Habe schon mit dem Oszi überprüft, ob mit der Datenübertragung alles 
funktioniert. Das scheint alles zu stimmen.


Der PWM output des AS5040 funktioniert allerdings tadellos.

Hat jemand einen Tipp für mich?

Gruß Marcus
Gast #1176664
Lesenswert?
• ▲
▼
Nach 5 Stunden Kopfzerbrechen hab ich die Lösung doch noch gefunden...

Falls andere auch mal in die Verlegenheit kommen hier die kurze 
Beschreibung:

Hab den IC mit dem SPI des mega64 auslesen wollen.
SPI-Einstellung war:
SPCR  &= ~(1<<CPOL); // rising edge leading
SPCR  |=  (1<<CPHA); // sample on falling edge

Soweit so gut.

Was ich aber nicht bedacht habe (und was auch nicht klar aus dem 
Datenblatt herausgeht): Die Clock muss im Idlezustand anscheinend high 
bleiben.

Ich mach das jetzt so: Nachdem der Interrupt kam und die Übertragung 
beendet ist wird der SPI ausgeschaltet und der Pin auf high gezogen.



So, jetzt hab ich mir die Nacht verdient :)
Gast #2047102
Lesenswert?
• ▲
▼
Ich brauch den Sensor auch für meine Diplomarbeit in der Schule.
Hab jedoch ein Problem beim Winkelauslesen.
Seriel sollte ein Wert von 0-1023 empfangen werden. (360° = 1023)
Ich bekomme jedoch immer nur einen Wert von 0 - ca. 500; in einem Teil 
des Kreise bleibt der Wert konstant auf ca. 500 (ich glaube es waren 
511) obwohl der Magnet gedreht wird.

Muss man den AS5040 vorher programmieren um auch Werte von 0 bis 1023 zu 
bekommen? Ich hab das AS5040-Adapterboard und den LPC935.
Hat jemand vielleicht schon einen fertigen C-Code?

thx
Gast #2357206
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche mich auch gerade an dem AS5040 und der SPI Schnittstelle.
Prinzipiell scheint es als ob die SPI Schnittstelle funktioniert, da ich 
Daten empfange.

Aktuelle Einstellungen der SPI:
CPOL = 1
CPHA = 0


Wenn ich nun die empfangenen Daten bewerte, so muss ich feststellen, 
dass bei CPOL = 1 nur Daten im Bereich von ca. 500...1023 empfangen 
werden, hingegen bei CPOL = 0 zwischen ca. 0...500.

Dieses Phänomen ist mir noch nicht ganz klar.
Der PWM-Wert wird hingegen immer korrekt ausgegeben.

Hier mal der Code zum auslesen:
1
void as5040_spi_data(void)
2
{
3
  uint16_t data=0;
4
  SPCR |= (1<<CPOL);          // SCK high on IDLE
5
  
6
  clear_CSN();        //set low CSN
7
  data = spi_transferword(data);
8
  set_CSN();          //set high CSN
9
    
10
  AS5040data.state  = (uint8_t) (data & 0b0000000000111111);  // and extract status and angle
11
  AS5040data.value   = (data & 0b1111111111000000) >> 6;      // mask and shift 6 bits to the right
12
  
13
}

Für erste tests sollte die Auswertung der Statusbits ja egal sein. Oder 
seht Ihr das anders?

Gruß
Ralf
Gast #2357251
Lesenswert?
• ▲
▼
@tobi: Danke für den Link. Jedoch habe ich das Datenblatt als erstes mal 
studiert um dort auf eine Lösung zu kommen. Jedoch bis jetzt erfolglos. 
Daher habe ich ja auch hier im Forum geschrieben.

Wenn es bereits fertigen Code für diesen Chip gibt wäre ich auch nicht 
unglücklich darüber, aber primär möchte ich meinen Code zum laufen 
bekommen.

Daher bin ich über weitere Hinweise sehr dankbar.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.