IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probleme de la déclaration des timers et des interruptions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut probleme de la déclaration des timers et des interruptions
    Salut tout le monde,
    je vous présente mon projet qui permet la
    détermination de la fréquence d'un signal d'entrée analogique par un pic 16f877,
    le résultat s' affiche sur un écran lcd 2x16,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    const char TIMER_START_VALUE = 8;
    const char TIMER_RELOAD_VALUE = 125;
     
    char sec, updateDisplay, reload;
    long bat;
    char bat_str [] = "     ";
    // LCD module connections
    sbit LCD_RW at RB2_bit;
    sbit LCD_RS at RB1_bit;
    sbit LCD_EN at RD3_bit;
    sbit LCD_D4 at RD4_bit;
    sbit LCD_D5 at RD5_bit;
    sbit LCD_D6 at RD6_bit;
    sbit LCD_D7 at RD7_bit;
     sbit LCD_RW_Direction at TRISB2_bit;
    sbit LCD_RS_Direction at TRISB1_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISD4_bit;
    sbit LCD_D5_Direction at TRISD5_bit;
    sbit LCD_D6_Direction at TRISD6_bit;
    sbit LCD_D7_Direction at TRISD7_bit;
    // End LCD module connections
     
    void main() {
     
      TrisA = 0xFF;
      TrisC = 0;
      PortC = 0;
      TrisD = 0;
      PortD = 0;
      ADCON0 = 0;
      ADCON1 = 0x0F;
      Lcd_Init();                        // Initialize LCD
      Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);// Cursor off
      Lcd_Out(1,1,"Wireless ECG");
      delay_ms(4000);
       Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);
     
     
      LCD_Out(1,1,"Heartbeats :");                 // Write text in first row
      updateDisplay = 0; sec = 0; reload = 0; bat = 0;
      INTCON = 0xC0;       // Set GIE, PEIE
      INT0IE_bit = 1;
      TMR0ON_bit = 0;      // turn off the timer during setup
      TMR0IE_bit = 1;      // Enable TMRO interrupt
      T08BIT_bit = 1;      // Enable 8 bit control (as opposed to 16-bit)
      T0CS_bit = 0;        // use internal clock to trigger timer to count
      PSA_bit = 0;         // Use the prescaler to slow the timer down
      T0PS0_bit = 1;
      T0PS1_bit = 0;
      T0PS2_bit = 1;
      TMR0L = TIMER_START_VALUE;
      reload = TIMER_RELOAD_VALUE;
      TMR0ON_bit = 1;      // start the timer
     
      while (1) {
     
              if (UpdateDisplay == 1) {
                 UpdateDisplay = 0;
                 WordToStr (bat, bat_str); bat = 0;
                 LCD_Out(2,1,bat_str);
              }
     
        }
     
    }
     
    void Interrupt (void) {
     
     if (INTCON.TMR0IF) {
            TMR0L = TIMER_START_VALUE;
            T0IF_bit = 0;
            if(reload == 0) {
                reload = TIMER_RELOAD_VALUE + 1;
                sec = sec + 1;
                if (sec == 15)  {
                 updateDisplay = 1; sec = 0;
                }
            }
            reload = reload - 1;
     }
     
     if (INTCON.INT0IF) {
       bat = bat + 1; INT0IF_bit = 0;
     }
     
    }
    lors de la compilation avec le micro C il me demande la déclaration des timers et des interruptions,
    comment corriger ce problème?

  2. #2
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour elmhmdi

    Généralement, quand tu as un compilateur pour une cible embarqué, tu dois avoir dans le répertoire d'installation de la chaine de développement, un répertoire include contenant des .h. Un de ces point .h contient la description des registres de ton micro contrôleur. souvent c'est du style <nomDuMicro>.h (pour les PIC je n'en suis pas sur à 100%)

    Ce fichier est a inclure dan ton soft.
    Bon courage
    Page sur Developpez : http://pbriand.developpez.com

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Citation Envoyé par bpy1401 Voir le message
    Bonjour elmhmdi

    Généralement, quand tu as un compilateur pour une cible embarqué, tu dois avoir dans le répertoire d'installation de la chaine de développement, un répertoire include contenant des .h. Un de ces point .h contient la description des registres de ton micro contrôleur. souvent c'est du style <nomDuMicro>.h (pour les PIC je n'en suis pas sur à 100%)

    Ce fichier est a inclure dan ton soft.
    Bon courage
    pour la description des registres el se fait automatique l'ors de la création du nouveau projet,j'ai configuré mes paramètres selon mon montageز

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 492
    Billets dans le blog
    1
    Par défaut
    Il te faut quand même le fichier d'inclusion, en tout cas avec MPLAB et C18. Quel compilateur utilises-tu ? Les lignes sbit LCD_RW at RB2_bit; me font penser que ce n'est pas C18, le comportement est peut-être différent.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Il te faut quand même le fichier d'inclusion, en tout cas avec MPLAB et C18. Quel compilateur utilises-tu ? Les lignes sbit LCD_RW at RB2_bit; me font penser que ce n'est pas C18, le comportement est peut-être différent.
    j'utilise le mikro C FOR PIC ou le pic C,bon le problème est posé sur le mikro C

Discussions similaires

  1. Probleme lien des cellules lors des copies auto des onglets sous vba
    Par FEADEUR dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/06/2013, 16h38
  2. Implémenter des timers ou des threads timers sous une application windows dotnet
    Par bruce-willis dans le forum Développement Windows
    Réponses: 16
    Dernier message: 09/09/2011, 11h43
  3. Réponses: 4
    Dernier message: 02/04/2008, 17h51
  4. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  5. Réponses: 3
    Dernier message: 23/01/2007, 08h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo