Salut,
je suis en train de bidouiller mon 16F877 et étant en vacances, je me suis pas baladé avec tout le matos (breadboard, programmeur etc....) du coup je fais de la simu sur proteus.
je souhaite utiliser le TIMER1 en compteur et là je suis un peu... étonné.
partout, datasheet comprise, je lis que le TIMER1 compte sur les fronts montant (je l'utilise avec le RC0)
pour ma simu j'y ai connecté un interrupteur connecté au Vcc et une résistance de pull-down.
tout va bien, ça compte.... sauf que ça compte les fronts montant et les descendant! quand je ferme l'interrupteur ça compte +1, quand je l'ouvre ça compte aussi +1...
bien sûr je peux utiliser le prédiviseur en le plaçant sur 1:2. mais j'aimerais bien comprendre pourquoi ça compte les montant et descendant... une idée?
voilà mon code (trèèèèèès basique)
Code:#include <htc.h> int blop = 0; void interrupt GestionIT() { if (INTF==1) { // mesure = TMR1L*255/15; PORTD = TMR1L; TMR1L = 0x00; blop = PORTB; // enregistrement de la valeur du port B pour permettre le retour à 0 de INTF INTF=0; } } void main() { //configuration du port D 0 = sortie TRISD=0b00000000; //mettre la sortie RD7 à 0 PORTD = 0b00000000; // autoriser les IT GIE = 1; T0IE = 0; T0IF=0; PEIE=0; INTE = 1; INTF=0; // initialisation timer0 et port B, prescaler = 256 TRISB=0xFF; PORTB=0; OPTION_REG = 0b11000111; TMR0 = 0x3D; // initialisation timer1 TRISC| = 0xFF; TMR1H = 0x00; TMR1L = 0x00; T1CON = 0b00000111; while(1) { } }
-----