Hallo Workwind,
beim Programm NIBO2-Terminal ist mir aufgefallen, dass bei Register 7 - 9 die Eingabe negativer Werte nicht möglich ist.
Eine einfache Lösung der Aufgabe ist eine Erweiterung des Motor Mode:
if (WRITE_REG(NSPREG_MOTPWML) || WRITE_REG(NSPREG_MOTPWMR) || WRITE_REG(NSPREG_MOTPIDL) || WRITE_REG(NSPREG_MOTPIDR) || WRITE_REG(NSPREG_MOTMODE) ) {
int16_t templ,tempr; // negative Motor PID
templ = nsp_registers[NSPREG_MOTPIDL] * (-1);
tempr = nsp_registers[NSPREG_MOTPIDR] * (-1);
switch (nsp_registers[NSPREG_MOTMODE]) {
case 0: copro_stopImmediate(); break;
case 1: copro_stop(); break;
case 2: copro_setPWM (nsp_registers[NSPREG_MOTPWML], nsp_registers[NSPREG_MOTPWMR]);
case 3: copro_setSpeed (nsp_registers[NSPREG_MOTPIDL], nsp_registers[NSPREG_MOTPIDR]); // +PID L, +PID R
case 4: copro_setSpeed (templ, nsp_registers[NSPREG_MOTPIDR]); // -PID L, +PID R
case 5: copro_setSpeed (nsp_registers[NSPREG_MOTPIDL], tempr); // +PID L, -PID R
case 6: copro_setSpeed (templ, tempr); // -PID l, -PID R
}
}
Lg Georg