PIC 18f2680 démarrage
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

PIC 18f2680 démarrage



  1. #1
    invite2a59cbd0

    Unhappy PIC 18f2680 démarrage


    ------

    Salut,
    je cherche à faire fonctionner un pic 18f2680, j'ai fait un programme(sous MikroBasic) mais je l'ai modifié pour qu'il ne fasse que passer le portB de l'état haut à l'état bas toutes les secondes.

    Le prog asm :
    Code:
    _main:
    ;carte_ack.mbas,21 :: 		main:
    ;carte_ack.mbas,23 :: 		PORTA = 0x00
    	CLRF        PORTA+0 
    ;carte_ack.mbas,24 :: 		TRISA = 0xFF
    	MOVLW       255
    	MOVWF       TRISA+0 
    ;carte_ack.mbas,25 :: 		LATA = 0x00
    	CLRF        LATA+0 
    ;carte_ack.mbas,27 :: 		PORTB = 0xFF
    	MOVLW       255
    	MOVWF       PORTB+0 
    ;carte_ack.mbas,28 :: 		TRISB = 0x00
    	CLRF        TRISB+0 
    ;carte_ack.mbas,29 :: 		LATB = 0x00
    	CLRF        LATB+0 
    ;carte_ack.mbas,30 :: 		Delay_ms(1000)
    	MOVLW       51
    	MOVWF       11, 0
    	MOVLW       187
    	MOVWF       12, 0
    	MOVLW       223
    	MOVWF       13, 0
    L__main1:
    	DECFSZ      13, 1, 0
    	BRA         L__main1
    	DECFSZ      12, 1, 0
    	BRA         L__main1
    	DECFSZ      11, 1, 0
    	BRA         L__main1
    	NOP
    	NOP
    ;carte_ack.mbas,31 :: 		while 1'ADCON0.GO_DONE
    L__main3:
    ;carte_ack.mbas,32 :: 		PORTB  = 0xFF
    	MOVLW       255
    	MOVWF       PORTB+0 
    ;carte_ack.mbas,33 :: 		Delay_ms(1000)
    	MOVLW       51
    	MOVWF       11, 0
    	MOVLW       187
    	MOVWF       12, 0
    	MOVLW       223
    	MOVWF       13, 0
    L__main7:
    	DECFSZ      13, 1, 0
    	BRA         L__main7
    	DECFSZ      12, 1, 0
    	BRA         L__main7
    	DECFSZ      11, 1, 0
    	BRA         L__main7
    	NOP
    	NOP
    ;carte_ack.mbas,34 :: 		PORTB  = 0x00
    	CLRF        PORTB+0 
    ;carte_ack.mbas,35 :: 		Delay_ms(1000)
    	MOVLW       51
    	MOVWF       11, 0
    	MOVLW       187
    	MOVWF       12, 0
    	MOVLW       223
    	MOVWF       13, 0
    L__main8:
    	DECFSZ      13, 1, 0
    	BRA         L__main8
    	DECFSZ      12, 1, 0
    	BRA         L__main8
    	DECFSZ      11, 1, 0
    	BRA         L__main8
    	NOP
    	NOP
    	GOTO        L__main3
    ;carte_ack.mbas,42 :: 		Delay_ms(100)                            ' Wait for UART module to stabilize
    L__main9:
    	DECFSZ      13, 1, 0
    	BRA         L__main9
    	DECFSZ      12, 1, 0
    	BRA         L__main9
    	DECFSZ      11, 1, 0
    	BRA         L__main9
    	NOP
    	NOP
    ;carte_ack.mbas,63 :: 		Delay_ms(10)
    L__main30:
    	DECFSZ      13, 1, 0
    	BRA         L__main30
    	DECFSZ      12, 1, 0
    	BRA         L__main30
    	NOP
    	NOP
    ;carte_ack.mbas,64 :: 		PORTB.0  = 0
    	BCF         PORTB+0, 0 
    ;carte_ack.mbas,65 :: 		Delay_ms(10)
    	MOVLW       130
    	MOVWF       12, 0
    	MOVLW       221
    	MOVWF       13, 0
    L__main31:
    	DECFSZ      13, 1, 0
    	BRA         L__main31
    	DECFSZ      12, 1, 0
    	BRA         L__main31
    	NOP
    	NOP
    	GOTO        L__main26
    ;carte_ack.mbas,70 :: 		Delay_ms(30)
    L__main32:
    	DECFSZ      13, 1, 0
    	BRA         L__main32
    	DECFSZ      12, 1, 0
    	BRA         L__main32
    	DECFSZ      11, 1, 0
    	BRA         L__main32
    ;carte_ack.mbas,71 :: 		PORTB.0  = 0
    	BCF         PORTB+0, 0 
    ;carte_ack.mbas,72 :: 		Delay_ms(30)
    	MOVLW       2
    	MOVWF       11, 0
    	MOVLW       134
    	MOVWF       12, 0
    	MOVLW       153
    	MOVWF       13, 0
    L__main33:
    	DECFSZ      13, 1, 0
    	BRA         L__main33
    	DECFSZ      12, 1, 0
    	BRA         L__main33
    	DECFSZ      11, 1, 0
    	BRA         L__main33
    ;carte_ack.mbas,74 :: 		for it = 7 to 0 step -1
    	MOVLW       7
    	MOVWF       _it+0 
    ;carte_ack.mbas,76 :: 		Delay_ms(90)
    L__main39:
    	DECFSZ      13, 1, 0
    	BRA         L__main39
    	DECFSZ      12, 1, 0
    	BRA         L__main39
    	DECFSZ      11, 1, 0
    	BRA         L__main39
    	NOP
    	NOP
    ;carte_ack.mbas,77 :: 		next it
    	MOVF        _it+0, 0 
    	XORLW       0
    	BTFSC       STATUS+0, 2 
    	GOTO        L__main37
    ;carte_ack.mbas,80 :: 		Delay_ms(90)
    L__main45:
    	DECFSZ      13, 1, 0
    	BRA         L__main45
    	DECFSZ      12, 1, 0
    	BRA         L__main45
    	DECFSZ      11, 1, 0
    	BRA         L__main45
    	NOP
    	NOP
    ;carte_ack.mbas,81 :: 		next it
    	MOVF        _it+0, 0 
    	XORLW       0
    	BTFSC       STATUS+0, 2 
    	GOTO        L__main43
    ;carte_ack.mbas,83 :: 		wend
    	GOTO        $+0
    ; end of _main

    Le code original en mikrobasic :
    Code:
    ' *
    ' * Project name:
    '     Carte_acquisition
    ' * Description:
    '     Permet de relever la tension sur AN0:AN3 et de transmettre leurs valeurs
    '     numÈriques sur RB0:RB3 en liaison UART
    ' * Test configuration:
    '     MCU:             PIC18F2680
    '     Oscillator:      40.0000 MHz
    '     Ext. Modules:    -
    '     SW:              mikroBasic PRO for PIC
    ' * NOTES:
    '     - RX and TX UART switches on EasyPIC5 should be turned On.
    ' *
    
    program carte_ack
            'byte = octet
            dim pin as byte
            dim it as byte
              
            main:
            'initialisation des ports I/O
            PORTA = 0x00
            TRISA = 0xFF
            LATA = 0x00
            
            PORTB = 0xFF
            TRISB = 0x00
            LATB = 0x00
            Delay_ms(1000)
              while 1'ADCON0.GO_DONE
                   PORTB  = 0xFF
                   Delay_ms(1000)
                   PORTB  = 0x00
                   Delay_ms(1000)
                  wend
            'initialisation des registres de conversion analogique
            ADCON0 = 0x01
            ADCON1 = 0x0B
            ADCON2 = 0xBE
    
            Delay_ms(100)                            ' Wait for UART module to stabilize
          while(1)
            'boucle analysant chaque port analogique
            for pin = 0 to 3
                'choix de la pin dans le registre ADCON0
                if (pin >1) then
                     ADCON0.CHS1 = 1
                 else
                     ADCON0.CHS1 = 0
                end if
                if (pin - 2*ADCON0.CHS1 = 1) then
                     ADCON0.CHS0 = 1
                 else
                     ADCON0.CHS0 = 0
                end if
                'mise en marche du convertisseur A/D
                ADCON0.GO_DONE = 1
                  'tant que la conversion n'est pas achevÈe
                   
                  while 1'ADCON0.GO_DONE
                   PORTB.0  = 1
                   Delay_ms(10)
                   PORTB.0  = 0
                   Delay_ms(10)
                  wend
                  'envoyer le rÈsultat numÈrique en sÈrie sur RB0
                  
                   PORTB.0  = 1
                   Delay_ms(30)
                   PORTB.0  = 0
                   Delay_ms(30)
                   
                  for it = 7 to 0 step -1
                      PORTB.0 = ADRESH.it
                      Delay_ms(90)
                  next it
                  for it = 7 to 0
                      PORTB.0 = ADRESL.it
                      Delay_ms(90)
                  next it
            next pin
            wend
            
    end.
    Une fois le PIC programmé, je vérifie l'état de la mémoire programme à chaque fois avant de tester. Puis je l'alimente avec VDD = 5V et les deux pins VSS à la masse, je relève la tension sur les pins du portB et je remarque ... qu'il ne se passe rien. Pourtant la simulation montre bien le changement d'état du portB, avez-vous une idée de la provenance du problème ?
    Je ne sais vraiment pas si c'est la partie logicielle, hardware ou bien si c'est mon PIC18F2680 qui est bloqué sur un mode "reset"...
    Merci d'avance.

    -----

  2. #2
    RISC

    Re : PIC 18f2680 démarrage

    Salut,

    Je ne connais pas Mikrobasic, mais je pense que ton PB est lié aux bits de condiguration (je n'ai vu aucune initialisatin dans ton code...). Il faut indiquer au PIC quel oscillateur utiliser (dans ton cas, probablement mode HS ou XT avec ou sans PLL).
    Lis la datasheet, chapitre Special Features et vérifie dans le manuel Mikrobaisc comment initialiser les bits de configuration.
    Je suppose que tu peux aussi trouver des exemples sur internet concernant les bits de configuration pour ton langage

    a+
    Dernière modification par RISC ; 07/06/2009 à 12h59. Motif: correction

Discussions similaires

  1. Mauvais démarrage de mon PIC
    Par invite50cb3aa0 dans le forum Électronique
    Réponses: 18
    Dernier message: 18/06/2008, 07h10
  2. explications sur le pic d'intensité au démarrage d'un moteur triphasé
    Par invite6a5c22c9 dans le forum Technologies
    Réponses: 7
    Dernier message: 04/04/2008, 13h52
  3. demarrage d'un programme PIC
    Par invite3a1051d7 dans le forum Électronique
    Réponses: 38
    Dernier message: 18/03/2007, 19h05
  4. Réponses: 0
    Dernier message: 18/03/2007, 16h43
  5. Qui connais logi pic & et question à propos des pic
    Par invitec913303f dans le forum Électronique
    Réponses: 10
    Dernier message: 29/05/2006, 23h40
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...