Para referencia im usando un AVR Atmega 328p, y las especificaciones de servo que usaré dicen esto:
- Ciclo de pulso: 20 ms (supongo que esto significa el "período")
- Ancho de pulso: 600-2400 µs
Desde mi entendimiento, utilizando PWM rápido y digamos un reloj de 1Mhz. Hago el ancho estableciendo 2 valores. Uno cuando alcanza TOP (lo que sea el ancho) (supongamos 1800 ms, creo que la gente usa ICR1 para esto) y luego la parte superior (creo que usualmente usan OCR1A aquí).
Entonces, el tiempo entre ICR1 y OCR1A (¿cuál es la parte superior) es cuando enciendo el "Pin" al Servo en correcto? Y luego se apaga cuando termina OCR1A
IE: enciéndalo cuando llegue a ICR1, apáguelo cuando llegue a OCR1A. Si quiero un ancho de 1.8 ms, ¿necesito hacer esos 1800 pasos correctos? Ya que 1800 "tics" serían 1.8ms (si estoy entendiendo mis unidades correctas)
El ciclo del pulso es donde me confundo. Ese sería el valor "TOP" ¿verdad? IE: si necesito un ciclo de pulso de 20ms. y cada tick a 1MHz es 1/1000 de milisegundos, por lo que para hacer un ciclo de pulso de 20 ms, necesitaré 20000 ticks. porque cada tick es 1/1000 de un ms
¿Estoy pensando en esto correctamente? Creo que las "garrapatas" con la frecuencia de la CPU y luego tratar de resolverlo con ciclos y anchos me están lanzando como un bucle.