Hallo Versuche gerade einem Stepper Motor Controller beizubringen was er machen soll. Jetzt stehe ich vor einem Anfängerproblem. Ich muss die Parameter aus dem Datasheet per I2C an den Contoller senden. Was heist aber z.B. bei IRUN (3:0)? Was muss ich da in bin oder hex eingeben? Danke
Uli schrieb: > IRUN (3:0)? Was muss ich da in bin oder hex eingeben? wird doch wohl in der Doku stehen. Vermutlich ein Strom und man hat 4bit platz also 0-16 (decimal)
die 4bits, sowie sie in der Kopfzeile stehen, also ein wert von 0-15 verschoben um <<4 Stellen nach links
Peter II schrieb: > Uli schrieb: >> IRUN (3:0)? Was muss ich da in bin oder hex eingeben? > > wird doch wohl in der Doku stehen. Vermutlich ein Strom und man hat 4bit > platz also 0-16 (decimal) 0-15...
'(3:0)' heißt in dem Zusammenhang Bit Nummer 0 bis Bit Nummer 3, zusammen also 4 Bit. Bei IRUN ist das noch trivial, die 4 Bit des IRUN Parameters stehen in den oberen 4 Bit des 5. Byte (Byte 4) des SetMotorParam command. Also z.B. so
1 | uint8_t cmdparam[9]; |
2 | uint8_t irun = 3; // 0x0 ... 0xf |
3 | uint8_t ihold = 4; // 0x0 ... 0xf |
4 | |
5 | cmdparam[4] = ( irun << 4 ) | ( ihold & 0x0f ); |
Interessanter ist der Parameter SecPos[10:0], der hat insgesamt 11 Bit
(mit den Nummern 0...10) und ist im SetMotorParam command daher über
zwei Byte verteilt. Die untersten 8 Bit stehen im Byte 7 ('[7:0]') die
oberen 3 ('[10:8]') in den oberen 3 Bit vom Byte 6.1 | uint8_t cmdparam[9]; |
2 | uint16_t secpos = 1000; // 0x000 ... 0x7ff |
3 | |
4 | cmdparam[6] = ( cmdparam[6] & 0x1f ) | ( ( secpos & 0x700 ) >> 3 ); |
5 | cmdparam[7] = secpos & 0xff; |
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.
