diviser fréquence de l'oscillateur sur PIC 18F
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 41

diviser fréquence de l'oscillateur sur PIC 18F



  1. #1
    franofcholet

    diviser fréquence de l'oscillateur sur PIC 18F


    ------

    Bonsoir à tous !

    Je suis actuellement en train de mettre en place l'UART de mon pic 18F45K20 et la fréquence optimale serait de 8 MHZ.

    Or j'ai un quartz de 24 MHZ.

    Ma question est toute simple: comment diviser ma fréquence par 3 pour me retrouver à 8mhz ?

    Merci d'avance je suis nouveau dans ce domaine et je rame un peu...

    -----

  2. #2
    vincent66

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Bonsoir
    Je crois bien qu'il n'y a le choix qu'entre division par deux ou division par quatre, soit 12MHz ou 6MHz... je pense que le baud rate generator est utilisable avec ces deux fréquences ...

    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    mgduc

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Ou il y a l'oscillateur interne que tu peux configuré à 8 MHZ mais je ne sais pas s'il est aussi fiable qu'un quartz...

  4. #4
    vincent66

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Non, l'oscillateur interne est calibré d'usine à 1% et il faut un quartz à 50ppm pour un uart ...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

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

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Bonjour/Bonsoir est bienvenue sur FUTURA,

    Tout d'abord ca n'esxiste pas l'UART sur ton pic, c'est plutot USART

    Pour ton cas, tu peux utiliser l'horloge interne qui est 16Mhz sans les PLL, et qui peut monter jusqu'à 64mhz comme vitesse max du pic.

    L'esssentiel c'est de bien calculé le " baud rate" quelque soit la vitesse d'horloge, voir l'exemple de microchip dans le document ==> http://ww1.microchip.com/downloads/e...doc/41303g.pdf Page 249.

    Finalement pour subdivisé l'horloge externe tu peux le faire en utilisant les bits " FOSC<3:0> " du registre CONFIG1H

  7. #6
    mgduc

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Citation Envoyé par spown Voir le message
    Bonjour/Bonsoir est bienvenue sur FUTURA,

    Tout d'abord ca n'esxiste pas l'UART sur ton pic, c'est plutot USART

    Pour ton cas, tu peux utiliser l'horloge interne qui est 16Mhz sans les PLL, et qui peut monter jusqu'à 64mhz comme vitesse max du pic.

    L'esssentiel c'est de bien calculé le " baud rate" quelque soit la vitesse d'horloge, voir l'exemple de microchip dans le document ==> http://ww1.microchip.com/downloads/e...doc/41303g.pdf Page 249.

    Finalement pour subdivisé l'horloge externe tu peux le faire en utilisant les bits " FOSC<3:0> " du registre CONFIG1H
    Je croyais que USART impliquais un modem et comment on fais pour monter à 64Mhz, je croyais que les pic 18 ne montais pas plus haut que 40Mhz avec un quartz... les pic32 peut monter à 80Mhz

  8. #7
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Merci à tous de vos réponses

    Cependant je suis toujours en galère....

    Je tente de communiquer avec un module GSM tc35 via l'UART de mon pic.

    L'UART est bien activée car je visualise bien un signal sur ma sortie tx à l'oscillo, mais aucune réponse de la part du module GSM.

    Je me demande si mon BAUD rate est bien configuré à 9600, j'ai suivi les formules de la datasheet avec une féquence de 24 000Hz.

    Voila mon code:


    Code:
    /** I N C L U D E S **************************************************/
    #include <p18f45k20.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <sw_uart.h>
    #include <usart.h> 
    #include <delays.h>
    /** C O N F I G U R A T I O N   B I T S ******************************/
    
    #pragma config FOSC = HS// oscillo quartz 24mhz
    #pragma config WDTEN = OFF, LVP = OFF, MCLRE = OFF
    
    /** D E C L A R A T I O N S ******************************************/
    void main (void){
    	char inputstr[10];
    		
    	TRISCbits.TRISC6 = 0;//open C6:RX 
    	TRISCbits.TRISC7=1;//output C7:TX
    	OpenUSART(USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX& USART_BRGH_HIGH, 155);//active l'USART pour un baud rate 9600
    
    	while (1){
    
    			putrsUSART("AT\r\n");//Envoie de plusieurs commandes AT
    			Delay10KTCYx(50);
    			putrsUSART("AT+CMGF=1\r\n");
    			Delay10KTCYx(50);
    			putrsUSART("AT+CMGR=1\r\n");
    			 if( DataRdyUSART() ){//si l'UART reçoit des données
    	            LATDbits.LATD3 = 1;
              		getsUSART( inputstr, 1 );//Copie du premier caractere reçu dans inputstr
              	}
    			Delay10KTCYx(50);	        	
    	}	
    }
    Voici le tableau de formule de la datasheet:

    Nom : baudrateformula.jpg
