Probleme Interruption proton plus compiler
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 32

Probleme Interruption proton plus compiler



  1. #1
    invitee5da1686

    Probleme Interruption proton plus compiler


    ------

    bonjour

    je rencontre un probleme quand jessaie dutiliser les interruption avec proton
    le programe finit par buger au bout de 10 secondes (variable)

    je pense que le probleme vien de la selection des pages ou des banques qui doit mal se derouler

    il mest impossible de traiter les interruption completement a part de proton (en Assembleur) du fait que proton creer lui meme les sauvegardes au des registres au vecteur 0004 dont on a pas le droit de reecrire cette adresse ci qui me donne pas confience ...

    jaimerai savoir si des personnes on deja eu des problemmes de ce genre et quel solution a etait trouver.

    proton c bien jolie mais je pense laisser tomber et passer a lassembleur (merci bigonoff ) certes les gestion des afficheur et otre variables en virgules flotantes sont tres pratique que de traiter tout sa en assembleur

    a+
    Morpheus

    -----

  2. #2
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    re bonjour

    je complete mon message avec un peu plus de precision

    jutilise un pic 16f877 a une frequance de 20 Mhz avec le compilateur proton plus

    mon programme utilise les interuption timer1

    le programme fait 5482 word donc il doit y avoir des saut de pages

    quand je desactive les interruption via GIE = 0 le programe principale fonctione correctement

    jais donc reduit au minimum la routine d'interruption je ne fait que seulement effacer le flag du timer1 mais le bug continue de se produire lafficheur graphique ecrit pas au bon endroit de facon decalee pui finit par plu repondre
    et les interuption ne reponde plus de temp en temp

    voici la routine d'interruption generee par proton plus
    Code:
    org 4
    	movwf wsave
    	movfw STATUS
    	clrf STATUS
    	movwf ssave
    	movfw FSR
    	movwf fsrsave
    	movfw PCLATH
    	movwf psave
    	movlw high FLASH
    	movwf PCLATH
    	goto FLASH
    
    FLASH
    F1_000165 equ $ ; in [SATIONMETEO.BAS] tmr1if = 0
    	Bcf PIR1,0
    F1_000167 equ $ ; in [SATIONMETEO.BAS] context restore
    	Movf PSAVE,W
    	Movwf PCLATH
    	Movf FSRSAVE,W
    	Movwf FSR
    	Movf SSAVE,W
    	Movwf STATUS
    	Swapf WSAVE,F
    	Swapf WSAVE,W
    	Retfie
    je ne sait vraiment plu quoi faire

    votre aide me sera utile

    a+ morpheus

  3. #3
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut

    personne pour m'aider ? pour savoir quesqui peu ne pas aller dans cette routine dinterruption

    un chose qui me semble bizare c la maniere don est sauver status et commen il est restorer

    monsieur Bigonoff ma aprit quil falait swaper status avant de le sauver pour pas le modifier ...
    vous en pensez koi ?

    a+

  4. #4
    Gérard

    Re : Probleme Interruption proton plus compiler

    Bonjour,
    Il n'y a rien dans ta routine d'IRQ, comment peux-tu dire qu'elle ne fonctionne pas ?

    Tu parles de LCD et pas de code en vu, comment faut-il t'aider, en devinant ?

    Quel type d'IRQ utilises-tu ?

    Je pense qu'il faut aussi que tu améliores ton français.
    Dernière modification par Gérard ; 03/08/2008 à 11h30.

  5. A voir en vidéo sur Futura
  6. #5
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut

    voila le programme complet

    toujour le meme probleme quand je desactive les interruption le programme marche correctement

    quand les interuption sont activee le programe finit par faire nimporte koi sur lafficheur

    voir meme rentrer dans des sous routine ou il aurais jamais pu y rentrer (biensur les sous routines que je parle sont des sous routine a la fin du programme que jais rajouter pour voir si le programe se perdai ou pas)

    il y a vaiment un problemme ^^

    a+
    Fichiers attachés Fichiers attachés

  7. #6
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut encor moi a chercher pourkoi sa bug

    jai fait des test

    jai creer une routine a la fin de mon programme

    comme ceci
    Code:
    programe principal:
    instruction ....
    instruction ....
    instruction ....
    instruction ....
    instruction ....
    ...
    goto programe principal
    
    bug:
    cls
    print at 0,0, "bug !" 
    pause 2000
    return
    dans le programe principale il n'y a aucun saut qui fait pointer sur bug:

    et pourtant quand jactive les interruption de temp en temp je me retrouve dans ma routine bug ( jais "bug !" qui saffiche sur mon lcd ) c ki est normalement impossible

    je pense qu'en sortant des interruption le programme revien un peu nimporte ou mais pourquoi ??????????????



    a+

  8. #7
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Salut,

    A la lecture rapide de ton code, dans l'interruption, il y a un problème de sélection de BANK pour la restauration du contexte en sortie d'int...

    Il faut dans le "restorreg" repointer sur la BANK0.

    De plus, comme c'est du BASIC, en entrée d'interruption :
    Il serait plus que judicieux de faire une sauvegarde complète des paramètres que tu modifies toi-même dans l'INT et d'en faire toi même la restauration avant de redonner la main au BASIC.

    David.

  9. #8
    Gérard

    Re : Probleme Interruption proton plus compiler

    Bonjour,
    Je viens de compiler ton prog, il ne trouve rien de fatal.
    Il dit :
    "Unrecognised DECLARE,Creating an assembler #DEFINE directive !"
    il parle de la ligne 31 où tu écris "Declare pclath_CONTEXT_SAVE = On"

    Il n'aime pas non plus "PAUSE" en disant qu'il vaut mieux utiliser "DELAYMS"

    Il faudrait controler si tu n'as pas de chevauchement de bank de RAM.

    "Call inttmr1" c'est "GOTO inttmr1" qu'il faut écrire dans l'IRQ.

    Je n'ai pas regardé le reste.

  10. #9
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    lut

    merci pour votre aide

    moi il me parle juste des PAUSE qu'il prefereais que jutilise DELAYMS

    et il me dit aussi que la variable word "Temp" croise la page 0 et 1
    est-ce bien grave ?

    je vais essayer tout ce que vous m'avez proposer et je vous tien au courant

    encor merci

    a+

  11. #10
    Gérard

    Re : Probleme Interruption proton plus compiler

    Citation Envoyé par MorpheusPic Voir le message
    lut

    merci pour votre aide

    moi il me parle juste des PAUSE qu'il prefereais que jutilise DELAYMS
    C'est que ton compilo est moins succeptible !
    Mon compilo : 3.2.5.5
    IDE : 1.0.4.6

    Citation Envoyé par MorpheusPic Voir le message
    et il me dit aussi que la variable word "Temp" croise la page 0 et 1
    est-ce bien grave ?
    Si "Temp" passe de la page 0 à la page 1, ce n'est pas bon.
    Voilà ce que tu déclares :
    Dim Pages As Byte
    Dim Temp As Word

    je te propose de faire l'inverse càd :
    Dim Temp As Word
    Dim Pages As Byte
    et tu n'auras plus de croisement de page RAM.

    Il faut quand même surveiller celà, si tu modifies le prog, le compilateur risque d'ajouter ou de supprimer des variables et tu retrouveras (peut être) ce pb.

    Citation Envoyé par MorpheusPic Voir le message
    je vais essayer tout ce que vous m'avez proposer et je vous tien au courant

    encor merci

    a+
    OK, mais pense à donner des nouvelles, tes problèmes/solutions peuvent aider d'autres.

  12. #11
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Salut,

    "Call inttmr1" c'est "GOTO inttmr1" qu'il faut écrire dans l'IRQ.
    Non Gérard, la structure de son programme demande un Call et non un goto. Le goto mènerait à un bug vu qu'il se termine par un return à la place de son "restorreg".

    Pour moi le problème vient d'un problème de BANK dans le début de la routine "intsw5" s'il fait le "restorreg" en début de routine.

    De plus, comme c'est du BASIC, en début d'INT on ne connait pas la BANK utilisée, il faut donc la sauvegarder en début du code ASM et la restaurer en fin du code ASM.

    David.

  13. #12
    Gérard

    Re : Probleme Interruption proton plus compiler

    Citation Envoyé par DavidDB Voir le message
    Salut,



    Non Gérard, la structure de son programme demande un Call et non un goto. Le goto mènerait à un bug vu qu'il se termine par un return à la place de son "restorreg".
    OK David, tu as raison pour le CALL/GOTO.

    Citation Envoyé par DavidDB Voir le message
    Pour moi le problème vient d'un problème de BANK dans le début de la routine "intsw5" s'il fait le "restorreg" en début de routine.

    De plus, comme c'est du BASIC, en début d'INT on ne connait pas la BANK utilisée, il faut donc la sauvegarder en début du code ASM et la restaurer en fin du code ASM.

    David.
    C'est du Basic, mais pas si "basique" que çà.
    La doc du compilo spécifie que le contexte est sauvé automatiquement en début de routine d'IRQ et on passe en Bank0 et restoré en fin de routine.
    Par contre, il devrait écrire les routines d'IRQ en asm pour éviter un conflit de variables.

  14. #13
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Donc, cela signifie que si le BASIC utilise aussi l'Int (ce qui est le cas, vu qu'il y a un mix BASIC/ASM) en plus du code ASM il y a un bug, car soit on se trouve en BANK1 soit en BANK0 suivant le test conditionnel de "intsw5"...

    David.

  15. #14
    Gérard

    Re : Probleme Interruption proton plus compiler

    Citation Envoyé par DavidDB Voir le message
    Donc, cela signifie que si le BASIC utilise aussi l'Int (ce qui est le cas, vu qu'il y a un mix BASIC/ASM) en plus du code ASM il y a un bug, car soit on se trouve en BANK1 soit en BANK0 suivant le test conditionnel de "intsw5"...

    David.
    Là, j'ai du mal à te comprendre. (la fatigue ?)
    Perso, j'écris les routines d'IRQ en asm du début à la fin pour éviter les conflits.
    La gestion des Banks de RAM doit être faite en asm.
    Le reste du temps (en Basic), le compilo fait ce qu'il faut pour être dans la bonne Bank. En regardant ce que donne le .asm après compilation, on peut le voir.

  16. #15
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    voila jais modifier ma routine d'interruption

    en fonction de ce que vous m'avez dit

    Code:
                   la routine ci dessous est laddresse ou pointe le pic lors d'une  
                   interruption 
                   -sauvegarde des registres  
                   -saut vers l'etiquette FLASH
    ______________________________________________________________
    org 4
    	movwf wsave
    	movfw 3
    	clrf 3
    	movwf ssave
    	movfw 4
    	movwf fsrsave
    	movfw 10
    	movwf psave
    	movlw high FLASH
    	movwf 10
    	goto FLASH
    _____________________________________________________
    
    
     '______________________________ROUTINE D'INTERRUPTION______________________
      flash: 
            asm
            bcf	    STATUS,6	             ; sélectionner banque1
            bsf	    STATUS,5  	             ; sélectionner banque1
            btfss	PIE1,5	                 ; tester si interrupt autorisée
            goto 	intsw5		             ; non sauter
            bcf	    STATUS,5	             ; oui, sélectionner banque0
            btfss	PIR1,5	                 ; oui, tester si interrupt en cours
            goto 	intsw5		             ; non sauter
            call	intrc		             ; oui, traiter interrupt
                                             ; LE FLAG NE DOIT PAS ETRE REMIS A 0
                                             ; C'EST LA LECTURE DE RCREG QUI LE PROVOQUE
    				                        
                                            
    intsw5              
            bcf	    STATUS,6	             ; sélectionner banque1
            bsf	    STATUS,5	             ; sélectionner banque1
            btfss	PIE1,0	                 ; tester si interrupt autorisée
            goto 	restorereg		         ; non sauter
            bcf	    STATUS,5	             ; oui, sélectionner banque0
            btfss	PIR1,0	                 ; oui, tester si interrupt en cours
            goto 	restorereg		         ; non sauter
            call	inttmr1		             ; oui, traiter interrupt
            goto    restorereg               ;fin d'interruption
    
          
    ;*****************************************************************************
    ;                     INTERRUPTION TIMER 1                                   *
    ;*****************************************************************************
    inttmr1
            bcf	    STATUS,6	     ; sélectionner banque0
            bcf	    STATUS,5	     ; sélectionner banque0
            bcf	    PIR1,0	         ; effacer flag interrupt 
            movlw   B'10000000'      ; metre le bit 7 de tmr1h a 1
            movwf   tmr1h            ; pour avoir une interruption toutes les secondes
            endasm
            tick1 = tick1 + 1        ' on incremente les tick count
            tick2 = tick2 + 1
            tick3 = tick3 + 1
            toggle portb.7
            asm
            return	                 ; fin d'interrupt
            
    	
           
    ;*****************************************************************************
    ;                     INTERRUPTION RECEPTION USART                           *
    ;*****************************************************************************
    intrc
            endasm
            
            if oerr = 1 then                        'si erreur d'overflow
            overrflag = 1                           'on positionne un flag
            cren = 0                                'on coupe et on relance l'usart
            cren = 1
            end if
            
            index3 = index3 + 1
            if index3 > 10 then index3 = 1
            frerrFlag = ferr
            if index3 = 1 then dt1 = rcreg
            if index3 = 2 then dt2 = rcreg
            if index3 = 3 then dt3 = rcreg
            if index3 = 4 then dt4 = rcreg
            if index3 = 5 then dt5 = rcreg
            if index3 = 6 then dt6 = rcreg
            if index3 = 7 then dt7 = rcreg
            if index3 = 8 then dt8 = rcreg
            if index3 = 9 then dt9 = rcreg
            if index3 = 10 then dt10 = rcreg
             
            if dt1  <> "S" then                         'attente de la condition start "ST"
            index3 = 0
            else
            if dt2 <> "T" then index3 = 1
            end if
            
            if dt9 = "S" and dt10 = "O" then RXflag = 1 'si 8eme octet contien "S" et 9 eme octet contient "O" 
                                                        'la reception est complete et on positionne un flag
            asm
            return			                    'fin d'interruption
            
    
    restorereg:  
                                                  
            bcf	    STATUS,6	                         ; sélectionner banque0
            bcf	    STATUS,5	                         ; sélectionner banque0                 
            endasm               
            context restore                              'restorer registres et retour programme principale        asm
    la commande context restore dans mon programe equiveau a :
    Code:
    F1_000256 equ $ ; in [SATIONMETEO.BAS] context restore                              'restorer registres et retour programme principale        asm
    	Movf PSAVE,W
    	Movwf PCLATH
    	Movf FSRSAVE,W
    	Movwf FSR
    	Movf SSAVE,W
    	Movwf STATUS
    	Swapf WSAVE,F
    	Swapf WSAVE,W
    	Retfie
    malgres les modification faite il se produit toujour le bug quand le programe sort des interruption il se perd et rentre dans une boucle que j'ais creer a la fin du programe qui n'est appeler nul part.

    a+

  17. #16
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Code:
    intsw5              
     1       bcf	    STATUS,6	             ; sélectionner banque1
             bsf	    STATUS,5	             ; sélectionner banque1
             btfss	PIE1,0	                 ; tester si interrupt autorisée
      2      goto 	restorereg		         ; non sauter
      3      bcf	    STATUS,5	             ; oui, sélectionner banque0
              .....
      4      goto  restorereg

    En 1 : BANK1
    En 2 : BANK1 -> routine restorreg
    En 3 : BANK0
    En 4 : BANK0 -> routine restorreg

    Donc, suivant le point ou il va faire son "goto restorreg" il sera soit en BANK1, soit en BANK0.

    Perso, j'écris les routines d'IRQ en asm du début à la fin pour éviter les conflits.
    Oui, c'est très bien...
    Mais dans le cas du programme de ce fil, c'est un mélange ASM -> BASIC -> ASM -> BASIC (visualise la routine "inttmr1" pour t'en rendre compte).
    Et je crains fort que ce genre de jeu mène à un comportement dont on ne maîtrise plus rien...

    David;

  18. #17
    Gérard

    Re : Probleme Interruption proton plus compiler

    Ecris les routines d'interruption en asm, tu dois avoir des conflits de variables.
    C'est écrit dans la doc qu'il vaut mieux faire en asm.

  19. #18
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Code:
    F1_000256 equ $ ; in [SATIONMETEO.BAS] context restore                              'restorer registres et retour programme principale        asm
    	Movf PSAVE,W
    	Movwf PCLATH
    	Movf FSRSAVE,W
    	Movwf FSR
    	Movf SSAVE,W
    	Movwf STATUS
    	Swapf WSAVE,F
    	Swapf WSAVE,W
    	Retfie

    Le voici enfin le BUG (ou du moins un)...

    Suivant que tu te trouves en BANK1 ou en BANK0 à l'arrivée sur la routine Restore, tu ne pointes plus du tout les mêmes cases RAM!!!

    David.

  20. #19
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    re

    pour David

    jais corriger le probleme dans ma routine restorereg je selectione la bank 0 avant de restautrer les registres

    que l'on soit en bank 0 ou 1 pout un goto sa ne pose pas de problemme ?

    en ce quil concerne d'ecrire les routines en asm je suis tout a fait d'accor car
    proton utilise des variables du genre PPH ,PPHH dans certaines instruction
    mais il est pas evident d'ecrire ma routine de reception usart en assembleur

    je vien de tester a l'instant une chose jais desactiver les interruption de l'usart pour qu'il ne reste que le timer 1

    jais remplacer toute ma routine d'interruption par

    Code:
     '______________________________ROUTINE D'INTERRUPTION______________________
      flash: 
      asm                                   
            bcf	    STATUS,6	                         ; sélectionner banque0
            bcf	    STATUS,5	                         ; sélectionner banque0 
            movlw	B'10000000'	      ; valeur pour inverser LED
            xorwf	PORTB,f		      ; inverser LED   
            bcf	    PIR1,0	          ; effacer flag interrupt              
            endasm               
            context restore                              'restorer registres et retour programme principale
    la led ne sert que a etre sur que le timer fonctionne

    je nutilise aucune variable de proton ni de basic et un programme relativement simple

    et pourtant jais toujour le meme bug

    le programme se perd quand il sort des interruption sa j'en suis certain car quand les interruption sont desactiver le programe marche correctement

    n'y aurait t'il pas une erreure doverflow de la pile car les interruption consoment 1 place ou une histoire avec PCLAHT je pense que le probleme vien de lun ou lotre
    mais comment verifier ?

    mercie a+

  21. #20
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Désolé, je ne programme pas en BASIC...

    Concernant PCLATH, je ne suis pas certain que cela pose problème vu que tu ne le modifies pas dans l'INT.

    Il faudrait un debugger pour voir où le programme pointe en sortie d'INT.

    que l'on soit en bank 0 ou 1 pout un goto sa ne pose pas de problemme ?
    il n'y a pas de problème du côté des BANK, par contre PCLATH pourrait poser problème s'il était modifié dans l'INT.

    David.

  22. #21
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut

    je vais essayer de le debugger sous Mplab sa va pas etre facile

    mais bon jai envie qu'il marche mon programe vu le temp que jy est passe dessu ^^

    jvais faire sa et je te tien au courant

    sinon il existe koi pour debugger sur circuit ?
    c'est quand meme plus fiable

    a+

  23. #22
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Simuler l'INT du timer c'est parfaitement faisable et en plus cela te permettra de voir où le programme pointe en sortie d'INT.

    Place un point d'arrêt en début d'INT et ensuite tu simules en pas à pas jusqu'à être complètement sortis d'INT afin de voir ce qui plante (bien regarder PCLATH et STATUS tout au long du déroulement de l'INT)

    Simuler l'UART, c'est déjà plus difficile...

    Je ne sais pas te répondre sur les debuggeur in-circuit compatible BASIC (Gérard te répondra sûrement)

    David.

  24. #23
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut

    jais simmuler mon programe

    et je pense avoir trouver un premier probleme

    Code:
    org 4
    	movwf wsave         
                                        ici wsave prend bien la valeur de W
    	movfw 3            charger status dans W
                                        ici W a bien la valeur de status                          
    	clrf 3                effacer status
                                        par contre ici status n'est pas effacer :grrrr:
    	movwf ssave      sauver status dans ssave
                                        ici ssave a bien la valeur de W donc de status
    	movfw 4
    	movwf fsrsave
    	movfw 10
    	movwf psave
    	movlw high FLASH
    	movwf 10
    	goto FLASH
    la sauvegarde et la resturation des registres se deroule bien

    a part que clrf 3 n'efface pas status

    il y a quelque chose qui ne va pas la ligne clrf 3 devrais effacer status ???
    je v continuer a chercher et essayer de comprendre pourkoi cette ligne ne fonctionne pas

    merci de votre aide a+

  25. #24
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Salut,

    Remplace "3" par STATUS.

    Donc : clrf STATUS

    David.

  26. #25
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    salut

    en fait je vien de comprendre le registre status n'a pas tout ces bits en ecriture seulement IRP ,RP0,RP1 sont en ecriture

    dans mon programe les bits IRP,RP0,RP1 etait deja a 0 donc sa na pas effacer 'plus' c'est pour sa que jais cru quil y avait un probleme

    je v continuer a chercher

    merci a+

  27. #26
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    lut

    cette foi si c'est la bonne

    jais remarquer plusieur bug

    a cetain moment a l'execution d'un return le programme saute a une ligne qui n'est pas preceder dun call ou goto ....

    exemple

    Code:
    F1_000598 equ $ ; in [STATIONMETEOTEST.BAS] CS = 1
    	Bcf STATUS,5
    ram_bank = 0
    	Bsf PORTB,3
    F1_000601 equ $ ; in [STATIONMETEOTEST.BAS] Return
    	Return 
    -------------------------------------------------------------
    a l'execution du return ci dessus le programme pointe : voir ci dessous
    -------------------------------------------------------------
    
    	F1_000573 equ $ ; in [STATIONMETEOTEST.BAS] gosub eeread
    		Bcf STATUS,5
    	ram_bank = 0
    		F@Call EEREAD
    	F1_000574 equ $ ; in [STATIONMETEOTEST.BAS] dat.highbyte = b0
    		Bsf STATUS,5
    	ram_bank = 1
    ICI --->	             Movf B0,W
    		Movwf DATH
    	F1_000575 equ $ ; in [STATIONMETEOTEST.BAS] return
    		Bcf STATUS,5
    	ram_bank = 0
    		Return
    ----------------------------------------------------------------------
    a l'execution du return ci dessus le programe pointe : voir ci dessou
    ----------------------------------------------------------------------
    	movwf 4
    	movfw 36
    	xorwf 0,f
    	nop
    	goto $ + 1
    	goto $ + 1
    ICI --->	goto $ + 1
    	goto $ + 1
    	xorwf 0,f
    	return
    -----------------------------------------------------------------------
    puis a ce return il pointe : voir ci dessou
    -----------------------------------------------------------------------
    		goto o@bi
    	out@t xorlw 255
    	o@bi bsf 4,7
    		andwf 0,f
    	i@nt bcf 3,7
    ICI --->  i@nt2 bcf 3,5
    		bcf 3,6
    		nop
    		return
    et puis il continu
    il a peu etre pris un coup de soleil ? mdr

    en tout cas maintenant je c 'est que-ce-qui se passe

    reste a savoir pourquoi ..

    a+

  28. #27
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Dans ce cas, il faut visualiser PCLATH au moment du CALL et du RETURN afin de vérifier que PCLATH est positionné correctement pour l'endroit pointé par le CALL/RETURN.

    Je trouve bizarre que le BASIC "oublierait" de positionner PCLATH, c'est trop énorme comme problème pour être une erreur du compilo...

    David.

  29. #28
    invitee5da1686

    Re : Probleme Interruption proton plus compiler

    lut

    voila maintenant c'est clair enfin je pense c vrais que dans mon programme ya pas mal de gosub + 2 pour les interruptions

    apparament c'est un overflow de la pile

    voila ce que dit Mplab

    CORE-E0001: Stack over flow error occurred from instruction at 0x000275
    CORE-E0001: Stack over flow error occurred from instruction at 0x000275
    CORE-E0001: Stack over flow error occurred from instruction at 0x00026f
    CORE-E0001: Stack over flow error occurred from instruction at 0x000275
    CORE-E0001: Stack over flow error occurred from instruction at 0x001284
    CORE-E0001: Stack over flow error occurred from instruction at 0x001298
    CORE-E0001: Stack over flow error occurred from instruction at 0x0012a8
    CORE-E0001: Stack over flow error occurred from instruction at 0x000273
    CORE-E0001: Stack over flow error occurred from instruction at 0x000277
    CORE-E0001: Stack over flow error occurred from instruction at 0x000271
    CORE-E0001: Stack over flow error occurred from instruction at 0x00030b
    CORE-E0001: Stack over flow error occurred from instruction at 0x00030a
    CORE-E0001: Stack over flow error occurred from instruction at 0x00026e
    CORE-E0001: Stack over flow error occurred from instruction at 0x000273
    CORE-E0001: Stack over flow error occurred from instruction at 0x000273

    jvai essayer de modifier mon prog pour moin utiliser de gosub

    sinon comment fait tu pour savoir ce que PCLATH doit contenir lors du saut ?

    encor merci pour m'aider

  30. #29
    invitef26bdcba

    Re : Probleme Interruption proton plus compiler

    Salut,

    Pour connaître la valeur de PCLATH, il faut regarder l'adresse à laquelle se trouve la sous routine et PCLATH doit contenir la partie haute de cette adresse.

    A mon avis, tu dois pouvoir remplacer bon nombre de GOSUB par des GOTO afin de moins utiliser la pile du µC.

    David.

  31. #30
    Gérard

    Re : Probleme Interruption proton plus compiler

    Salut tous les 2,
    Je reprends le train en marche. (3 jours difficiles et pas de temps pour le forum)

    ll me semble que pour la série 16F (pas vérifié) on n'a droit qu'à 4 imbrications faisant appel à la pile, le reste étant réservé au Basic.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. cross compiler
    Par invite79116907 dans le forum Électronique
    Réponses: 5
    Dernier message: 09/04/2008, 08h26
  2. Réponses: 9
    Dernier message: 09/09/2007, 19h52
  3. chaine proton-proton
    Par invite829bf453 dans le forum Physique
    Réponses: 2
    Dernier message: 27/05/2006, 18h45
  4. re-compiler? (logiciel R)
    Par kinette dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 25/01/2006, 10h14
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...