je reviens aupres de vous pour un problème de config dont je me prends la tete depuis qqs jours
je travaille sous:
-Windows 10
-Mplab X v4.01 et ICD3
-Compilateur Hi TECH (-> langage C)
-Pic 16f876A
Le but de mon programme est de faire du pas à pas en mode debug
Pour cela , j'ai réalisé un petit programme séquentiel au rythme d'un quartz de 20 Mhz fort simple commandant 4 led: (code source ci-dessous)
Configuration Materiel
Pic alimenté via platine sous 5volts
icd3 power activé en 5volt
MCLR sur ICD3
VSS & VDD sur ICD3
Pin RB6 et RB7 sur ICD3
A/programmation
1/la compilation se passe bien
2/la programmation aussi
3/le pic fonctionne de façon normal
B/en mode debug: ça se complique
* toujours dans la meme configuration d'alimentation
-ça compile
-ça programme
-ça se lance (Running) automatiquement
Mais:
au moment de la pause, le programme se fige
Target Halted
The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. The most common causes for this failure are oscillator and/or PGC/PGD settings.
Failed getting PC
je comprends que la cause est peut etre due
1/aux Pin RB6/RB7
INIT_DIRPORTB;//TRISB=0b11000000
//[rB7-rB4]=Entree--->(rb7 rb6) mode ICSP
je suis pourtant bien configuré en mode ICSP
2/Aux Bits de config:
__CONFIG (FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_ON & LVP_ON & CPD_OFF & WRT_OFF & CP_OFF );
HYPOTHÈSE 1:est-ce un probleme de conf?
->j'ai bien pensé à configurer de façon manuelle avec DEBUG_ON (datasheet 16f876a) meme si la fenetre de
de MplaX ne me le propose pas .configuration Bits
__CONFIG (FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_ON & LVP_ON & CPD_OFF & WRT_OFF & DEBUG_ON & CP_OFF );
-> Cela ne résoud rien , je n'arrive toujours pas à communiquer avec mon pic
HYPOTHÈSE2:est ce un problème de configuration des options de MplabX?
HYPOTHÈSE3:est ce un probleme de version de pic?
on ne peut faire de debug in real time avec la version A du 16f876?
--> pourtant la doc ne me dit pas le contraire puisqu'il y a une config dédicacé au debug
Par avance je vous remercie à tous pour vos lumieres à ce sujet, car pour le moment je ne peux avancer dans mon projet
Code : Tout sélectionner
//----------------------------------------------------------------
//*******************inclusion des fichiers***********************
//----------------------------------------------------------------
#include <htc.h> //chargement des en-tete issu du compilateur lors de la compilation
//#include <pic.h> //chargement des en-tete issu du compilateur lors de la compilation
#include <pic16f876a.h> //chargement des en-tete issu du compilateur lors de la compilation
//------------definition des registres Systemes---------------------------
#include "definition_registre_16f876.c"//chargement du fichier issu du dossier local lors de la compilation
//------------definition des fichiers temporels---------------------------
// on defini la valeur du Quartz en Hz utilisé sur le pic
#define _XTAL_FREQ 20000000
// on peut utilser les fonctions declarées dans <pic.h> pointé par <htc.h>
// __delay_us(1)-> valeur imprecise verifiée à l'oscillo (tjrs +4µs mesuré)
// __delay_ms(1)-> valeur precise verifiée à l'oscillo
// __delay_s(1) -> valeur precise verifiée à l'oscillo
//-----------definition des fusibles de configuration
//
__CONFIG (FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_ON & LVP_ON & CPD_OFF & WRT_OFF & CP_OFF );
//definition des varibles Generales
//----------------------------------------------------------------
//---------------------------------E/S-----------------------------------------------
//#define inter RA0 // pour donner un nom aux pattes de sorie ou entrée
#define led1 RA1 // pour donner un nom aux pattes de sorie ou entrée
#define led2 RA2
#define led3 RA3
#define led4 RB0
#define led5 RB1
#define led6 RB2
#define led7 RB3
#define led8 RB4
#define led9 RB5
//---------Declaration des variables------------------------------
//----------------------------------------------------------------
//***********************Prepo************************************
//----------------------------------------------------------------
//----------------------------------------------------------------
//***********************Debut Prog Main()************************
//----------------------------------------------------------------
void main(void)
{
//---------initialisation-------------------------
//initialisation des registres
INIT_OPTION; //= 0b00000000
INIT_ADCON1; //=0b00000110//I/O en mode Numerique
INIT_INTCON; //=0b00100000//interruption generale desactivée
//phase de direction des ports
INIT_DIRPORTA;//TRISA=0b00000001
INIT_DIRPORTB;//TRISB=0b11000000
//[rB7-rB4]=Entree--->(rb7 rb6) mode ICSP
//[rB5-rB0]=Sortie
INIT_DIRPORTC;// =0xff// portc en entree {capteurs}
//phase d'initialisation
PORTA = 0; //Initialisation des pattes du microcontroleur
//car les entrées du port A sont à l'alimentation du pic mise à 1
PORTB = 0; //Initialisation des pattes du microcontroleur
//car les entrées du port B sont à l'alimentation du pic mise à 1//
//Vérification des sorties----------------------------------------------
while(1) //Faire ce qu il y a entre accolade tant que vrai (1)
{
led1=1;
led1=0;
led2=1;
led2=0;
led3=1;
led3=0;
led4=1;
led4=0;
}
}

