okay ich habe das problem mit dem auslesen des drehgebers gelöst, aber brauche noch hilfe beim feinschliff:
habe jetzt diesen, zugegeben umständlichen, code zum motor beschleunigen, drehgeberbytes auslesen und abbremsen geschrieben:
Code:
char buffa [4];
char buffb [4];
char buffc [4];
char buffd [4];
int dataa;
int datab;
int datac;
int datad;
/*### Drehgebertest ### */
void vor(void)
{
i2c_init();
i2c_start(0xB0); //Slave Adresse des Motortreiber 1
i2c_write(0x00); //Motor 1
i2c_write(0xFF); //vorwärts
i2c_stop();
waitms(200);
i2c_start(0xB0); //Slave Adresse des Motortreiber 1
i2c_write(0x02); //Byte 2 Drehgeber 1 Position (aus MD23 Data Sheet)
i2c_stop();
i2c_start(0xB1); //Slave Adresse Motortreiber 1 + 1 Bit für Leserichtung
dataa = i2c_read(1); //Lesen
datab = i2c_read(1);
datac = i2c_read(1);
datad = i2c_read(0);
i2c_stop();
sprintf(buffa, "%01d", dataa); //in char umwandeln
sprintf(buffb, "%01d", datab);
sprintf(buffc, "%01d", datac);
sprintf(buffd, "%01d", datad);
sendUSART("\r\n Impulse: "); //senden
sendUSART(buffa);
sendUSART(buffb);
sendUSART(buffc);
sendUSART(buffd);
sendUSART("\r\n Umdrehungen: ");
// hier brauche ich noch eine Umwandlung von den Impulsen zu den Umdrehungen...
waitms(200);
i2c_start(0xB0); //Motortreiber 1
i2c_write(0x00); //Motor 1
i2c_write(0x80); //anhalten
i2c_stop();
}
und es wird mir folgendes am hyperterminal ausgegeben:
Bild hier
leider bekomme ich manchmal eine 8 stellige zahl, manchmal auch nur eine 6 oder 7 stellige 
außerdem: wie kann ich aus den 4 werten die dann zu den impulsen zusammengesetzt werden ein int machen den ich dann durch 360 teilen kann um so die umdrehungen anzuzeigen?
Lesezeichen