Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Osc interne 16F88



  1. #1
    FantomX

    Osc interne 16F88


    ------

    Bonjour,

    Je viens de terminer mon programmateur de PIC qui fonctionne à merveille et je voulais tester un programme qui fait clignoter une LED. Voici ce programme :

    #pragma bit led @ PORTA.0

    void delay_ms(char millisec)
    {
    OPTION=2;
    do{
    TMR0=0;
    clrwdt();
    while(TMR0<125);
    }
    while(--millisec>0);

    }

    void main(void)
    {
    led=0;
    TRISA=0b00000000;
    for(;; ) {
    led=!led;
    delay_ms(1000);
    }

    }

    Seulement quand je branche le PIC sur la platine test, la LED reste allumée fixe. Je pense que le problème vient de la déclaration de l'oscillateur interne. Je ne sais pas comment faire. Suffit-il de choisir l'option IntRC dans ICProg ? Comment choisir la fréquence de l'oscillateur ?

    ( j'utilise CC5x avec MPLAB )

    Merci

    Greg

    -----

  2. Publicité
  3. #2
    Gérard

    Re : Osc interne 16F88

    Par défaut le portA est en entrée ana, il faut écrire
    CMCON = 7
    Datasheet page 121
    Gérard.

  4. #3
    FantomX

    Re : Osc interne 16F88

    Effectivement, il faut mettre CMCON à 7 pour se servir de RA0 à RA4. Autrement, j'ai aussi remarqué qu'il fallait utiliser le registre OSCCON pour choisir la fréquence. Mais ça ne marche toujours pas. Quelqu'un pourrait-il m'expliquer en détail comment configurer mon oscillateur interne à 4MHz par exemple ?

    Comment faut-il régler les configurations bits ds MPLAB et les fuses ds IC-Prog ?

    Merci

    Greg

  5. #4
    DavidDB

    Re : Osc interne 16F88

    Salut,

    Elles sont où les lignes de config de ton µC ?

    Il faut les mentionner même pour un programme écrit en C, c'est une habitude à prendre...

    David.

  6. A voir en vidéo sur Futura
  7. #5
    Gérard

    Re : Osc interne 16F88

    D'après ce que je lis dans le datasheet, pour l'oscillateur interne, il faut écrire 100 dans les fuses 4, 1 et 0 pour garder RA6 et RA7 comme I/O.

    Concernant OSCCON, les bits IRCF definissent la vitesse.
    Si tu veux 4MHz, il faut écrire 110 dans IRCF<2:0> (bits 6 à 4 de OSCCON).
    Je ne comprends pas la signification des bits 0 à 2 de ce registre (OSCCON)
    Il existe un autre registre dont j'ignore le fonctionnement, c'est OSCTUNE.
    Gérard.

  8. #6
    FantomX

    Re : Osc interne 16F88

    Ok j'ai réussi à faire mon oscillateur. En fait mon programme de delay n'était pas adapté pour faire 1s. Je l'ai donc changé. Et je suis passé sur RB0. C'est bon tout est ok.

    @+

    Greg

  9. Publicité
  10. #7
    FantomX

    Re : Osc interne 16F88

    Re,

    En fait je viens de tester d'autres simulations du programme sur MBPLAB et quand je vais dans le watch, le port A reste à 0 alors que je demande un 1 sur le bit 0. J'ai testé d'autres bits du port A et rien à faire, le port A reste figé à 0. Tout fonctionne bien sur le port B.

    Pourquoi, rien ne se passe sur le port A ??

  11. #8
    Gérard

    Re : Osc interne 16F88

    Et comment as-tu configuré les fuses ?
    Qu'as-tu écrit dans OSCCON et OSCTUNE ?
    Gérard.

  12. #9
    FantomX

    Re : Osc interne 16F88

    Voilà le programmae que j'ai fait :

    #pragma bit led @ PORTB.0

    void delay_10ms(char n)
    {
    char i;
    OPTION=7;
    do{
    clrwdt();
    i=TMR0+39;
    while(i!=TMR0);
    }
    while(--n>0);

    }

    void main(void)
    {
    OSCCON = 0b01100110;
    TRISB=0b00000000;
    led=1;

    for(;; ) {
    led=!led;
    delay_10ms(100);
    }

    }

    Il fait clignoter ma LED sur le bit 0 du port B toutes les secondes. Impossible de le faire parcher sur le port A. Même MPLAB ne fait pas varier les octets sur le port A pendant l'exécution du programme.

    Pour IcProg, j'ai laissé les fuses cochés par défaut et j'ai mis IntRC.

  13. #10
    DavidDB

    Re : Osc interne 16F88

    As-tu seulement ouvert le datasheet????

    Dans ton cas pour avoir le portA en digital il faut ajouter à ton programme :

    ANSEL=0b00000000

    David.

  14. #11
    FantomX

    Re : Osc interne 16F88

    Merci beaucoup ça marche bien maintenant sur le port A. Ne connaissant que le 84 et le 876, je ne connaissais pas le registre ANSEL.

    Merci encore.

    Greg

Discussions similaires

  1. pic 16f88 et SPI
    Par SkySaxon dans le forum Électronique
    Réponses: 21
    Dernier message: 17/07/2009, 08h14
  2. Compatibilité Pic 16F84/16F88
    Par Tix dans le forum Électronique
    Réponses: 4
    Dernier message: 11/12/2007, 10h33
  3. documentations sur le pic 16f88
    Par said.ettami dans le forum Électronique
    Réponses: 1
    Dernier message: 02/12/2007, 14h00
  4. 16f88 detruit?
    Par uranie-mc dans le forum Électronique
    Réponses: 1
    Dernier message: 14/11/2007, 18h59
  5. K8048 / Vm111 / Pic 16f88
    Par Paintitblack dans le forum Électronique
    Réponses: 1
    Dernier message: 26/01/2007, 21h14
Découvrez nos comparatifs produits sur l'informatique et les technologies.