Les timers sur 16f628
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Les timers sur 16f628



  1. #1
    MofK

    Unhappy Les timers sur 16f628


    ------

    Hello

    Ça fait un moment que j'essaye de faire fonctionner un programme utilisant le timer0 et timer2, pour but de générer un signal pour servomoteurs de modelisme. Cependant impossible de générer une interruption du timer2!! Et je ne trouve vraiment pas ce qu'il ne va pas. Voici mon programme (en partie, je passe sur les déclarations des variables et les autres fonctions! ):

    Code:
    static void interrupt timer(void){
    	
    	if(TMR2IF){  //IT ttes les 20ms
    
    		RA4 = 1;
    		TMR0 = 256 - impulsion;
    		T0IE = 1;
    		
    		TMR2IF = 0;
    		}
    		
    	if(T0IF){ //génération de l'impulsion de 0.8 à 2.2ms (10*80 à 220µs)
    		countimp++;
    		if(countimp == 10){
    			RA4 = 0;
    			T0IE = 0;
    			countimp = 0;
    			}else{
    				TMR0 = 256 - impulsion;
    				
    				}
    		T0IF = 0;
    		}	
    }
    	
    void main(void){
    	
    	TRISA = 0b00000010;      //RA1 en entrée
    	TRISB = 0b00000000;	// Tout le Port B en sortie
    	CMCON = 0x07;		// Désactivation module comparateur
    	PORTA = 0;			// Reset ports
    	PORTB = 0;
    	OPTION = 0b00001000;   //Osc/4, pas de prédisviseur: 1µs
    	GIE = 1;			        // IT autorisées
    	TMR0 = 106;			// IT toutes les 150µs
    	T2CON = 0b01001010;	// 0b01001010 prescaler = 10 (0b1001: 10-1)), postscaler = 16(0b1x) => IT toutes les 20ms
    	PR2 = 124;
    	T0IE = 0;	
    	TMR2ON = 1;				
    	
    	
    	
    	while(1){
    		
    		if(z == 0){ 
    			addat = readCAN();
    			addat = (addat*3)/5+80;
    			if(addat > 220) addat = 220;
    			impulsion = addat;
    			}
    		affichage7Seg(addat); //affichage de addat sur 7seg
    		
    		
    		}
    }
    je vois pas ce qui manque...
    J'utilise Hi-Tech PICC comme compilateur.

    Merci d'avance!
    Crdlt,
    Benj

    Ps: après j'aurais encore des ptites questions sur le timer1 ...

    -----
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

  2. #2
    invitee0bbe70d

    Re : Les timers sur 16f628

    Bonsoir,

    Tu as oublié d'autoriser PEIE....regarde bien le chapitre sur les interruptions.

  3. #3
    MofK

    Re : Les timers sur 16f628

    Exact!! Ça marche maintenant!! merci!! J'étais sûr que c'était tout bête...
    des ptites questions encore sur le timer1:
    Pour la valeur du timer1 on fait TMR1H - TMR1L = valeur du timer1? Il comptera donc de cette valeur jusqu'au débordement?! Et pour connaitre la valeur à un moment donné on fait pareil?
    Et le bit T1OSCEN est peu comme le TMR1ON? Dans les 2 cas le timer ne compte plus si il est à un? Il est plus "efficace" lorsque l'on compte une impulsion par exemple? (d'après la doc c'est ce bit qui est utilisé)

    Merci encore!
    La logique est le moyen systématique d'arriver à la mauvaise conclusion avec confiance...

Discussions similaires

  1. Programme sur un 16F628 (UART)
    Par invite103abebb dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2008, 21h47
  2. timers sur AVR
    Par zanzeoo dans le forum Électronique
    Réponses: 1
    Dernier message: 03/10/2007, 18h37
  3. Pic 16f628
    Par invite4164fd5c dans le forum Électronique
    Réponses: 9
    Dernier message: 16/12/2006, 16h15
  4. besoin d'aide sur la programmation des TIMERs du PIC svp !!!
    Par invite17e62166 dans le forum Électronique
    Réponses: 6
    Dernier message: 02/04/2006, 23h24
  5. pic 16F628
    Par invitea78e17c9 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/03/2004, 21h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.