Hola buenas, porfa alguien me puede hechar la mano con algunas recomendaciones sobre este código(Adjunto código) en PIC C COMPILER resulta que quiero obtener la data de una celda de carga, un pt100, un dht22 y medir la frecuencia de un anemómetro. No tengo ningún inconveniente en obtener la data de los sensores, el problema en si esta en el anemómetro ya que que la frecuencia que se obtiene no se actualiza. Estaba intentado desactivando las interrupciones pero nada.
Adjunto codigo gracias.
#include <16f877a.h>
#include <stdio.h>
#use delay(clock=10M)
#fuses hs,nowdt
#include <MCP3204_modificado.C>
#include "dht22.h"
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=A,bits=8,parity=N)
#priority timer1,ext
int32 valor1,valor2,peso,pt100,humedad,temperatura;
float voltaje2;
int16 Ta,Tb,TICK,F;
float T,Periodo;
#INT_EXT // directiva de interrupcion por cambio de estado en RB0
void interrupcion_RB0(){
Ta= get_timer1();
Tick= Ta-Tb;
Tb=ta;
}
void config_interrupcion(){
SETUP_TIMER_1(T1_INTERNAL |T1_DIV_BY_8);//Prescaler = 8
ext_int_edge(0,L_TO_H); //configuro interrupcion por flanco de bajada
enable_interrupts(INT_EXT); //habilito interrupcion RB0
enable_interrupts(GLOBAL); // habilito interrupcion global
}
void inicializacion(){
adc_init();
dht_init ();
}
void main(){ //funcion principal
set_tris_c(0x04);
set_tris_b(1);
inicializacion();
config_interrupcion();
while(TRUE){
valor1=read_analog(0);
peso=valor1*(10000.0/4095.0);
valor2=read_analog(1);
voltaje2=5.0*(valor2/4095.0);
pt100=(21.598*voltaje2+11.728)*10;
leer_dht22 (dhthum,dthtemp);
delay_ms(50);
humedad=dhthum; temperatura=dthtemp;
T=4.0*8.0/10000000.0;
Periodo=T*Tick;
F=1/Periodo;
printf("peso= %Lu\r\r",peso);
printf("pt100= %3.1Lu\r\r",pt100);
printf("humedad= %Lu\r",humedad);
printf("temperatura= %Lu\r\r",temperatura);
disable_interrupts(int_ext);
disable_interrupts(int_timer1);
printf("\nF= %LuHz\r\r",F);
delay_ms(100);
}
}