TMC222 auslesen

Gast #2160745
Lesenswert?

Hallo ihr klugen Köpfe da draußen,
ich versuche mich gerade in der Ansteuerung eines TMC222. Mein Motor 
läuft auch soweit, doch nun versuche ich die aktuelle Position des 
Motors herauszulesen.
Hintergrund des ganzen ist, dass ich gerne wüsste wann mein Motor sich 
an einer bestimmten Position befindet um davon abhängig zu reagieren.
Nun stell ich mich leider ein wenig unbeholfen an.
Ich hab ein Beispielprogramm aus dem Netz verwendet und die Funktion für 
GetFullStatus2 (dort befindet sich laut datenblatt die aktuelle 
Position) sieht wie folgt aus:
1
int GetFullStatus2(int *TargetPosition, int *SecurePosition)
2
{
3
  while(TWIInUse);              //Wait until TWI is free
4

5
  //Send GetFullStatus2 command (0xfc) to the TMC222
6
  TWIMasterSendBuffer[0]=TWI_ADDR;  //Address byte
7
  TWIMasterSendBuffer[1]=0xfc;  //Command byte for GetFullStatus2
8
  TWIMasterSendCount=2;
9
  TWIInUse=TRUE;
10
  TWCR=0xA5;                    //start TWI communication
11
  while(TWIInUse);              //and wait until done.
12

13
  //Read back 8 bytes from the TMC222
14
  TWIMasterSendBuffer[0]=TWI_ADDR|0x01;  //Address byte (with read bit set)
15
  TWIMasterReceiveCount=8;      //8 bytes are to be read
16
  TWIInUse=TRUE;
17
  TWCR=0xA5;                    //Start TWI communication
18
  while(TWIInUse);              //and wait until done.
19

20
  //Return the position values
21
  if(TargetPosition!=NULL) *TargetPosition=(TWIMasterReceiveBuffer[3]<<8) | TWIMasterReceiveBuffer[4];
22
  if(SecurePosition!=NULL) *SecurePosition=((TWIMasterReceiveBuffer[6] & 0x06)<<8) | TWIMasterReceiveBuffer[5];
23
  return (TWIMasterReceiveBuffer[1]<<8) | TWIMasterReceiveBuffer[2];
24
}

Kann mir jemand helfen, wie ich nun die aktuelle Position auslesen kann?

Ich danke euch
Gast #2192487
Lesenswert?

Jens schrieb:
> Kann mir jemand helfen, wie ich nun die aktuelle Position auslesen kann?

Aem, indem Du genau die von Dir gepostete Funktion aufrufst? Die liefert 
Dir doch die aktuelle Position zurück.

PS: Wenn man schon fremden Code benutzt sollte man auch die Kommentare 
darin lesen.
1
/*****************************************************************************
2
   Function: GetFullStatus2()
3
   Parameters: *TargetPosition: Pointer to variable for the target position
4
                                or NULL.
5
              *SecurePosition: Pointer to variable for the secure position
6
                               or NULL.
7

8
   Return value: actual position
9

10
   Purpose: Read all TMC222 position registers (using the GetFullStatus2 command).
11
            NULL can be used for values that are not needed.
12
******************************************************************************/
Insbesondere die Zeile, die mit "Return value:" anfängt.

Der Vollständigkeit halber hier auch noch der Link zum kompletten 
Originalcode:
http://www.trinamic.com/tmc/media/Downloads/integrated_circuits/Tmc222/Application_notes/TMC222_Lib_AVR.zip

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren