Autor Tema: Controlar tiempo con TIMER0 y ADC  (Leído 1257 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Controlar tiempo con TIMER0 y ADC
« en: 04 de Noviembre de 2010, 17:05:52 »
Buenas estoy desallonado un codigo que genere un tiempo y ese tiempo yo lo pueda variar con dependiendo del valor que tiene el comversor. El problema que tengo es que el tiempo es siempre el mismo. Osea el led que esta en RA1 no cambia su velocidad nunca!!

aca les dejo el codigo.

Código: [Seleccionar]
#include <18f2550.h>
#DEVICE ADC=10

//FUSES Y OCILADOR
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
#use delay(oscillator=20M)

//DEFINO PARA EL LCD
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_B1
#define LCD_E PIN_B2

//INCLUDE LIBRERIAS
#include <LCD.lib>

//Variables GLOBALES
float voltaje;
int16 analogico=0;

//INTERUCCION DEL TIMERO
#INT_AD
void AD_isr()
{
   voltaje=Read_ADC(ADC_READ_ONLY);
   analogico=voltaje;
   //voltaje=(voltaje*5)/1023;
// set_timer0(voltaje);
}
#int_RTCC
void RTCC_isr(){
output_toggle(pin_a1);
set_timer0(analogico);
}



//MAIN
void main(void){
lcd_init();
delay_ms(100);
setup_timer_0(RTCC_DIV_32|RTCC_INTERNAL);
    setup_adc(ADC_CLOCK_INTERNAL);
    setup_adc_ports(AN0_ANALOG);
    enable_interrupts(INT_AD);
enable_interrupts(int_RTCC);
enable_interrupts(global);



for(;;){
Read_ADC(ADC_START_ONLY);   
lcd_gotoxy(1,1);
printf(lcd_putc,"Valor del conversor");
lcd_gotoxy(1,2);
printf(lcd_putc,"%lu     ",analogico);

}
}

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: Controlar tiempo con TIMER0 y ADC
« Respuesta #1 en: 08 de Noviembre de 2010, 10:10:58 »
yo empezaria por el tema de las variables
una variable int16 darle el valor de un float es medio imposible, por eso no te debe de cambiar los valores
podrias o declarar las variables como float o dejar las variables como int16, por mi poca experencia no podria decirte mucho pero yo creo que seria mejor dejarlo como int16 a las dos variables
espero haberte sido un poco de ayuda
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Controlar tiempo con TIMER0 y ADC
« Respuesta #2 en: 08 de Noviembre de 2010, 12:29:28 »
Como está en este momento el programa (con la línea "voltaje = (voltaje*5)/1023" comentada), la variable voltaje siempre va a tomar un valor entero y positivo. Por lo cual yo definiría a voltaje como int16.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas