PIC18F2450 USB Problème d'énumération
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

PIC18F2450 USB Problème d'énumération



  1. #1
    inviteae74060a

    PIC18F2450 USB Problème d'énumération


    ------

    Bonjour,
    J'utilise un pic18f2450 pour un fonctionnement en usb. Je me sert de la firmware proposé par microchip qui propose la config pour le PIC18F4450.

    Mon problème :
    J'utilise USB view pour déterminer l'état de ma connexion usb. Mais voila ce que j'obtient :

    Code:
    Device Descriptor:
    bcdUSB:             0x0000
    bDeviceClass:         0x00
    bDeviceSubClass:      0x00
    bDeviceProtocol:      0x00
    bMaxPacketSize0:      0x00 (0)
    idVendor:           0x0000
    idProduct:          0x0000
    bcdDevice:          0x0000
    iManufacturer:        0x00
    iProduct:             0x00
    iSerialNumber:        0x00
    bNumConfigurations:   0x00
    
    ConnectionStatus: DeviceFailedEnumeration
    Current Config Value: 0x00
    Device Bus Speed:     Low
    Device Address:       0x00
    Open Pipes:              0
    D'une part, je constate que rien n'est configuré. De plus, l'énumération n'a pu avoir lieu et la connexion est LS !
    Je ne vois pas ou agir exactement, si vous pouvez m'aidez car j'ai beau revérifier tout les paramètre à changé comme indiqué par la doc de la firmware et as d'aboutissement ?

    -----

  2. #2
    RISC

    Re : PIC18F2450 USB Problème d'énumération

    Salut,

    Ta table d'énumération est toute à 0. Cela signifie que le protocole USB ne tourne pas du tout...car ton HOST (PC) n'as pu l'obtenir du PIC.

    1/ Peux tu faire voir ton schéma électrique complet ?
    2/ Quelle pile de protocole (framework) utilises-tu ( v2.5a ?) ?

    a+

  3. #3
    inviteae74060a

    Re : PIC18F2450 USB Problème d'énumération

    J'utilise MCHPUSB 1.3 et j'ai aussi essayé avec 2.5 mais le problème est le même.
    Voici mon schéma désoler pour la qualité mais je sais pas trop bien me servir du prog pour faire les schéma surtout avec un pic

    Images attachées Images attachées  

  4. #4
    RISC

    Re : PIC18F2450 USB Problème d'énumération

    Salut,

    Je te déconseille d'utiliser un quartz 48MHz qui rayonne tous azimuths...
    Il vaut mieux utiliser la PLL intégrée qui multiplie par 24.
    Donc en partant d'un quartz 4MHz externe tu as : 4 x 24 = 96 MHz ensuite il suffit de diviser par 2 avec le prescaler interne et tu obtiens 48MHz.

    Je te recommande très fortement de ne plus travailler avec la très vieille stack 1.3...

    As-tu ajusté les bits de configuration ?
    La programmation de l'horloge interne est assez compliquée...
    Un bit de travers et rien ne marche...

    Peux-tu faire voir ton code d'initialisation des bits de configuration dans ton programme ?
    (n'oublie pas d'utiliser les balises "code" et "/code" entre crochets pour que ce soit lisible...

    Quelle application utilises-tu pour tester ?

    a+

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

    Re : PIC18F2450 USB Problème d'énumération

    Merci tout d'abord pour ton aide.
    NB : j'utilisais une horloge de 48MHz car j'avais crus comprendre que l'USB avait besoin d'une horloge de 48Mhz. Enfin, voilà la config que j'utilisais :
    Code:
    #if defined(MY_BOARD)
    		#pragma config PLLDIV   = 12         	// (48 MHz Hight-Speed crystal)
            #pragma config CPUDIV   = OSC4_PLL6		// OSC1/OSC2 Src: /4][96 MHz PLL Src: /6] 
            #pragma config USBDIV   = 1         	// Clock source from OSC1/OSC2
            #pragma config FOSC     = HSPLL_HS
    
            #pragma config FCMEN    = OFF
            #pragma config IESO     = OFF
            #pragma config PWRT     = OFF
            #pragma config BOR      = ON
            #pragma config BORV     = 28
            #pragma config VREGEN   = ON			//USB Voltage Regulator
            #pragma config WDT      = OFF
            #pragma config WDTPS    = 32768
            #pragma config MCLRE    = ON
            #pragma config LPT1OSC  = OFF
            #pragma config PBADEN   = ON
            #pragma config STVREN   = ON
            #pragma config LVP      = OFF
    	    #pragma config ICPRT    = OFF       	// Dedicated In-Circuit Debug/Programming
            #pragma config XINST    = OFF       	// Extended Instruction Set
            #pragma config CP0      = OFF
            #pragma config CP1      = OFF
            #pragma config CPB      = OFF
            #pragma config WRT0     = OFF
            #pragma config WRT1     = OFF
            #pragma config WRTB     = OFF       		// Boot Block Write Protection
            #pragma config WRTC     = OFF
            #pragma config EBTR0    = OFF
            #pragma config EBTR1    = OFF
            #pragma config EBTRB    = OFF
    #else
    	#error "Aucun appareil n'est actuellement supporté, soyer sur que le bonne appareil à été selectionné dans usbcfg.h, et si c'est le cas, configuré les bit dans le fichier " __FILE__", line" __LINE__
    #endif
    Pas de problème alors, je vais essayé avec une horloge de 4MHz toujours sur OSC1 et OSC2. Mais je n'ai pas de condensateur de 27pf (comme l'indique la datasheet) mais 18pf ou 22pf. donc je vais essayé avec ceux-là et la les config que tu as dis si j'ai bien compris ? :
    Code:
    		#pragma config PLLDIV   = 1         	// (48 MHz Hight-Speed crystal)
            #pragma config CPUDIV   = OSC1_PLL2		// OSC1/OSC2 Src: /1][96 MHz PLL Src: /2] 
            #pragma config USBDIV   = 2         	// Clock source from OSC1/OSC2
            #pragma config FOSC     = HSPLL_HS
    Malheureusement, j'obtient le même problème ! pff je rales. enfin, je vais réessayer avec MCHPUSB 2.5 mais dis moi toujours si les config sont bonne ou pas?

    Merci

  7. #6
    RISC

    Re : PIC18F2450 USB Problème d'énumération

    Salut,

    Je te recommande de regarder la figure 2-1.
    Cela explique le système d'horloge.
    2 possibilités : tu passe par la PLL ou tu n'y passe pas.

    A/ Si tu passes à travers la PLL il faut choisir le diviseur de façon à voir en entrée de la PLL une fréquence de 4MHz qui remultipliée par 24 donne 96MHz. Il suffit donc de diviser par 2 derrière

    B/ Si tu ne passes pas par la PLL (déconseillé) il ne faut bien sûr pas diviser par 2.

    Donc si tu utilises un quartz 48MHz, je te recommande de passer par la PLL puis diviser par 2. Cela permet de garantir un ratio de 50 / 50.

    Pour l'horloge CPU, tu peux choisir séparément la vitesse. Si tu veux la puissance maximum tu peux faire tourner le processeur à 48MHz (diviseur de 2 pour le processeur).

    Code:
    #pragma config PLLDIV   = 12         	// (48 MHz High-Speed crystal)
    #pragma config CPUDIV   = OSC1_PLL2	// [96 MHz PLL Src: /2] 
    #pragma config USBDIV   = 2         	// USB Clock source from 96 MHz PLL/2 
    #pragma config FOSC     = HSPLL_HS // activate PLL
    Les autres bits ont l'air correct.

    Donc cela peut venir de ton adaptation de la stack à ton micro...
    Regarde un projet de la pile USB fait pour le PIC18F4550 et ajuste lees paramètres à ton micro.


    a+

Discussions similaires

  1. PIC18F2450 comment tester le fonctionnement
    Par inviteae74060a dans le forum Électronique
    Réponses: 9
    Dernier message: 08/11/2009, 22h42
  2. Pic18F2450 et winpic800
    Par sergeegres dans le forum Électronique
    Réponses: 0
    Dernier message: 10/08/2009, 14h02
  3. Connexion MAX232 - PIC18F2450
    Par guillaume17 dans le forum Électronique
    Réponses: 5
    Dernier message: 13/07/2009, 09h48
  4. Probleme avec Bootloader HID PIC18F2450
    Par invite12e976f4 dans le forum Électronique
    Réponses: 5
    Dernier message: 04/12/2008, 10h49
  5. Probleme usb
    Par invite72b32a1f dans le forum Matériel - Hardware
    Réponses: 12
    Dernier message: 06/07/2003, 17h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.