Hola todos soy nuevo en foro y en esto de programar PIC´s. Utilizo un pic18f4520 y estoy intentando que mi programa realice la siguiente función;
El timer0 va a guardar los pulsos que meteré por la puerta A4 cuando este alcance el valor de 10 entonces el pwm se activara e enviara la señal a un servo que tengo conectado. A parte de esto también tengo un potencio-metro que dependiendo del valor encenderá un led u otro. El problema es que el potencio-metro funciona perfectamente hasta que le meto los diez pulsos, entonces el potencio-metro deja de funcionar.
INTCONbits.T0IF Es un flag que se pondrá a uno cuando el timer0 llegue a los diez pulsos
#include <p18F4520.h>
#include <pwm.h>
#include <timers.h>
#include <stdlib.h>
#include <compare.h>
#include <adc.h>
#include <capture.h>
#include <delays.h>
#pragma config OSC = INTIO67
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config DEBUG = OFF
#pragma config MCLRE = ON
unsigned char period2 = 0x60;
unsigned int duty_cycle2 = 127;
int conversion;
void main(void)
{
OpenADC(ADC_FOSC_32 &
ADC_LEFT_JUST &
ADC_12_TAD, ADC_CH0 &
ADC_INT_OFF &
ADC_REF_VDD_VSS , ADC_1ANA);
TRISB = 0x00; //salida
PORTB = 0x00; //salida
TRISC = 0x00; //salida
PORTC = 0x00; //salida
TRISD = 0xFF; //entrada
PORTA=0x0;//Inicializar PORTA
TRISA=0x10; // habilita R4 como entrada
OSCCON = 0x0A;
while (1){
ConvertADC();
while(BusyADC()==1)
conversion= ADRESH;
OpenTimer0(TIMER_INT_OFF&T0_8BIT&T0_SOURCE_EXT&T0_EDGE_RISE&T0_PS_1_1);//Inicializar timer
INTCONbits.T0IF=0;
WriteTimer0(0b11110110);// complemento A2 del numero 10
while (!OSCCONbits.IOFS)
if(INTCONbits.T0IF==1)
{
OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
OpenPWM1 (period2);
SetDCPWM1 (duty_cycle2);
Delay10KTCYx(200);
WriteTimer0(0b11110110);// complemento A2 del numero 10
INTCONbits.T0IF=0;
}
if(conversion==0b00000000){
PORTBbits.RB0=1;
PORTBbits.RB1=0;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
}
else if(conversion==0b00000111){
PORTBbits.RB0=0;
PORTBbits.RB1=1;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
}
else if(conversion==0b00111111){
PORTBbits.RB0=0;
PORTBbits.RB1=0;
PORTBbits.RB2=1;
PORTBbits.RB3=0;
}
else if(conversion==0b11111111){
PORTBbits.RB0=0;
PORTBbits.RB1=0;
PORTBbits.RB2=0;
PORTBbits.RB3=1;
}
}
}