Projet sur PIC16F, ça merdouille [stage fin DUT] - Aide aux devoirs - Emploi & Etudes
Marsh Posté le 24-04-2008 à 11:01:10
ReplyMarsh Posté le 24-04-2008 à 12:12:59
Je viens de constater qu'une fois arrivé à l'avant dernière ligne ==> movwf TPSResetTMMSB
Mon registre STATUS passe à 3F = 00111111... Il y a donc, en une ligne :
- levée du flag C ==> retenue (carry)
- levée du flag DC ==> retenue numérique (digital carry)
- levée du flag Z ==> résultat math = 0
Et le registre W passe à 00 puis à FF l'instruction suivante...
Une petite idée sur comment un movwf peut me mettre ces 3 flags à "1" ?
Un problème de mémoire ?
Marsh Posté le 24-04-2008 à 13:56:47
Bon bah résolu en créant un nouveau projet et en copiant/collant tout mon code dans le nouveau
Pas très pro tout ça
Marsh Posté le 24-04-2008 à 10:57:01
Hello HFr !
Avant de rentrer dans le vif du sujet, je plante un peu le décor...
Je suis étudiant en fin de 2e année de DUT Génie Electrique et Info Industrielle.
Je suis actuellement en stage, jusque mi-juin, et mon projet pour l'heure est de concevoir un module d'identification par clé numérique.
Il faut que je mette en place, autour d'un PIC 16F648A (pour le moment) un protocole d'E/S pour aller chercher les données contenues sur une mémoire type Touch'Memory (composants Dallas type piles boutons).
Bref, pour le moment, j'en suis à (tenter d') aller lire les infos contenues sur la Touch'Memory, par le biais d'un bit de mon PIC (bit RB4).
Je sais que HFr n'a pas une vocation purement électronique (genre ABCDElectronique ou autres futura-science), mais je vous soumets tout de même un petit problème que je rencontre pendant mon stage car je sais que beaucoup d'entre vous ont de bonnes connaissances dans ce domaine...
Voilà, j'ai mon code assembleur qui simule correctement, qui suit à la lettre le protocole imposé par le Dallas (1 temps de RESET avant de pouvoir recevoir les DATA contenues), mais lorsque je passe à l'émulation sur ICD2, l'exécution plante juste avant un return au programme principal :
[...]
Init
[...]
call ChargeTPSRepos
call ChargeTPSResetLSB
call ChargeTPSResetMSB
goto Main
[...]
ChargeTPSRepos
movlw 0x16
movwf TPSRepos
return
ChargeTPSResetLSB
movlw 0xFF
movwf CTPSResetLSB
movwf TPSResetTMLSB
return
ChargeTPSResetMSB
movlw 0x01
movwf CTPSResetMSB
movwf TPSResetTMMSB
return
[...]
Au moment précis (visible en émulation pas-à-pas) où j'arrive sur le return que j'ai coloré en rouge, le programme ne retourne pas au Init, mais fait une boucle sans fin et finit par me planter MPLAB IDE...
Voilà, ça fait quelques jours que je suis bloqué à cet endroit, j'ai d'abord cru que ça pouvait venir du nombre de ligne dans le sous-programme (à la base il n'y avait qu'un seul sous-prog pour charger mes tempos...) mais ça ne change rien de séparer en petits sous-prog...
Bref, si vous avez une petite idée, n'hésitez pas à me faire signe
Je vais me renseigner autour de moi aussi, y a bien un grand manitou du PIC dans les parages !!
Merci d'avance
Damien
---------------
La DiBerie | Rehost | Link