50 likes | 163 Views
inicio. e rror = set point - roll. inicializar PWM. pterm = error* Kp. inicializar USART. Iterm = istate.Ki. motores = 0%. d term = (error- error_old )* Kd. Comando de START recibido ?. MOTOR A = pterm + iterm - dterm. no. MOTOR B = - pterm - iterm + dterm. si.
E N D
inicio error = set point - roll inicializar PWM pterm = error*Kp inicializar USART Iterm = istate.Ki motores= 0% dterm = (error-error_old)*Kd Comando de START recibido? MOTOR A = pterm + iterm - dterm no MOTOR B = -pterm - iterm + dterm si error_old = error PID GO? no Istate = istate + error si
USART Rx Complete Interrupt In rxbuff count = (rxbuff & 0b11110000)>>4 handler= rxbuff & 0b00001111 count = 0 si CALL handler fin no In rxbuff param[count] = rxbuff count = count - 1
Timer1 Compare A Handler Set PWM1A comosalida* Set PWM1B comosalida* Habilitar clock timer0 fin
Timer1 Compare B Handler Set PWM1A comoentrada* Set PWM1B comoentrada* fin
Timer0 Overflow Handler Deshabilitar clock timer0 Set flag PID_GO fin