Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Reconfigurer OSCCAL 12Fxxx
jeanyves1976
Avatar de l’utilisateur
Membre
Membre
Messages : 19
Âge : 42
Enregistré en : janvier 2018
Localisation : Belgique

#1 Message par jeanyves1976 » jeu. 22 mars 2018 04:24

Bonjour à tous,

Aujourd'hui j'ai reçus mon pickit3 chinois + support zif40 et donc j'ai joué avec un bout de temps cette après midi :lol:
J'ai installé le programme pickit3 programmer v3.10, j'ai rencontré un problème bête, lorsque je voulais fermé le logiciel et bien impossible car accés refusé sur le fichier PICkit3.ini. En fait ce fichier n'existe pas donc j'ai juste créé un fichier texte renommée et le tour et joué. Fichier manquant lors de l'installation... :?:
Bon en suite premier test de lecteur sur un 12f508, j'essai juste de changer un valeur et clique sur "write" et message affiché "Invalid OSCCAL value detected", je clique sur "ok" :-D et resultat "Programming failed at program memory address ..." bref çà n'à pas fonctionné :cry:
Du coup je fait une recherche sur le forum et tombé sur le sujet de JJE GPIO sur PIC 12F675 qui rencontre ce souci mais sans solution.
Ensuite j'ai cherché sur le web et des solutions y en n'a car problème connus depuis bien longtemps :eek:
Dans toutes les solutions il y en n'a une des plus simple en fait...
Dans le logiciel PicKit3 programmer v3.10 et bien dans tools il y a un onglets "OSCCAL" et "set manually"
Vous allez me dire oui mais on n'a plus cette valeur, c'est juste mais au moment où vous connecté le pickit3 et choisi le pic que vous avez sur le support, la valeur par défaut est affiché tand que vous ne fait aucune action. Pour un 12F508 c'est 0CFF.
Donc j'ai testé de mettre cette valeur et cliqué sur "Set"
Cà à l'air de fonctionné car le message "OCSSAL Set" et d'ailleur toute les valeur passe à "FFF" et la dernière valeur affiché et "CFF"
Ben oui du coup je me dit youpi :-D et clique sur "Read" et grand déception en fait il n'a rien fait... J'ai tout essayé mais pas trouvé de solution :mur:
J'ai joué avec "VDD pickit3", "/MCLR" et 5,0v, chez moi je ne sais pas cocher "use VPP first program entry"
Quelqu'un à une autre idée sur ce problème :?:
PS: Par contre j'ai aussi joué avec un 16F628a et là avec mplab et pickit3 programmer tout fonctionne bien, c'est déjà çà lol au moins j'ai pas imprécision de n'avoir rien sut faire 8-)

Reconfigurer OSCCAL 12Fxxx
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 880
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » sam. 24 mars 2018 01:48

Bonsoir jeanyves1976,

Comme tu ne va pas pouvoir programmer ton pic tu montes un quartz de 4 Mhz entre OSC1(patte 2) et OSC2(patte 3)
et tu charges le fichier *.hex que j'ai compilé en bas de page dans ton Pic12F675.

Je mets la source du code pour ceux qui sont intéressés.

Code : Tout sélectionner


    Errorlevel
-302                        ; Supprime le message "Ensure that bank bits are correct" 
    
    LIST      p
=12F675                    ; Définition de processeur
    
#include <p12F675.inc>                ; Définitions de variables

    __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

;***************************** adresse de depart après reset ***********************************

    ORG H'00'
      goto debut      

    ORG  H
'04'  
    retfie

debut
      BANKSEL OSCCAL                      
; passer en bank1 
      call 3FFh 
      movwf OSCCAL                            
         
ecriture_eeprom 
      movfw OSCCAL                        
; placer dans W
      movwf EEDATA                        
; donnée à écrit dans l'eeprom qui est dans W

      clrw                                ; l'
adresse d'écriture dans l'eeprom  
      movwf EEADR                         
;

      bcf INTCON,GIE                      ; on coupe les interruptions 

      btfsc INTCON
,GIE                    ; contrôl si les interruptions sont bien coupés
      goto 
$-D'1'                         ; remonte à la ligne 2 jusqu'a coupures des interruptions 

      bsf EECON1,WREN                     ; autoriser accès en écriture

      movlw 0x55                          ; séquence spécifique (c'
est comme ça, il faut le savoir)
      movwf EECON2                        ; séquence spécifique
      movlw 0xAA                          
; séquence spécifique
      movwf EECON2                        
; séquence spécifique
      bsf EECON1
,WR                       ; lance une opération d'écriture

      btfsc EECON1,WR                     ; on attend que l'
operation d'ecriture soit finie (de l'ordre de la ms)
      goto  $-D'1'                        ; remonte à la ligne 1 jusqu'a fin d'écriture

      bcf EECON1
,WREN                     ; interdiction de l'écriture      

      BANKSEL GPIO                        ; on passe en bank 0
       
 
do_loop     

      goto do_loop

      end



Après il te suffit de lire la valeur avec ton Pickit3, cette valeur devrait se trouver à l'octet 1 de l'eeprom de ton Pic12F675

