Hola.
El compilador de C que utilizo es mikroC PRO. He encontrado una solución muy buena con la ayuda AcoranTf, AngelGris y gera de este foro y me encuentro con el problema de que el código está escrito en CCS C v3.242 y hay muchas cosas que no sé como pasarlas de este compilador a mikroC. Añado el código y si alguien me puede echar una mano le quedaría muy agradecido.
El código es:
#include <18f1320.h>
#fuses HS,MCLR,PUT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NODEBUG,NOWRT
#use delay(clock=20000000)
#use rs232(baud=115200, xmit=PIN_B1, rcv=PIN_B4)
static unsigned int16 ticks, DutyCycleK=0;
static int1 flag_H_TO_L=0;
#int_ext
void ext_isr() {
if(flag_H_TO_L){
ticks=get_timer1();
ext_int_edge(0,L_TO_H);
}
else{
set_timer1(0);
ext_int_edge(0,H_TO_L);
ticks=0;
}
++flag_H_TO_L;
}
void main() {
static unsigned int16 uticks, DutyCycle;
disable_interrupts(global);
disable_interrupts(int_timer1);
disable_interrupts(int_rda);
disable_interrupts(int_ext);
disable_interrupts(int_ext1);
disable_interrupts(int_ext2);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_0(RTCC_OFF);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED);
port_b_pullups(FALSE);
delay_ms(1000);
flag_H_TO_L=0;
ext_int_edge(0,L_TO_H);
enable_interrupts(int_ext);
enable_interrupts(int_rda);
enable_interrupts(global);
printf("\r\n18F1320 listen on RS232\r\n");
printf(" RC PWM Interceptor\r\n>");
do {
if((ticks!=0)){
disable_interrupts(int_ext);
uticks = ticks; ticks=0;
DutyCycle = (unsigned int16) uticks * 10 / 5000;
if(DutyCycleK!=DutyCycle){
printf("\r\n>%Lu",DutyCycle);
DutyCycleK=DutyCycleK;
}
flag_H_TO_L=0;
ext_int_edge(0,L_TO_H);
enable_interrupts(int_ext);
}
} while (TRUE);
}
Gracias de antemano.