Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Réglage TIMER1 sur pIC18F47K40
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » sam. 13 janv. 2018 12:53 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Je commence à me mordre les doigts d'avoir choisis ce PIC !!! Mais maintenant c'est trop tard pour changer . Je dois donc faire l'effort !

Je n'arrive pas à comprendre le réglage du timer 1.

J'ai essayé de nombreuses combinaisons sans succés ma led test reste éteinte .

Voici le bout de code test, seulement pour faire clignoter une led toutes les 30ms pendant 30ms

Code : Tout sélectionner

#define LED_R      LATC.B2  // Sortie led rouge


char i;

//##############################################################################
//------------------------     INTERRUPTION        -----------------------------
void interrupt(){
  
    if (
TMR1IF_bit){
      
TMR1IF_bit 0;
      
TMR1H     0x15;
      
TMR1L     0xA0;

      
LED_R = ~LED_R;

    }

 }
 
 
void main() {

    
// RAZ des broches
    
LATA LATB LATC LATD LATE 0;

    
// registres des I/O
    
TRISA 0x7F;            // RA7 en sortie pour moteur
    
TRISC 0xFA;            // RC0 en sortie pour moteur et RC2 pour led_rouge
    
TRISB TRISD TRISE 0xFF;

    
// registrse analogiques
    
ANSELA ANSELB ANSELC ANSELD ANSELE 0x00;
 
    
// test de clignotement
    
for (i=0;i<6;i++){
         
LED_R = ~LED_R;
         
delay_ms(1000);
     }
   
    
//  Timer 1
    
TMR1IF_bit 0;       // RAZ du flag
    
TMR1H      0x15;    // remplissage du registre pour 30 ms
    
TMR1L      0xA0;

    
TMR1CLK 0b00000011;  // HFINTOSC
    
T1CON   0b00110001;  // PRESCALER 1:8 ; RD16 = 0 ; Timer ON = 1;

    
TMR1IE_bit     1;     // active l'INT sur dépassement timer
    
INTCON.PEIE  1;     // Active les INT Periphériques
    
INTCON.GIE   1;     // Active toutes les INT
  
  
    


Voyez vous ce qui me manque dans les réglages pour faire clignoter ma LED !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Réglage TIMER1 sur pIC18F47K40
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » sam. 13 janv. 2018 13:35 lien vers la Data-Sheet : Cliquez ici

Bon ben j'ai écris trop vite .

Voila la configuration de mon timer 1 qui fonctionne:

Il faut mettre Fosc sur Fosc et non sur HFINTOSC comme je le croyais !
Il faut mettre aussi RD16 à 0 pour avoir des mots de 8bits pour al configuration aussi §

Code : Tout sélectionner

 
    
//  Timer 1
    TMR1IF_bit = 0;       // RAZ du flag
    TMR1H      = 0x15;    // remplissage du registre pour 30 ms
    TMR1L      = 0xA0;

    TMR1CLK = 0b00000001 ;
    T1CON   = 0b00110001;  // PRESCALER 1:8 ; RD16 = 0 ; Timer ON = 1;

    TMR1IE_bit     = 1;     // active l'INT sur dépassement timer
    INTCON.PEIE  = 1;     // Active les INT Periphériques
    INTCON.GIE   = 1;     // Active toutes les INT
 
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités