Utilisation de timer1 (get_timer1())????
Xavi86
Messages postés
14
Statut
Membre
-
chuka Messages postés 980 Statut Membre -
chuka Messages postés 980 Statut Membre -
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();
}
#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();
}
A voir également:
- Utilisation de timer1 (get_timer1())????
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Vous avez utilisé ce numéro de téléphone à de trop nombreuses reprises - Forum Gmail
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
- Imprimante en cours d'utilisation ✓ - Forum Matériel & Système
3 réponses
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)
#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)