PIC18F2450 comment tester le fonctionnement
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

PIC18F2450 comment tester le fonctionnement



  1. #1
    inviteae74060a

    PIC18F2450 comment tester le fonctionnement


    ------

    Bonjour à tous,

    Je viens de recevoir un pic18F2450.
    Pour savoir si celui-ci fonctionne, j'écris un petit code en assembleur, qui consiste à allumer une led sur RB0 via un bouton en entrée sur RB4.

    J'utilise une horloge de 48MHz (Caltron), j'ai placer sur Vbus une condensateur 47k63.

    Voici le code

    //-----------------------------------------------------------------------

    LIST P=18F2450 ;directive to define processor
    #include <P18F2450.INC> ;processor specific variable definitions


    ;***************************** ***************
    ;Configuration bits

    ; Oscillator Selection:
    CONFIG FOSC = XT_XT ;XT oscillator, XT used by USB

    ;***************************** ***************
    ;Variable definitions

    CBLOCK 0x080
    WREG_TEMP ;variable used for context saving
    STATUS_TEMP ;variable used for context saving
    BSR_TEMP ;variable used for context saving
    ENDC

    CBLOCK 0x000
    ;a variable in access RAM
    ENDC

    ;***************************** ****************
    ;Reset vector
    ; This code will start executing when a reset occurs.

    ORG 0x0000
    goto Main ;go to start of main code

    ;***************************** ****************
    ;Start of main program
    ; The main program code is placed here.

    Main:

    BANKSEL PORTB
    CLRF PORTB ; Init du port B
    CLRF LATB ; Methode alterné
    MOVLW 0Eh ; Défini les borches b0 à b4 comme digital étant donnée que 5-7 le sont déjà
    MOVWF ADCON1 ;
    MOVLW 10h ; RB4 input et les autres output
    MOVWF TRISB ;
    BSF PORTB,RB0
    RUN
    BTFSC PORTB,RB4
    GOTO turnOnLed
    GOTO turnOffLed

    turnOnLed
    BSF PORTB,RB0 ; allume la led en 0
    GOTO RUN
    turnOffLed
    BCF PORTB,RB0 ; Eteint la led
    GOTO RUN

    ;End of program

    END

    //-----------------------------------------------------------------------



    LE PROBLÈME :

    Comme toujours, pas de problème en simulation sur MPLAB ! Je programme mon PIC pas de problème ! J'alimente mon circuit et le teste pas de réaction ???? Alors, je ne comprend pas trop ce qui cloche.

    Merci de me donner des pistes d'avancement.

    -----

  2. #2
    invite7a49d0d5

    Re : PIC18F2450 comment tester le fonctionnement

    Bonsoir,

    il ne faudrait pas désactiver le WatchDog dans les Configuration Bits?

    vede
    ;O]

  3. #3
    inviteae74060a

    Re : PIC18F2450 comment tester le fonctionnement

    Je l'ai déjà désactivé dans configure/configuration bits/ et la j'ai disabled le watchdog

    Merci mais de ce coté la je crois que c'est correcte

  4. #4
    invite7a49d0d5

    Re : PIC18F2450 comment tester le fonctionnement

    re

    désactiver MCLR (reset), si MCLR non-connecté à VDD...
    mettre tous les pins en numérique (ANSEL...)....
    désactiver le(s) comparateur(s)...

    c'est que des hypothéses...

    vede
    ;O]

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

    Re : PIC18F2450 comment tester le fonctionnement

    Bonjour,
    Si tu n'as pas de tempo, je ne suis pas sur que tu puisses voir la led s'allumer.
    Peut tu inserer une tempo entre les 2 appels ?
    Bon courage

  7. #6
    inviteae74060a

    Re : PIC18F2450 comment tester le fonctionnement

    Pour ce qui est des config. j'ai déjà un peu tout tripoté mais ça n'arrange rien.

    Par ailleurs, pour ce qui est de la tempo je vais essayé mais dans mon cas, le bouton dois être maintenu pour qu'il reste allumé.

  8. #7
    schmo

    Re : PIC18F2450 comment tester le fonctionnement

    salut,

    tu utilise apparement une horloge externe qui te fournis un signal de 48Mhz. Donc le pic doit être configuré en EC mode (external clock)
    et le signal d'horloge arrive sur OSC1 uniquement

    jette un oeil sur la datasheet pour une explication sur les differents mode pour l'oscillateur.

    Conseil: utilise les registres 'LATx' pour écrire une sortie et 'PORTx' pour lire une entrée

  9. #8
    inviteae74060a

    Re : PIC18F2450 comment tester le fonctionnement

    Salut à tous !
    Voilà, suite à vos conseil j'ai du nouveau :
    • Vrai, je voulais utiliser l'oscillia interne !
    • Refait toutes les configs par codage

    De fait, j'ai tester uniquement le port A en allumant une led sur le port RA1 commander par un bouton sur le port A RA0 ! Sans problème cela fonction.
    Par ailleurs, j'essaye alors de commander une led sur le port B RB0 et le même bouton sur le port A. Voici le code mis à jour :


    /*----------------------------------------------------------------------
    /*----------------------------------------------------------------------
    ;***************************** ****************************** *******************

    LIST P=18F2450 ;directive to define processor
    #include <P18F2450.INC> ;processor specific variable definitions


    ;***************************** ****************************** *******************
    ;Configuration bits

    ; Orloge 48MHz
    CONFIG PLLDIV = 12
    ; CPU System Clock Postscaler:
    ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
    CONFIG CPUDIV = OSC1_PLL2
    ; Full-Speed USB Selection de la source d'horloge
    ; Clock source from 96 MHz PLL/2
    CONFIG USBDIV = 2
    ; Oscillator Selection bits:
    ; External clock, port function on RA6, EC used by USB
    ; FOSC = XT_XT XT oscillator, XT used by USB
    ; CONFIG FOSC = ECIO_EC
    CONFIG FOSC = XT_XT;
    ; Fail-Safe Clock Monitor:
    ; Utilisation CLOCK interne si problème
    CONFIG FCMEN = ON
    ; Internal/External Switch Over:
    ; Utilise CLOCK interne avant démarrage CLOCK PRINCIPALE
    CONFIG IESO = OFF
    ; Power-up Timer:
    ; Permet exécution immédiat du code
    CONFIG PWRT = ON
    ; Brown-out Reset:
    ; Enabled, SBOREN bit is disabled
    CONFIG BOR = ON
    ; Brown-out Voltage:
    CONFIG BORV = 21
    ; USB Voltage Regulator Enable:
    CONFIG VREGEN = OFF
    ; Watchdog Timer:
    ; HW Disabled - SW Controlled
    CONFIG WDT = OFF
    ; Watchdog Postscaler:
    ; 1:1
    CONFIG WDTPS = 1
    ; MCLR Enable:
    CONFIG MCLRE = ON
    ; Low Power Timer1 Oscillator Enable:
    ; Timer1 oscillator configured for high power
    CONFIG LPT1OSC = OFF
    ; PORTB A/D Enable:
    ; pins are configured as digital I/O on Reset
    ; PORTB<4:0>
    CONFIG PBADEN = ON
    ; Stack Overflow Reset:
    CONFIG STVREN = OFF
    ; Low Voltage ICSP:
    CONFIG LVP = OFF
    ; Boot Block Size Select Bit:
    ; 1kW Boot Block Size
    CONFIG BBSIZ = BB1K
    ; Dedicated In-Circuit Debug/Programming Enable:
    CONFIG ICPRT = ON
    ; Extended Instruction Set Enable:
    CONFIG XINST = OFF
    ; Background Debugger Enable:
    CONFIG DEBUG = ON
    ; Code Protection Block 0:
    CONFIG CP0 = OFF
    ; Code Protection Block 1:
    CONFIG CP1 = OFF
    ; Boot Block Code Protection:
    CONFIG CPB = OFF
    ; Write Protection Block 0:
    CONFIG WRT0 = OFF
    ; Write Protection Block 1:
    CONFIG WRT1 = OFF
    ; Boot Block Write Protection:
    CONFIG WRTB = OFF
    ; Configuration Register Write Protection:
    CONFIG WRTC = OFF
    ; Table Read Protection Block 0:
    CONFIG EBTR0 = OFF
    ; Table Read Protection Block 1:
    CONFIG EBTR1 = OFF
    ; Boot Block Table Read Protection:
    CONFIG EBTRB = OFF




    ;***************************** ****************************** *******************
    ;Variable definitions

    CBLOCK 0x080
    WREG_TEMP ;variable used for context saving
    STATUS_TEMP ;variable used for context saving
    BSR_TEMP ;variable used for context saving
    ENDC

    CBLOCK 0x000
    MyUse
    MyUse2
    ENDC

    ;***************************** ****************************** *******************
    ;Reset vector
    ; This code will start executing when a reset occurs.

    ORG 0x0000
    CALL RRESET
    GOTO BEGIN ;go to start of main code

    ;***************************** ****************************** *******************
    ;------------------------------------------------------------------------------
    ; RESET MAIN ROOTINE
    ;------------------------------------------------------------------------------
    RRESET
    ;---PROTA
    BANKSEL PORTA
    CLRF PORTA ; Init PORTA
    CLRF LATA ; DE MEME POUR ReadModifyWrite
    MOVLW 0ffh ; RA<0:6> Digital
    MOVWF ADCON1
    MOVLW 0ffh ; RA<0:6> Input
    MOVWF TRISA
    ;---PORTB
    BANKSEL PORTB
    CLRF PORTB ; Init du port B
    CLRF LATB ; ReadModifyWrite
    CLRF RBIF ; Désactive les intérruptions
    MOVLW 0ffh ; borches RB<4:0>0-4 ->digital(Rq: RB<7:5> déjà digital)
    MOVWF ADCON1 ;
    CLRF INTCON ; Désactive les intéruption
    CLRF INTCON2
    CLRF INTCON3
    MOVLW 0h ; RB<0:7> Output
    MOVWF TRISB ;
    ; CLRF RBPU ; active le Pull-up sur les input ici RB4

    ;---DEFINITION ETAT
    BANKSEL LATB
    BSF LATB,RB0 ; Led On
    CALL DELAY_255

    RETURN


    ;------------------------------------------------------------------------------
    ; PROGRAMME PRINCIPALE
    ;------------------------------------------------------------------------------
    BEGIN

    RUN
    BANKSEL PORTA
    BTFSC PORTA,RA0
    GOTO turnOnLed
    GOTO turnOffLed

    turnOnLed
    BANKSEL LATB
    BSF LATB,RB0 ; Led On
    CALL DELAY_255
    GOTO RUN

    turnOffLed
    BANKSEL LATB
    BCF LATB,RB0 ; Led Off
    GOTO RUN

    DELAY_255
    BANKSEL MyUse
    MOVLW d'255'
    MOVWF MyUse
    LOC_D255
    DECFSZ MyUse,f,1
    GOTO LOC_D255

    RETURN


    ;***************************** ****************************** *******************
    ;End of program

    END

    /*----------------------------------------------------------------------
    /*----------------------------------------------------------------------

    LE PROBLEME :

    Simple, le port B RB0 reste activé => led allumé !? Pourquoi ?

    Merci à vous.

  10. #9
    RISC

    Re : PIC18F2450 comment tester le fonctionnement

    Salut,

    Peux-tu reposter ton code en utilisant les balises "code" et "/code" entre crochets pour que ton programme soit lisible ?

    Il ne sert à rien de faire :
    Code:
             clrf        PORTB    // inutile, similaire à l'instruction suivante
             clrf        LATB      // suffisant
    a+
    Dernière modification par RISC ; 08/11/2009 à 22h29. Motif: correction

  11. #10
    inviteae74060a

    Re : PIC18F2450 comment tester le fonctionnement

    Désoler, pour le texte je suis nouveau sur le site et connais pas trop les balises.
    Donc revoici le poste. Par ailleurs, je sais que les deux lignes que tu as précités on le même effet mais c'est parce que je suis mort de pas comprendre mais effectivement.

    Sinon voila le code


    Code:
    ;******************************************************************************
    
    	LIST P=18F2450		;directive to define processor
    	#include <P18F2450.INC>	;processor specific variable definitions
    
    
    ;******************************************************************************
    ;Configuration bits
    
    ;	Orloge 48MHz
    	CONFIG PLLDIV = 12
    ;	CPU System Clock Postscaler:
    ;	[OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] 
    	CONFIG CPUDIV = OSC1_PLL2
    ;	Full-Speed USB Selection de la source d'horloge
    ;	Clock source from 96 MHz PLL/2  
    	CONFIG USBDIV = 2
    ;	Oscillator Selection bits:
    ;	External clock, port function on RA6, EC used by USB  
    ;	FOSC = XT_XT         XT oscillator, XT used by USB
    ;	CONFIG FOSC = ECIO_EC
    	CONFIG FOSC = XT_XT;
    ; 	Fail-Safe Clock Monitor:
    ;	Utilisation CLOCK interne si problème
    	CONFIG FCMEN = ON
    ;	Internal/External Switch Over:
    ;	Utilise CLOCK interne avant démarrage CLOCK PRINCIPALE
    	CONFIG IESO = OFF
    ;	Power-up Timer:
    ;	Permet exécution immédiat du code
     	CONFIG PWRT = ON
    ;	Brown-out Reset:
    ; 	Enabled, SBOREN bit is disabled  
    	CONFIG  BOR = ON
    ;	Brown-out Voltage:
    	CONFIG BORV = 21
    ;	USB Voltage Regulator Enable:
    	CONFIG VREGEN = OFF
    ;	Watchdog Timer:
    ;	HW Disabled - SW Controlled  
    	CONFIG WDT = OFF
    ;	Watchdog Postscaler:
    ;	1:1
    	CONFIG WDTPS = 1
    ;	MCLR Enable:
    	CONFIG MCLRE = ON
    ;	Low Power Timer1 Oscillator Enable:
    ;	Timer1 oscillator configured for high power  
    	CONFIG LPT1OSC = OFF
    ;	PORTB A/D Enable:
    ;	pins are configured as digital I/O on Reset
    	;	PORTB<4:0> 
    	CONFIG PBADEN = ON
    ;	Stack Overflow Reset:
    	CONFIG STVREN = OFF
    ;	Low Voltage ICSP:
    	CONFIG LVP = OFF
    ;	Boot Block Size Select Bit:
    ;	1kW Boot Block Size
    	CONFIG BBSIZ = BB1K
    ;	Dedicated In-Circuit Debug/Programming Enable:
    	CONFIG ICPRT = ON
    ;	Extended Instruction Set Enable:
    	CONFIG XINST = OFF
    ;	Background Debugger Enable:
    	CONFIG DEBUG = ON
    ;	Code Protection Block 0:
    	CONFIG CP0 = OFF
    ;	Code Protection Block 1:
    	CONFIG CP1 = OFF
    ;	Boot Block Code Protection:
    	CONFIG CPB = OFF
    ;	Write Protection Block 0:
    	CONFIG WRT0 = OFF
    ;	Write Protection Block 1:
    	CONFIG WRT1 = OFF
    ;	Boot Block Write Protection:
    	CONFIG WRTB = OFF
    ;	Configuration Register Write Protection:
    	CONFIG WRTC = OFF
    ;	Table Read Protection Block 0:
    	CONFIG EBTR0 = OFF
    ;	Table Read Protection Block 1:
    	CONFIG EBTR1 = OFF
    ;	Boot Block Table Read Protection:
    	CONFIG EBTRB = OFF
    
    
    
    
    ;******************************************************************************
    ;Variable definitions
    
    		CBLOCK	0x080
    			WREG_TEMP	;variable used for context saving 
    			STATUS_TEMP	;variable used for context saving
    			BSR_TEMP	;variable used for context saving
    		ENDC
    
    		CBLOCK	0x000
    			MyUse
    			MyUse2
    		ENDC
    
    ;******************************************************************************
    ;Reset vector
    ; This code will start executing when a reset occurs.
    
    	ORG	0x0000
    		CALL	RRESET
    		GOTO	BEGIN		;go to start of main code
    
    ;******************************************************************************
    ;------------------------------------------------------------------------------
    ; RESET MAIN ROOTINE
    ;------------------------------------------------------------------------------
    RRESET	
    		;---PROTA
    	BANKSEL			PORTA
    		CLRF		LATA			; Init Port A ReadModifyWrite
    		MOVLW		0ffh			; RA<0:6> Digital
    		MOVWF		ADCON1
    		MOVLW		0ffh 			; RA<0:6> Input
    		MOVWF		TRISA			
    		;---PORTB
    	BANKSEL			PORTB
    		CLRF		LATB			; Init Port B ReadModifyWrite
    		CLRF		RBIF			; Désactive les intérruptions
    		MOVLW		0ffh			; borches RB<4:0>0-4 ->digital(Rq: RB<7:5> déjà digital)
    		MOVWF		ADCON1			;
    		CLRF		INTCON			; Désactive les intéruption
    		CLRF		INTCON2
    		CLRF		INTCON3
    		MOVLW		0h				; RB<0:7> Output
    		MOVWF		TRISB			;
    ;		CLRF		RBPU			; active le Pull-up sur les input ici RB4
    
    		;---DEFINITION ETAT
    	BANKSEL			LATB
    		BSF			LATB,RB0			; Led On
    		CALL		DELAY_255
    
    		RETURN
    
    
    ;------------------------------------------------------------------------------
    ; PROGRAMME PRINCIPALE
    ;------------------------------------------------------------------------------	
    BEGIN
    
    RUN
    	BANKSEL			PORTA
    		BTFSC		PORTA,RA0
    		GOTO		turnOnLed
    		GOTO		turnOffLed
    
    turnOnLed
    	BANKSEL			LATB
    		BSF			LATB,RB0		; Led On
    		CALL		DELAY_255
    		GOTO		RUN
    
    turnOffLed
    	BANKSEL			LATB
    		BCF			LATB,RB0		;  Led Off
    		GOTO		RUN
    	
    DELAY_255
    	BANKSEL			MyUse
    		MOVLW		d'255'
    		MOVWF		MyUse
    LOC_D255
    		DECFSZ		MyUse,f,1
    		GOTO		LOC_D255
    
    	RETURN		
    
    
    ;******************************************************************************
    ;End of program
    
    		END

Discussions similaires

  1. Tester le bon fonctionnement d´un AOP
    Par invitee9f36a52 dans le forum Électronique
    Réponses: 2
    Dernier message: 13/09/2011, 21h35
  2. Tester le bon fonctionnement d'un oscilloscope
    Par erff dans le forum Électronique
    Réponses: 5
    Dernier message: 29/07/2009, 15h56
  3. comment tester un relais
    Par invited776d929 dans le forum Électronique
    Réponses: 4
    Dernier message: 12/02/2009, 20h12
  4. [Brun] comment tester tl431
    Par invitee4a15de6 dans le forum Dépannage
    Réponses: 6
    Dernier message: 15/12/2008, 13h16
  5. Comment tester?
    Par abracadabra75 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 25/07/2006, 23h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.