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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

PIC16F1825 Bug du compilateur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1162
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » sam. 4 mai 2019 21:56 lien vers la Data-Sheet : Cliquez ici

Bonjour tout le forum,

Possédant un PIC16F1825 je me retrouve avec un bug au moment de la compilation, source du message d'erreur.

Message[303] D:\DATAPIC\PICSOUR\16F1825\16F1825TEMP.ASM 11 : Program word too large. Truncated to core size. (C9A4)
Message[303] D:\DATAPIC\PICSOUR\16F1825\16F1825TEMP.ASM 12 : Program word too large. Truncated to core size. (DCFF)
Message[303] D:\DATAPIC\PICSOUR\16F1825\16F1825TEMP.ASM 149 : Program word too large. Truncated to core size. (C9A4)
Message[303] D:\DATAPIC\PICSOUR\16F1825\16F1825TEMP.ASM 149 : Program word too large. Truncated to core size. (DCFF)



Je vous joint le code, qui est quasiment vide, bon il se compile, mais j'aimerais bien comprendre, pourquoi ce message d'erreur :roll:

Code : Tout sélectionner



;**********************************************************************************************
               
      Errorlevel
-302                      ; Supprime le message "Ensure that bank bits are correct" 


     
; Errorlevel-303                     ; pour supprimer le message d'erreur, mais ça ne règle pas le problème.

                                          ; pourquoi ?


      list        p=16f1825               ; liste de la directive de la définition du processeur
      #include    <p16f1825.inc>          ; définition des variables du processeur

;------------------------------------------------------------------------------    

    __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
    __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF

;------------------------------------------------------------------------------

    CBLOCK H'
20'        
        donner_low     :1     
        donner_hi      :1     

        adresse_low    :1 
        adresse_hi     :1
    ENDC


;------------------------------------------------------------------------------
;
; le PIC16F1825 a 256 octets d'
eeprom, qui commence à adresses 0xF000
; 
;------------------------------------------------------------------------------

DATAEE    ORG  0xF000
    DE    
"Bug"                           ; écriture en eeproom 'B' 'u' 'g' adresses 0,1,2

;------------------------------------------------------------------------------

      ORG H'0'                            ; reset de départ
  
      PAGESEL start

      goto start  
                  
;------------------------------------------------------------------------------
    ORG      H'4'

    retfie

;------------------------------------------------------------------------------
start


loop
      nop
      nop

      goto loop


;****************************** "pour écrit dans l'eeprom" ************************************* 
ecriture_eeprom

      BANKSEL EEADRL                      
; passer en bank 3

      movlw adresse_low
      movwf EEADRL                        
; adresse du poids faible

      movlw adresse_hi
      movwf EEADRH                        
; adresse du poids fort

      movlw donner_low
      movwf EEDATL                        
; donnée du poids faible

      movlw donner_hi
      movwf EEDATH                        
; donnée du poids fort

      bcf EECON1
,CFGS                     ; 
      bcf EECON1
,EEPGD                    ; 
      bsf EECON1
,WREN                     ; préparation pour écriture

      bcf INTCON
,GIE                      ; couper les interruptions

      movlw H
