Bonjour,
j'ai fini la programmation de mon pic et je voudrais vérifier mon programme en le simulant sur Mplab
est ce que quelqu'un peut m'expliquer comment on fait pour simuler le programme
merci d'avance
-----
Bonjour,
j'ai fini la programmation de mon pic et je voudrais vérifier mon programme en le simulant sur Mplab
est ce que quelqu'un peut m'expliquer comment on fait pour simuler le programme
merci d'avance
Bonjour bibou1234,
Le sujet est vaste ! MPLAB est super quand on le maîtrise !
Je ne sais sous quel langage tu travailles, je te poste un PDF , qui me semble pas mal. L'auteur est M.Cremmel Marcel, de l'académie de Strasbourg
Bon courage
Bonjour Laboum,
Avant de valider ton document, j'aurais besoin de garanties quant aux droits: peux-tu publier ce document, l'auteur donne-t-il son accord à la diffusion?
L'alternative est de poster l'url vers ce document, s'il est accessible. Cela évite les soucis de ce genre.
Pour la modération, Tropique.
Dernière modification par Tropique ; 18/01/2010 à 15h52.
J'ai reussi a simuler mon programme, j'ai trois erreurs qui s'affiche :
"Tad time is less than 1.60µs"
"No stimulus file attached to ADRESL for A/D"
"Watchdog Timer event occurred. Break in execution requested"
qu'est ce que cela veut dire?
lorsque je simule mon programme la fenetre du programme "math16. H" s'ouvre et on voit que le programme reste bloqué (il fait une bloucle indéfiniment jusqu'a que je l'arrete"
Que dois-je faire?
Bonjour Tropique,
Désolé voilà http://electronique.marcel.free.fr/
Espérant que ce sera profitable pour bibou1234
Merci
Salut,
Peux-tu poster ton code ?
Je pense que tu trouveras des infos sur le simulateur dans les cours de Bigonoff et aussi dans les webseminars de Microchip.
En particulier ceux dans la catégorie Development Tools.
a+
Voila le code
Merci
j'utilise le pic 16F876 et le langage C (j'avais oublier de préciser)
Bonjour,
et pourquoi tu veux le simuler?
c'est la question que je me pose...
pourquoi ne pas simplement le charger...
et l'executer...
et si tu t'interressais vraiment à la sim...
tu poserais même pas la question...
comment je fait...
enfin bon....
vede
;O]
vu que Mr BigOnOff en parle dés le premier chapitre...
et que c'est dispo depuis des années...
ps :
je présume que c'est le premier programme pour pic
que tu développes...
le langage C... mais quel IDE/Compilo
(j'ai la flemme de regarder ton code et déduire....)
t'as pas peur que même la simu ne suffise pas...
si t'as jamais fait clignoter une led...
v;O]
rere
et c'est sur, que si tu t'informes via les webseminars de Microchip.
En particulier ceux dans la catégorie Development Tools.
gentiments proposés par RISC
tu auras toutes les réponses à tes questions....
ceci est un monologue...
merci genias de le supprimer...
j'ai déja essayé directement avec le pic
malheureusement ca n'a pas marché
les leds se sont toutes allumées en mm temps et le pic s'est mis a chauffé
donc laisse tomber la simu...
commence par faire clignoter une led...
correctement...
delà t'en "branche" 2...
sans que ça chauffe ;O]
bon courage...
et bonn'journée...
v ;O]
PS oui c'est la première fois que je fais un programme, il faut bien une première fois à tout non?
je lesimule parce que on ma demandé de le simuler avant c'est tout.
ben oui ;O]
je te conseille de commencer par faire clignoter une led sur un port...
en simu (puisque on te le demande) et en réél (pour être sur)...
delà, quand tout "fonctionne", tu attaques le reste...
v ;O]
(enfin moi je fais comme ça... quand j'apprend...j'y vais par étapes...)
toujours pas avancé, ca fait deux jours que je rame
ben, pas bonjour ;O]
faut aller voir le site de Mr BigOnOff...
c'est expliqué... pas à pas... en commençant
par le début... dés le premier chapitre...
v ;O]
ps : si en 2 jours t'as pas réussi à faire clignoter une led...
ben... en effet... il y a un problème... poste le schéma qu'on
se fasse une idée/puisse éspèrer t'aider...
re ps : dans la simu de MPLAB... ben ya pas de leds ;O]...
c'est au niveau de la programmation que je n'y arrive pas
Bonjour,
j'ai un nouveau problème qui s'offre à moi (encore et toujours d'ailleurs..)
Je voudrais simuler une tension analogique en entrée de mon pic
il faut que je crée un fichier .scl (si j'ai bien compris)
ma question est : comment je dois l'écrire
Je tenais à vous remercier pour vos réponses meme si la plupart du temps je comprends pas grand chose à vos réponse
mais merci quand même
salut bibou1234,
"Tad time is less than 1.60µs"
il faut que tu change le temps d acquisition. par exple, si tu avais ADC_12TAD, tu mets ADC_20TAD a la place, lors de l initialisation de la conversion A/N.
"No stimulus file attached to ADRESL for A/D"
cela veut dire que il n y a aucune tension a mesurer par ton programme, normal, puisque ton PIC n est pas connecté.
"Watchdog Timer event occurred. Break in execution requested"
je n en ai aucune idée, désolé
a plus
Salut,
Il est tout à fait possible "d'injecter" des valeurs EXTERNES sur les broches analogiques dans le simulateur. Pour cela il faut créer un fichier stimulus. Pour en savoir plus, voir le forum dédié au simulateur de MPLAB ("sous topic")
Tu as activé le Watchdog dans les bits de configuration. Si tu ne le remet pas à zéro, il provoque un Reset. Il est aussi possible que tu aies décidé de l'utiliser pour sortir du mode SLEEP."Watchdog Timer event occurred. Break in execution requested"
Il existe des tutoriels anglais (webseminars) sur le simulateur. Voir dans la catégorie Development Tools sur cette page.
a+
Bonjour
merci pour vos réponses ça m'aide bien
nouveau problème:
Voici mon code pour faire la conversion
while (1) {
// Analog Digital Conversion configuration
//
ADCON0.0 = 1; //switch on ADC
ADCON0.1 = 0;
ADCON0.3 = 0; //CHS0=0 //bit which enable to select analog input to convert
ADCON0.4 = 0; //CHS1=0 //bit which enable to select analog input to convert
ADCON0.5 = 0; //CHS2=0 //bit which enable to select analog input to convert
ADCON0.6 = 0; //ADCS0=0 // bit which enable to choose frenquency for ADC
ADCON0.7 = 1; //ADCS1=1 // bit which enable to choose frequency for ADC
ADCON1.0 = 0; //PDCFG0=0; // enable to config pin like analog or digital input with this config AN0=AN1=AN4=analog input
ADCON1.1 = 0; //PDCF1=0; // enable to config pin like analog or digital input
ADCON1.2 = 0; //PDCF2=0; // enable to config pin like analog or digital input
ADCON1.3 = 1; //PDCF3=1; // enable to config pin like analog or digital input
ADCON1.4 = 0;
ADCON1.5 = 0;
ADCON1.6 = 0;
ADCON1.7 = 0; //ADFM=0 //Left justified
while (ADCON0.2 == 1); //(ADCON0.2) bit which launch conversion
{
nop();
}
Result.low8 = ADRESH; // to retrieve only 16-Bits word instead 2 8-bits word
Result.high8 = ADRESL; // to retrieve only 16-Bits word instead 2 8-bits word
SensorValue = Result<<8;
SensorValue *= 500;
//SensorValue /= 1024;
La conversion se fait bien, mais je n'arrive pas a retrouver mon résultat du result sur SensorValue.
comment je dois faire pour le retrouver?
merci
Salut,
J'ai pas vu ou tu lançais la conversion dans ton soft ??
Tu testes si la conversion est finie mais il faut la lancer avant.
a+
comment ca je ne lance pas la conversion?
j'allume bien le convertisseur, et la conversion se fait puisque j'obtiens une valeur non?
Bonjour,
vite fais je dirais que la conversion est "lancée" là:
ADCON0.0 = 1; //switch on ADC
(met à 1 le "bit GO" de ADCON0)
mais après les opérations sur SensorValue...
SensorValue = Result<<8;
SensorValue *= 500;
ben je comprends pas bien le but...
et surtout le résultat espéré...
vede
;O]
rectifications :
ADCON0.0 = 1; //switch on ADC
(ADCON0.ADON)
allume le convertisseur...
mais ne lance pas de conversions...
et
c'est le bit 2 de ADCON0 qui lance une conversion
(ADCON0.GO/DONE)
donc ton code ne fait jamais aucune conversion...
vu que ADCON0.GO/DONE n'est jamais "mis" à 1...
vede
;O]
ps : à lire :
http://ww1.microchip.com/downloads/e...Doc/30292c.pdf
notamment la section 11
ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE
on veut que la valeur du SensorValue soit la valeur du Result justifié a gauche,
apres on la multiplie par 500 et on l'a divise par 1023 pour avoir une valeur entre 0 et 500
voila
On veut que la valeur Sensor Value soit compris entre 0 et 500 pour pouvoir la comparer ensuite
oui ça j'ai bien compris...
c'est le "calcul" pour y arriver qui me déroute...
pourquoi pas simplement faire
SensorValue = Result / 2;
juste après la "conversion"...
(enfin... après la récupération de l'état des registres ADRESL et ADRESH)
car comme l'a bien supposé RISC précedemment,
pour l'instant, le code ne fait aucune conversion...
vede
;O]
J'ai mis
ADCON0.2 = 1 (<== donc là la conversion se fait non?)