Paso 5: mejoras
Lo que me lleva a mi siguiente punto: este código es una mierda. Usted puede hacer apenas cualquier proceso de señalización para el servo, que es ridículo porque la gran mayoría de ese tiempo es pasada encerrado en una función de retardo. También, es difícil predecir cuánto arriba tienes de otras partes del código que podrían lanzar la sincronización esa constante de proporcionalidad no han requerido un experimento para que funcionar correctamente.Lo que debe usar este código en lugar de retrasos es el PIC en contadores de tiempo. Este código podría ser algo como:
OpenTimer0 (TIMER_INT_OFF &
T0_SOURCE_INT & T0_16BIT &
T0_PS_1_2); Creo que esto hace que un temporizador que levanta una bandera cada ms 21,8
mientras que {} (1)
mientras (!. INTCONbits.TMR0IF) {/ / esperar contador de tiempo fijar la bandera
hacer cosas útiles
}
INTCONbits.TMR0IF=0; RESET indicador de temporizador
enviar pulsos al servo
}
Sé que dije que iba a ser un pulso cada 10 a 20 ms, pero ms 21,8 es bastante estrecho y servos de manía son generalmente muy indulgente.