A voir si ton PicKit3 sort bien du 13 volts sur MCLR, et un bon 5 volts d'alimentation, au moment de la programmation.

Si tu n'as pas 5 volts d'alimentation,(car souvent le gros problème sur les Pickit3 chinois)tu alimentes ton pic avec une alimentation
extérieur qui fait un bon 5 volts.

Osccal.zip


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Reconfigurer OSCCAL 12Fxxx
jeanyves1976
Avatar de l’utilisateur
Membre
Membre
Messages : 19
Âge : 42
Enregistré en : janvier 2018
Localisation : Belgique

#3 Message par jeanyves1976 » sam. 24 mars 2018 02:08

Bonjour à tous,

Temps-x, la procédure que tu utilise permet de sauvegarder la valeur OSCCAL dans la zone mémoire si je me trompe pas or avec le pickit3 je sais lire la valeur qui est de 0000 et donc considéré comme invalide.
En réalité j'ai ce problème avec deux µc le 12f508 et 12f629, ta procédure pourrais fonctionné pour le 12f629 (car identique au 12f675 sans a/d) mais le 12f508 n'a pas eeprom... :?

Par contre oui faut que contrôle la tension de sortie du pickit3, sinon utiliser un 7805 :wink:

Reconfigurer OSCCAL 12Fxxx
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 880
Enregistré en : juillet 2016
Localisation : Terre

#4 Message par Temps-x » sam. 24 mars 2018 21:30

Bonsoir jeanyves1976, et tout le forum,

Pour le Pic12F629, c'est la même procédure, cette routine permets de récupérer la valeur d'étalonnage d'usine.

Code : Tout sélectionner


    errorlevel  
-302              ; suppress message 302 from list file
    
    list      p
=12f629           ; list directive to define processor
    
#include <p12f629.inc>        ; processor specific variable definitions

    __CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT  

    ORG H
'00'
      goto debut      

    ORG  H
'04'  
    retfie

debut
      BANKSEL OSCCAL                      
; passer en bank1 
      call 3FFh 
      movwf OSCCAL                            
         
ecriture_eeprom 
      movfw OSCCAL                        
; placer dans W
      movwf EEDATA                        
; donnée à écrit dans l'eeprom qui est dans W

      clrw                                ; l'
adresse d'écriture dans l'eeprom  
      movwf EEADR                         
;

      bcf INTCON,GIE                      ; on coupe les interruptions 

      btfsc INTCON
,GIE                    ; contrôl si les interruptions sont bien coupés
      goto 
$-D'1'                         ; remonte à la ligne 2 jusqu'a coupures des interruptions 

      bsf EECON1,WREN                     ; autoriser accès en écriture

      movlw 0x55                          ; séquence spécifique (c'
est comme ça, il faut le savoir)
      movwf EECON2                        ; séquence spécifique
      movlw 0xAA                          
; séquence spécifique
      movwf EECON2                        
; séquence spécifique
      bsf EECON1
,WR                       ; lance une opération d'écriture

      btfsc EECON1,WR                     ; on attend que l'
operation d'ecriture soit finie (de l'ordre de la ms)
      goto  $-D'1'                        ; remonte à la ligne 1 jusqu'a fin d'écriture

      bcf EECON1
,WREN                     ; interdiction de l'écriture      

      BANKSEL GPIO                        ; on passe en bank 0
       
 
do_loop     

      goto do_loop

      end


Reste le PIC12F508 ou la il faut trouver une astuce, car c'est vrai il n'a pas d'EEPROM, mais il a 5 sorties.

La solution consiste à mettre trois led, au début les trois led clignotes toutes en même temps

Pause de 2 secondes

La première Led ne peu dépassé 2 clignotement en séparant de 1 seconde

Pause de 2 secondes

La deuxième Led ne peut dépassé 9 clignotement en séparant de 1 seconde

Pause de 2 secondes

La troisième Led ne peut dépassé 9 clignotement en séparant de 1 seconde

Bouclé sur début : les trois led clignotes toutes en même temps

Ta pu cas compté visuellement, exemple :

Première Led = 1 clignotement
Deuxième Led = 8 clignotements
troisième Led = 6 clignotements

Total = 186 décimal, qui correspond à BA en hexadécimal, pour notre exemple ça seras la valeur lu dans OSCCAL

Bon il faut écrire le programme, la programmation c'est pas que du savoir, c'est beaucoup d'astuce(il faut être malin) :wink:

Pour le 12F508, je suis pas sur qu'il faut faire la même procédure, il faut que je vérifie.

==> A+
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Reconfigurer OSCCAL 12Fxxx
jeanyves1976
Avatar de l’utilisateur
Membre
Membre
Messages : 19
Âge : 42
Enregistré en : janvier 2018
Localisation : Belgique

#5 Message par jeanyves1976 » mar. 27 mars 2018 21:58

Bonjour à tous,

Merci Temps-x... :wink:
Faut que je recommandé des quartz, je n'en n'ai plus de stock comme j'utilisais tjs ceux en interne... :-)


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités