Partage
  • Partager sur Facebook
  • Partager sur Twitter

Config et horloge PIC

PIC18F2520/Compiler C18

    31 décembre 2012 à 17:33:08

    Bonjour à tous !

    Je reprend un projet en PIC assez complexe, le problème, c'est que j'ai jamais fait de PIC...

    Du coup j'ai besoin d'un peu d'aide pour comprendre un truc : d'après mes configs j'utilise l'horloge interne pour configurer un timer. Donc d'après les configs j'ai mon horloge à 8MHz, ensuite on a une PLL donc 32MHz, ensuite on rentre dans le timer qui utilise fosc/4 avec un prescale de 4. Donc au final 8M*4/4/4= 2 Mhz soit un comptage tous les 50µs.

    Sauf que ce comptage sert à mesurer un temps en µs : en fait c'est un capteur à ultrason qui envoie des signaux de largeur à mesurer. On part en interruption au moment où ça passe de 0 à 1, on sort de l'interruption, puis on revient en interruption quand ça repasse à 0. En gros on compte le temps entre la première et la seconde interruption.

    Avec la config ci dessus j'obtenais des valeurs justes à un facteur 2 près, en gros je comptais deux fois trop vite. Donc j'ai mis le prescale à 2, soit une horloge à 4MHz donc une impulsion toutes les 25µs. Et la les valeurs sont bonnes.

    Mais je comprend pas, si je veux compter en µs je dois avoir une impulsion toutes les µs non ? Soit une fréquence de 1Mhz. Ça marcherait si la PLL était éteinte, mais le bit de config est bon. Je vous met toutes les configs que j'ai, je passe peut-être à côté de quelque chose :/

    #pragma config OSC = INTIO7 //ici on config l'oscillateur mais je ne comprend pas, il n'y a aucune mention de INTI07 dans la datasheet...
    #pragma config FCMEN = ON
    #pragma config IESO = ON
    #pragma config PWRT = ON
    #pragma config BOREN = OFF
    #pragma config WDT = OFF
    #pragma config MCLRE = OFF
    #pragma config PBADEN = OFF
    #pragma config CCP2MX = PORTC
    #pragma config STVREN = OFF
    #pragma config LVP = OFF 
    #pragma config DEBUG = ON
    
    OSCCONbits.IRCF2 = 1;		//oscillateur interne à 8Mhz
    OSCCONbits.IRCF1 = 1;
    OSCCONbits.IRCF0 = 1;
    OSCCONbits.SCS1	 = 1;		
    OSCTUNEbits.PLLEN = 1;		//active la PLL
    
    T0CONbits.T08BIT = 0;		// 16 bits counter
    T0CONbits.T0CS = 0;		// horloge interne
    T0CONbits.PSA = 0;		// prescaler assigné
    T0CONbits.T0PS0 = 0;		
    T0CONbits.T0PS1 = 0;
    T0CONbits.T0PS2 = 0;
    INTCONbits.TMR0IE = 0 ; 	
    INTCONbits.TMR0IF = 0 ;
    


    Si j'ai bien compris les #pragma c'est lié au compilateur et pas directement au PIC, on force des configurations c'est ça ?

    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter

    Config et horloge PIC

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown