Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > MPLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/08/2009, 13h13   #1
marc02110
Invité de passage
 
Inscription : août 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 3
Points : 0
Points : 0
Par défaut Problème d'activation d'interruption avec MCC18

Boujour à tous les membres de ce forum

J'ai peut etre fait une erreur de manipulation et envoyé mon message 2 fois.
Je m'en excuse si c'est le cas.

Voila, je me présente, je m'appel marco, j'ai 24 ans.
Je suis étudiant en alternance et mon entreprise m'a demandé de faire une carte électronique utilisant un PIC 18F6527.

Après plus d'une semaine à chercher dans les documentations du PIC, du compilateur, sur le net et demander des avis un peu partout, je m'en remet à vous pour trouver la solution à mon problème.

Mon programme fonctionne completement sous le simulateur ISIS, mais en vrai, rien ne va, ou plutôt les interruptions ne vont pas.

J’ai, je pense, bien paramétré mon PIC avec INTCON, PIR, PIE et ADCON.

Le problème étant :

Mon programme refuse de rentrer dans mon interruption. Voici la syntaxe que j’ai utilisé :

Code :
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
void InterruptVectorHigh(void);
void InterH(void);

///////////////         INTERRUPTION            ////////////////////

#pragma interrupt InterH
void InterH(void)
{                                                          // code d’interruption
        if(INTCONbits.TMR0IF)                                                              
        {           
                  INTCONbits.TMR0IF = 0;    // réinitialisation du flag d'interruption
                  PORTGbits.RG4 = 1;                                        
        }
}

///////////////     VECTEUR D’INTERRUPTION     ////////////////////

#pragma code InterruptVectorHigh = 0x08                      
void InterruptVectorHigh(void)                                                                
{

          _asm 
          goto InterH       // code à mettre en assembleur
          _endasm                                                                                  
}
#pragma code                                                  


////////////////     MAIN    //////////////////////////////////////

void main(void)                              // programme principale
{
         if(BP_Lecture)                                                              
         {           
                   T0CONbits.TMR0ON =1 ;                                              
         }
}
Je veux que la pin G4 soit actionnée.

Le code que j’ai écrit dans ‘IntreH’ fonctionne bien lorsque je le met dans le ‘main’ (La pin G4 est bien actionnée) mais pas dans ‘InterH’.

On appel bien le timer avec T0CONbits.TMR0ON =1 ; et INTCONbits.TMR0IF se met bien à 1 également.

Se peut il que dans la configuration de bits, des adresses (dont l’adresse 0x08) soit protégées ce qui empêcherait d’aller au vecteur d’interruption ? j'ai tout mis sur "disable"
J'utilise la fonction boatloader à la fin de mon programme, ca ne peut pas être ca qui poserait problème?

Lorsque je transfere le programme, MPlab m'afiche cela :

Citation:
Programming...
The following memory regions failed to program correctly:
Configuration Memory
Address: 00300009 Expected Value: 000000c0 Received Value: 00000040
Programming failed
J’ai téléchargé la doc du compilateur MCC18, que j’ai utilisé pour mes essais, mais sans succès. Je suis également allé sur le site de Microchip pour des exemples, mais ils sont en assembleur, j'ai aussi utilisé l'exemple d'interruption implanté dans mon compilauter MCC18.

Rien à faire, ça ne marche pas.

Quel est votre avis sur ce problème ? aurais-je mis une pin à 1 alors qu'il ne faudrait pas?

Merci d'avance pour vos reponses
marc02110 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h59.


 
 
 
 
Partenaires

Hébergement Web