Re: TMC 222 an Ministation Kategorie: Sonstige Hardware (von UlliS - 17.06.2011 13:47) | |
Als Antwort auf Re: TMC 222 an Ministation von Florian - 16.06.2011 18:57
| |
> > > Hallo zusammen, > > > > > > hab die Ministation und am I2C Bus einen TMC222 Controller mit Schrittmotor hängen. Leider bewegt > > > sich nichts. > > > > > > Hardware seitig: > > > > > > - Spannungsversorgung TMC 222 mit 15 V über Labornetzgerät > > > - OA1/OA2 OB1/OB2 und U+ und GND sind angeschlossen > > > - die rote LED auf dem Board leuchtet (Was bedeutet das Leuchten Fehler oder Spannungsversorgung?) > > > - I2C Bus habe ich SDA/SCL +/ GND an der Ministation angeschlossen und über den 6 poligen Stecker > > > am TMC 222 gesteckt > > > - Pullups sind meiner Meinung nach aktiviert JP1 & JP2 nach links gesteckt > > > > > > Software seitig: > > > > > > - Hab das Ministation Programm von dieser Homepage verwendet > > > - mit Einstellung MEGA 32 kompiliert > > > - Irun/Ihold auf 0xFF probeweise gesetzt um den Strom hochzusetzen > > > - IDE ist die aktuellste > > > > > > Debug > > > > > > - die DATA Blöcke sind alle mit 193 (Dez) befüllt?? > > > > > > Was mache ich falsch - kann mir jemand Tipps geben was noch zu untersuchen oder zu tun ist? > > > > > > Viele Grü�e > > > > > > Florian > > > > Hallo, > > > > hast Du die LCD Routinen entfern? > > Wenn nein, diese bitte entfernen bei der Mini-Station. > > > > Grü�e Ulli > Hallo Ulli, > > die LCD Routinen sind schon entfernt - hatte ich vergessen > zu schreiben > > hier noch kurz das Programm - ist denke ich von Dir? > > //Variable Declaration > word ACTPOS, TARGETPOS, SECPOS, COUNTER, PosAct; > byte ACTPOSH, ACTPOSL, TARGETPOSH, TARGETPOSL, SECPOSH, SECPOSL, CONFIG; > byte DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7, DATA8, COMMAND; > > //TMC222 General Call Adress > #define TMC222 0xC0 > > void main(void) > { > //I²C-INIT > I2C_Init(I2C_100kHz); //I²C Bit Rate: 100 kHz > > > //----------- POWER ON MESSAGE ------------------------ > INIT_MOTOR(); > RESET_POSITION(); > S1REQUEST(); > AbsDelay(2000); > S2REQUEST(); > > //----------------------------------------------------- > // START MAIN Loop > //----------------------------------------------------- > do > { > TARGETPOS = 0x2710; //Dez. 10.000 Steps > > //---------------- RUN STEPPER ------------------------ > if (PosAct == TARGETPOS) > { > TARGETPOS=0x00; > } > else TARGETPOS = TARGETPOS; > > AbsDelay(2500); > > GOTO_TARGET(); > RESET_POSITION(); > S1REQUEST(); > > //---------- CHECK For TARGET REACHED ----------------- > LP1: > S2REQUEST(); > if (PosAct != TARGETPOS) goto LP1; > > > } while (1); > } > > > //----------------------------------------------------- > // MOTOR PARAMETER SETTINGS > //----------------------------------------------------- > void INIT_MOTOR(void) > { > I2C_Start(); //Show Datasheet To TMC222 Page 34 (6.8.9) > I2C_Write(TMC222); > I2C_Write(0x89); //&H89 Sets Motor Parameters > I2C_Write(0xFF); //N/A > I2C_Write(0xFF); //N/A > I2C_Write(0xFF); //Irun & Ihold | Bit0 To Bit3 = Ihold // Bit4 To Bit7 = Irun > I2C_Write(0x10); //Vmax & Vmin | Bit0 To Bit3 = Vmin // Bit4 To Bit7 = Vmax > I2C_Write(0x10); //Status | 10 = right // 0 = left // Bit0 To Bit3 = ACC // Bit4 = Shaft // Bit5 To Bit7 = SecPos > I2C_Write(0x00); //SecurePos > I2C_Write(0xE); //Step Mode | Bit2 To Bit3 = StepMode // Bit4 = AccShape > I2C_Stop(); > } > > //----------------------------------------------------- > // RESET POSITION > //----------------------------------------------------- > void RESET_POSITION(void) > { > COMMAND=0x86; > PUTCOMMAND(); > } > > //----------------------------------------------------- > // HARD STOP > //----------------------------------------------------- > void HARD_STOP(void) > { > COMMAND=0x84; > PUTCOMMAND(); > } > > //----------------------------------------------------- > // DRIVE To SECURE POSITION > //----------------------------------------------------- > void GOTO_SECURE(void) > { > COMMAND=0x84; > PUTCOMMAND(); > } > > //----------------------------------------------------- > // DRIVE To TARGET > //----------------------------------------------------- > void GOTO_TARGET(void) > { > //high And low Byte (Hex div To 4Bit) > TARGETPOSH = TARGETPOS / 0x100; > TARGETPOSL = TARGETPOS %0x100; > > I2C_Start(); > I2C_Write(TMC222); > I2C_Write(0x8B); > I2C_Write(0xFF); > I2C_Write(0xFF); > I2C_Write(TARGETPOSH); > I2C_Write(TARGETPOSL); > I2C_Stop(); > } > > //----------------------------------------------------- > // STATUS S1 REQUEST > //----------------------------------------------------- > void S1REQUEST(void) > { > COMMAND=0x81; > GETSTAT(); > } > > //----------------------------------------------------- > // STATUS S2 REQUEST > //----------------------------------------------------- > void S2REQUEST(void) > { > COMMAND=0xFC; > GETSTAT(); > ACTPOSH=DATA2; > ACTPOSL=DATA3; > } > > //----------------------------------------------------- > // READ STATUS > //----------------------------------------------------- > void GETSTAT(void) > { > I2C_Start(); > I2C_Write(TMC222); > I2C_Write(COMMAND); > I2C_Stop(); > > I2C_Start(); > I2C_Write(TMC222+1); > DATA1 = I2C_Read_ACK(); > DATA2 = I2C_Read_ACK(); > DATA3 = I2C_Read_ACK(); > DATA4 = I2C_Read_ACK(); > DATA5 = I2C_Read_ACK(); > DATA6 = I2C_Read_ACK(); > DATA7 = I2C_Read_ACK(); > DATA8 = I2C_Read_NACK(); > I2C_Stop(); > } > > //----------------------------------------------------- > // SEND COMMAND To TMC222 > //----------------------------------------------------- > void PUTCOMMAND(void) > { > I2C_Start(); > I2C_Write(TMC222); > I2C_Write(COMMAND); > I2C_Stop(); > } Hallo, hast du diese Version schon probiert? http://ccpro.cc2net.de/Download/file.php?ID=4 Grü�e Ulli | |
Antwort schreiben Antworten: Re: TMC 222 an Ministation (von Florian - 17.06.2011 20:33) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum