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
    microchip

    Re : Les timers sur 16f628

    Bonsoir,

    Tu as oublié d'autoriser PEIE....regarde bien le chapitre sur les interruptions.
    Here to help ;=)

  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...


Sur le même thème :

Discussions similaires

  1. Programme sur un 16F628 (UART)
    Par satora 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 thomas-galvan 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 lolominator dans le forum Électronique
    Réponses: 6
    Dernier message: 02/04/2006, 23h24
  5. pic 16F628
    Par electro.gim dans le forum Électronique
    Réponses: 1
    Dernier message: 15/03/2004, 21h04