Affichages : 206
Taille : 82,8 Ko

    Je me situe donc sur la 2ème ligne du tableau (SYNC=0;BRG16=0 et BRGH=1) avec un SPBRG=155 (d'après le calcul)

    Any idea ???

    D'avance merci du temps que vous me consacrez

  9. #8
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Bonjour,

    Il n'y pas de contrôle avec CTS et RTS sur ton TC35 par hasard ?

    A+

  10. #9
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Bonjour amoniaque, il y a effectivement un pin RTS et un pin CTS, dois je y toucher ?

    J'ai simplement relier le RX du pic avec le TX du module gsm et vice-versa et jai relié les GND, rien de plus.

  11. #10
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    C'est à voir selon la doc, si tu peux te permettre de relier cts et rts ensemble tu peux y aller (à vérifier dans la doc !).
    Sinon tu gères du CTS/RTS avec ton PIC.

  12. #11
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Donc selon toi mon baud rate est ok ?

  13. #12
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Ouais il n'a pas l'air crade, surtout que tu as fait une visu sur oscillo.
    Si tu as le doute, amuse toi à envoyer 0xAA ou 0x55 en continu et de visualiser le signal. Tu pourras bien voir le temps d'un bit et ainsi en déduire le débit.
    Sinon tu as bien configurer ton nombre de bits de stop, de bit de données, etc ...?

  14. #13
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Voila le module GSM que j'utilise:
    http://www.ebay.fr/itm/TC35-MODULE-GSM-SMS-et-voix-/111155367412?pt=FR_YO_MaisonJa rdin_Bricolage_ElectroniqueCom posants&hash=item19e1604df4

    Normalement il n'y a rien a relier ni configurer dessus, il devrait marcher je ne comprend pas pourquoi je n'ai toujours pas de retour...

  15. #14
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Citation Envoyé par franofcholet Voir le message
    Normalement
    Haaaa ce si courant normalement .
    Tu as une doc technique de ta bête ? Vu le connecteur ta carte doit fonctionner avec un MAX232 (ou équivalent).
    Ainsi que ton schéma de câblage ?

  16. #15
    kevin8z

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Salut, tu dis avoir un oscillateur de 24MHz, et après tu dis avoir fait tes calcul avec un fréquence de 24000Hz. Tu a oublier 3 zéro, donc 24.000.000Hz

  17. #16
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Citation Envoyé par kevin8z Voir le message
    Salut, tu dis avoir un oscillateur de 24MHz, et après tu dis avoir fait tes calcul avec un fréquence de 24000Hz. Tu a oublier 3 zéro, donc 24.000.000Hz
    Pardon j'ai oublié les 3 zeros dans mon post mais jai bien fait le calcul: SPBRG=(24000000/(9600*36) )-1=155

    Bref si quelqun à une idée (je suis sur que quelque chose foire dans mon code...)

    encore merci à vous

  18. #17
    spown

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    @mgduc,

    Soit par #pragma config FOSC = HSPLL, mais le quatz doit pas depasser 16 Mhz, ou si tu utilises quartz interne , ça existe plusieurs façon pour la déclarer comme tu peux le mettre dans le main :
    OSCCON |= 0x72;
    OSCTUNEbits.PLLEN = 1;

    Les dsPIC33 monte à 140 Mhz ( et même quelque PIC24 )

    Pour revenir a ton problème franofcholet , moi je trouve SPBRG = 68 ! essaye USART_BRGH_LOW au lieu de USART_BRGH_HIGH

  19. #18
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Citation Envoyé par kevin8z Voir le message
    Salut, tu dis avoir un oscillateur de 24MHz, et après tu dis avoir fait tes calcul avec un fréquence de 24000Hz. Tu a oublier 3 zéro, donc 24.000.000Hz
    Salut,

    La valeur de son registre est correcte quand même (24M / (16 * (155 + 1)) = 9615).

    A+

  20. #19
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Bonjour, je viens de vérifier à l'oscillo, voila ce que ça donne:

    Nom : 3e3d.jpg
Affichages : 142
Taille : 134,7 Ko

    Soit un bit d'environ 50µs

    ça colle avec le baud rate ?

    Je n'ai pas trouvé le calcul...

  21. #20
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    pardon en fait le calcul est tout con (calculer le nombre de bits en 1s):

    baud rate=1s/50µs=1/(50*10^-6)=20 000 bps (environ)

    Donc ça ne va pas ?

  22. #21
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    D'après ton calcul ça n'est pas bon en effet.
    Tu es sûr de fonctionner en 24MHz ?
    Tu as un schéma ainsi que la liste des bit de config ?

  23. #22
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Il y a écrit 24 000 sur mon quartz, ce serait 24 000 Hz et non 24 000 kHz ?

    Sinon voici mes bits de config:

    Code:
    /** CONFIGURATION UART ******************************************/	
    	TRISCbits.TRISC6 = 0;//open C6:RX 
    	TRISCbits.TRISC7=1;//output C7:TX
    	OpenUSART(USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX& USART_BRGH_HIGH, 155);//active l'USART pour un baud rate 9600
    	TXSTAbits.SYNC = 0;			//EUSART Mode Select Bit (Asynchronous Mode 0)
    	TXSTAbits.TXEN = 1;			//Transmit Enable Bit 
    	RCSTAbits.SPEN = 1;			//Serial Port Enable bit
    	RCSTAbits.CREN = 1;			//Continuous Receive Enable bit
    	BAUDCONbits.BRG16=0; 
    	TXSTAbits.BRGH=1; 
    	TXSTAbits.SYNC=0;
    Et voila le câblage du quartz (un peu crade avec paint):

    Nom : cablage.jpg
Affichages : 173
Taille : 57,6 Ko

  24. #23
    spown

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Non c'est Mhz. As tu verifié avec USART_BRGH_LOW ? Sinon. as tu un rs232/USB et un HyperTerminal ?

  25. #24
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Les bits de config (CONFIGxL, CONFIGxH), ce qui te permettra de savoir comment est géré le module oscillateur.

  26. #25
    spown

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Il a mis ça en "pragma" regarde son code à la 1ere page.

  27. #26
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    PArdon oui cf mes bits de config:

    Code:
    /** C O N F I G U R A T I O N   B I T S ******************************/
    
    #pragma config FOSC = HS// oscillo quartz 24mhz
    #pragma config WDTEN = OFF, LVP = OFF, MCLRE = OFF

  28. #27
    spown

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Même si ca marche ton baud rate ca va pas communiquer avec ton Modem, d’après un datashhet sur web ( j’espère que c'est le bon pour ton modele ). Il faut laisser plus que 100ms avec power up pour commencer la communication.

    Bref, bonne chance puisque tu réponds pas sur ce que je te disais

  29. #28
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Citation Envoyé par spown Voir le message
    Même si ca marche ton baud rate ca va pas communiquer avec ton Modem, d’après un datashhet sur web ( j’espère que c'est le bon pour ton modele ). Il faut laisser plus que 100ms avec power up pour commencer la communication.

    Bref, bonne chance puisque tu réponds pas sur ce que je te disais
    J'ai un bouton poussoir sur la carte qui me permet de faire ça (activer la communication). Il faut juste que je puisse atteindre le bon baud rate maintenant.

  30. #29
    franofcholet

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    j'ai essayé avec USART_BRGH_LOW : pas de changement.

  31. #30
    amoniaque

    Re : diviser fréquence de l'oscillateur sur PIC 18F

    Je ne vois pas d'où peut venir ce rapport de 2...
    Pour être sûr que ça ne vienne pas de ta base de temps, quand tu fais clignoter une LED (par exemple en utilisant les fonctions Delay10KTCYx), est ce que tu as des temps logiques ?
    Je suppose que selon le nom de la fonction, si tu mets "1" en param', tu auras 10 000 cycles d'horloges, soit environ 1.7 ms.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. schéma pour diviser la fréquence d'un multivibrateur monostable.
    Par invite600c9902 dans le forum Électronique
    Réponses: 7
    Dernier message: 01/11/2010, 21h00
  2. Quelle est la fréquence de cet oscillateur ?
    Par invite6a1d07de dans le forum Électronique
    Réponses: 11
    Dernier message: 10/02/2010, 14h19
  3. Diviser la fréquence d'un oscillateur à quartz
    Par Alexya dans le forum Électronique
    Réponses: 14
    Dernier message: 09/04/2009, 14h55
  4. fréquence max oscillateur
    Par invited33ce006 dans le forum Électronique
    Réponses: 11
    Dernier message: 26/12/2008, 21h05
  5. oscillateur de fréquence 1 hz
    Par FFT dans le forum Électronique
    Réponses: 5
    Dernier message: 28/02/2008, 15h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.