'55'                         ; séquence spécifique (c'est comme ça, il faut le savoir) 
      movwf EECON2                        ; séquence spécifique
      movlw H'
AA'                         ; séquence spécifique
      movwf EECON2                        ; séquence spécifique

      bsf EECON1,WR                       ; lance une opération d'
écriture

      btfsc EECON1
,WR                     ; assurer que l'écriture est terminé
      goto $-D'
2'                         ; 

      bcf EECON1,WREN                     ; interdiction de l'
écriture

      
;bsf INTCON,GIE                     ; restaurer les interruptions si activé

      return

;******************************** "pour lire dans l'eeprom" ************************************ 
lecture_eeprom

      BANKSEL EEADRL                      
; passer en bank 3

      movlw adresse_low
      movwf EEADRL                        
; adresse du poids faible

      movlw adresse_hi 
      movwf EEADRH                        
; adresse du poids fort

      bcf EECON1
,EEPGD                    ; préparation à l'autorisation 
      bcf EECON1,CFGS                     ; accédés en eeprom

      bcf INTCON,GIE                      ; couper les interruptions  

      bsf EECON1,RD                       ; lecture de l'
EEPROM

      nop                                 
; laisser le temps de lire les données  
      nop 

      movf EEDATL
,W                       ; la donnée du poids faible est récupéré
      movwf donner_low
 
      movf EEDATH
,W                       ; la donnée du poids fort est récupéré
      movwf donner_hi                     
;  

      
;bsf INTCON,GIE                     ; restaurer les interruptions si activé

      return

;***********************************************************************************************

      end



Y a t'il un remède miracle, ou faut t'il que j'aille à Lourdes

==> A+
Modifié en dernier par Temps-x le mar. 7 mai 2019 01:16, modifié 3 fois.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

PIC16F1825 Bug du compilateur
Claudius
Avatar de l’utilisateur
Amateur
Amateur
Messages : 187
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#2 Message par Claudius » sam. 4 mai 2019 23:00 lien vers la Data-Sheet : Cliquez ici

Bonsoir Temp-X et à tous,

Désolé, cela n'est pas un bug du compilateur qui a entièrement raison ;-)

En effet la directive org lui indique de définir une adresse programme (ici en 0xF000) qui est manifestement hors de portée de ce pic
Pour définir une adresse hors programme (ici celle de l'eeprom), utiliser la directive #define ou equ (cf. MPASM - Directives mais valable pour tous les assembleurs qui se respectent)

Remarque: Imagine que ce même programme soit conçu pour un pic qui aurait une adresse programme en 0xF000, il y aurait alors un conflit de définition entre cette adresse programme et celle de l'eeprom ou de tout autre périphérique d'ailleurs ... donc ne pas utiliser org dans ce cas qui est réservée à la définition des adresses programme

PIC16F1825 Bug du compilateur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1162
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » dim. 5 mai 2019 00:09 lien vers la Data-Sheet : Cliquez ici

Bonsoir Claudius, et tout le forum,

Merci ! pour ta réponse, mais malgré le retrait de ceci

Code : Tout sélectionner

;------------------------------------------------------------------------------

DATAEE    ORG  0xF000
    DE    
"Bug"                           ; écriture en eproom 'B' 'u' 'g' address 0,1,2

;------------------------------------------------------------------------------


J'ai toujours le même message d'erreur, quelle qu'un veut t'il essayer de le compiler,

Je joint les fichier ci-dessous

Bug.zip


Apparemment, je ne suis pas le seul, voir ICI


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 5 mai 2019 15:55, modifié 2 fois.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

PIC16F1825 Bug du compilateur
satinas
Passioné
Passioné
Messages : 381
Enregistré en : novembre 2015

#4 Message par satinas » dim. 5 mai 2019 06:48 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Dans cette release note de MPASM 5.53, il est dit qu'il faut pas s'inquiéter.
http://denethor.wlu.ca/cp316/software/R ... embler.htm

(MPASM-409)
When __CONFIG macro is used to set the configuration words for PIC12F1xxx and PIC16F1xxx devices,then MPASM v5.48 generates a warning : "Program word too large. Truncated to core size." This can be ignored.

Claudius, après un passage sur ton site très bien présenté et détaillé, j'ai rechoppé le virus des Pic 16 bits :)
Je suis en train de faire un bootloader pour Pic 24 et dsPIC ...

PIC16F1825 Bug du compilateur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1162
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » dim. 5 mai 2019 15:44 lien vers la Data-Sheet : Cliquez ici

Bonjour satinas, et tout le forum,

Merci ! pour ta réponse,

satinas a écrit :Source du message Dans cette release note de MPASM 5.53, il est dit qu'il faut pas s'inquiéter.


:roll: Leur compilateur est à revoir dans ce cas là, j'ai la version de MPASMWIN 5.51.

Bon je vais continuer mon programme de toute façon, en m’étant Errorlevel-303,

Je tiens à signaler pour ceux qui utilise le même type de pic et qui font du C, basic, pascal, qu'ils auront ce message d'erreur d'après
les nombreux site que j'ai visité, :sifflotte: donc, ne pas s’inquiéter

Le bug existe bien, mais apparemment Microchip le sais. :eek:

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

PIC16F1825 Bug du compilateur
Claudius
Avatar de l’utilisateur
Amateur
Amateur
Messages : 187
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#6 Message par Claudius » lun. 6 mai 2019 13:42 lien vers la Data-Sheet : Cliquez ici

Bonjour satinas et à tous,
satinas a écrit :
Claudius, après un passage sur ton site très bien présenté et détaillé, j'ai rechoppé le virus des Pic 16 bits :)
Je suis en train de faire un bootloader pour Pic 24 et dsPIC ...

Je te remercie satinas, si cela peut t'aider, je compléterai si besoin est...

S'agissant du site micro-infos, j'ai maintenant beaucoup plus de temps car "payé à vie à ne rien faire" 8-) , je vais pouvoir créer des articles et notamment un qui me tiens à cœur ... j'ai nommé l'Utilisation du coprocesseur flottant Micromega uM-FPU avec un Pic 16 bits ... voire moins et ... pour laquelle j'ai pas mal avancé :geek:

Content de propager un virus dans le bon sens et merci encore satinas pour tes encouragements :-D

PIC16F1825 Bug du compilateur
JJE
Passioné
Passioné
Messages : 258
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#7 Message par JJE » dim. 19 mai 2019 15:04 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-X

Temps-x a écrit :Source du message       bsf EECON1,WR                       ; lance une opération d'écriture

      btfsc EECON1,WR                     ; assurer que l'écriture est terminé
      goto $-D'2'                         ; 

Ne devrait-on pas voir :

Code : Tout sélectionner

      goto $-D'1'                         ; 
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

PIC16F1825 Bug du compilateur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1162
Enregistré en : juillet 2016
Localisation : Terre

#8 Message par Temps-x » dim. 19 mai 2019 19:53 lien vers la Data-Sheet : Cliquez ici

Bonsoir JJE, et tout le forum,

JJE a écrit :Source du message Ne devrait-on pas voir :

Code : Tout sélectionner
goto $-D'1'


:bravo: Tu as tout a fait raison, mais j'ai une excuse :sifflotte: j'ai regardé le datasheet de ce Pic, qui est téléchargeable en début de post #1

Et je m’aperçois, :eek: qu'on retrouve des instructions du PIC18Fxx, donc, je me suis dit sans faire l'essai qu'une instruction
devait faire 2 cycles.

Comme j'ai pas encore ce PIC j'ai laissé le programme de coté, mais j'avais un PIC16F1937 qui est l'équivalent, mais en plus
compliqué et beaucoup plus de patte.

Pouah... !! les noms des registres qui change complétement dans cette série, une vraie galère.

Comme j'avais posté pour un problème d'erreur de compilation, je me suis pas soucier de faire l'essai.

Je me suis rendu compte qu'un cycle fait une instruction sur le PIC16F1937 et comme c'est la même famille que le PIC16F18F25
je pense que c'est pareille, à vérifier avec MPLAB IDE v8.92,

Pour les instructions voir les pages du datasheet 322, 323, Merci JJE pour te soucier de ça, et bien vue. :wink:

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


Retourner vers « Langage ASM »

Qui est en ligne

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