Utilisation de timer1 (get_timer1())????

Fermé
Xavi86 Messages postés 7 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 18 mai 2010 - 29 avril 2010 à 18:59
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 29 avril 2010 à 19:30
Bon jour . quand j 'utilise la fonction get_timer1(); (programme avec PICC compiler ) j'obtient des valeurs bizarre . je comprend pas ou se trouve le problème ,dans l'affichage de résultat ,ou dans l'utilisation du TIMER1. voila le programme et je vous remercie de m'aider.
#define GET_DISTANCE(t) (t / 58)
#define DISTANCE_INFINITE (0xffff)
#define use_portd_lcd TRUE
unsigned int16 echo_delay;
float dis=0;
void monitor_distance_sensor(void)
{
output_high(PIN_B3);
delay_ms(300);
output_low(PIN_B3);
while(!input(PIN_B4)) ;
disable_interrupts(GLOBAL);
set_timer1(0);
while( input(PIN_B4) );
echo_delay = get_timer1();
enable_interrupts(GLOBAL);
if (echo_delay >= 35000) {
dis = DISTANCE_INFINITE;
}
else {
dis = GET_DISTANCE(echo_delay);
}
delay_ms(50);
printf(lcd_putc,"echo_delay=: %lu",echo_delay);
delay_ms(5000);
}



void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
lcd_init();
set_tris_b(0b00010000);
output_low(PIN_B3);
monitor_distance_sensor();
}

3 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 377
29 avril 2010 à 19:02
salut,
c'est quoi comme PIC?
Tu as essayer de faire l'init du timer sans passer par les fonction?
0
Xavi86 Messages postés 7 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 18 mai 2010
29 avril 2010 à 19:14
C'est ce que j'ai utiliser comme initialisation du programme avec un PIC16F877. J'AI pas compris la deuxième question (Tu as essayer de faire l'init du timer sans passer par les fonction?)
#include <16F877.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES RC //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD

#use delay(clock=4000000,crystal)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 377
29 avril 2010 à 19:30
Initialiser le timer1 directement avec les registres...sans passer par les fonction predefini..(ici les registres T1CON,PIR1,PIE1,TMR1L,TMR1H,INTCON)
0