Hola:
el codigo que adjunto envia datos cada 250 mseg via serie. en la rutina de interrupcion tengo el printf para enviar y la variable valor. la pregunta es si saben cuanto demoran dichas instrucciones.
supongo que una demora de 250 mseg es suficiente para que no afecte la demora producida por las dos instrucciones en la rutina de interrupcion.
lo que quiero decir es que se cumple casi exactamente el muestreo del valor float, en este caso cada 250 mseg, no ?
#include <16f88.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOWRT,NODEBUG,NOMCLR
#use delay(internal=8M)
#use rs232(baud=9600,xmit=PIN_B5,rcv=PIN_B2,parity=N)
#use fast_io(a)
#use fast_io(b)
#define LCD_DB4 PIN_A0
#define LCD_DB5 PIN_A1
#define LCD_DB6 PIN_A7
#define LCD_DB7 PIN_A6
#define LCD_RS PIN_B7
#define LCD_E PIN_B6
#include "flex_lcd420.c"
float valor;
#int_Timer1 /*habilitación del timer 0 para cada 1 ms*/
void temporizador() {
valor=123.79;
// temporizador 250 mseg
// 0.25 = (4/Fosc)*Prescaler*(65536-valor)
// Fosc= 8Mhz, Prescaler = 1:8
// 0.25= (4/8000000)*8*(65536-valor) --> valor = 3036
printf("%01.2f",valor); /*Envio valor al puerto serie*/
set_timer1(3036);
}
void main() {
setup_adc_ports(NO_ANALOGS);
set_tris_a(0x00);
set_tris_b(0x00);
output_a(0x00);
output_b(0x00);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); /*Configuración del timer1*/
enable_interrupts(INT_TIMER1); /*Habilitación general de las interrupciones*/
enable_interrupts(GLOBAL);
while(1){
}
}