Hola:
Veran, mi proyecto consiste en comunicar por cdc una placa con un pic 18f2550 a 4 mhz y Labview. En Labview solo hay 4 pulsadores (arriba abajo izquierda y derecha), que mandan al pic por el puerto B los valores 0x01 , 0x02 , 0x04 o 0x08, segun la direccion seleccionada. Este es el programa que uso en el pic:
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include ".\libreria\usb_cdc.h"
#rom int 0xf00000={1,2,3,4}
void main() {
int8 x;
set_tris_b(0x00);
output_b(0x00);
usb_cdc_init(); // Configuramos al puerto virtual.
usb_init(); // Inicializamos el stack USB.
while(!usb_cdc_connected()) {} // espera a detectar una transmisión de la PC
do{usb_task();
if (usb_enumerated()){ // Espera a que el dispositivo sea enumerado por el host.
if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepción.
x=usb_cdc_getc();
output_b(x);
}
}
}while (TRUE); // bucle infinito.
}
Hasta aqui no hay ningun problema, todo funciona correctamente.
Ahora necesito generar una PWM por software que segun las consignas de Labview haga que dos servomotores giren a izquierda o derecha.
Los servos son Parallax continuous rotation con 1.3ms(para izquierda) o 1.7ms(para derecha) y 20 ms de periodo.
Se que debo usar las interrupciones de los timers:
void TIMER1_isr()
{
set_timer1( xxx );
}
Pero desconozco la forma en que esto funciona.
Un saludo y muchas gracias.
P.D. he usado la busqueda pero ningun hilo me ha resuelto la duda.