mplab
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

mplab



  1. #1
    invite93f9dd0c

    mplab


    ------

    Bonjour!

    Je suis actuellement en train de programmer en C un pic18f2550 sous mplab. Cependant j'éprouve quelque difficultés dans la compréhension des timers et des interruptions!

    Je reçois un signal analogique en entrée de mon pic mais je ne vois pas comment utiliser faire fonctionner mon timer pour que la conversion analogique-numérique se fasse avec une certaine fréquence d'échantillonage.

    Quelqu'un pourrait t'il m'éclairer??

    merci

    -----

  2. #2
    invite7a49d0d5

    Cool Re : mplab

    Bonsoir,

    le meilleur moyen d'assimiler les bases du fonctionnement
    des timers et des interruptions, c'est de commencer en les
    utilisant pour faire clignoter une led...

    comme dans le POST #12 de ce fil
    http://forums.futura-sciences.com/el...c16f690-2.html

    et d'autres exemples parmi d'autres où en fouillant tu trouveras
    mes tentatives d'explications de leurs fonctionnements...
    http://forums.futura-sciences.com/se...archid=4066863

    après ya aussi google... et BigOnOff...

    vede
    ;O]
    _____________________
    no pub...

  3. #3
    invite93f9dd0c

    Re : mplab

    En fait j'ai déjà commencé a coder mon CAN, cependant le problème se situe au niveau de l'acquisition des données de mon CAN.
    Je souhaite utiliser une fréquence d'échantillonnage de 10khz, donc je me demande si je dois utiliser un timer qui dure 0,1 ms et une fois le temps fini j'utilise une interruption pour déclencher la conversion.
    Ou je lance un timer d'une beaucoup plus longue durée et je met une interruption tous les 0,1 ms!

    Je joins mon code avec pour soutenir mon explication.
    /code
    [/code]

    #include <stdio.h>
    #include <delays.h>
    #include <timers.h>
    #include <p18cxxx.h>

    #pragma config WDT = OFF

    void main (void)
    {
    /* PORTA RA0 entrée, pour le CAN */
    TRISAbits.TRISA0 = 1;

    /* PORTB RB0,RB1,RB2,RB3 sortie, pour l'afficheur */
    TRISBbits.TRISB0 = 0;
    TRISBbits.TRISB1 = 0;
    TRISBbits.TRISB2 = 0;
    TRISBbits.TRISB3 = 0;

    /* PORTB RB4 sortie, Led de bon fonctionnement */
    TRISBbits.TRISB4 = 0;

    /* PORTB RB6,RB7 entrée, liaison PIC/PC */
    TRISBbits.TRISB6 = 1;
    TRISBbits.TRISB7 = 1;

    /* Configure the ADC, most of this is the
    * default settings:
    * Fosc/32
    * AN0 Analog,
    * AN1-15 Digital Channel zero Interrupt
    * disabled
    * Internal voltage references
    */

    /* FOSC/32 clock select */
    ADCON2bits.ADCS0 = 0;
    ADCON2bits.ADCS1 = 1;
    ADCON2bits.ADCS2 = 0;

    /*Acquisition Time Select = 4 Tad */
    ADCON2bits.ACQT0 = 0;
    ADCON2bits.ACQT1 = 1;
    ADCON2bits.ACQT2 = 0;

    /* AN0-15, VREF */
    ADCON1 = 0b00011110;

    /* Turn on the ADC */
    ADCON0bits.ADON = 1;

    /* Start the ADC conversion */
    while (1)
    {
    ADCON0bits.GO = 1;
    while (ADCON0bits.GO)
    ;
    current_ad_value = ADRES;
    }
    }

    [code]
    code

  4. #4
    invite7a49d0d5

    Cool Re : mplab

    .
    BONJOUR,

    Citation Envoyé par phil9229 Voir le message
    Je souhaite utiliser une fréquence d'échantillonnage de 10khz, donc je me demande si je dois utiliser un timer qui dure 0,1 ms et une fois le temps fini j'utilise une interruption pour déclencher la conversion.
    OUI

    Citation Envoyé par phil9229 Voir le message
    Ou je lance un timer d'une beaucoup plus longue durée et je met une interruption tous les 0,1 ms!
    NON

    donc un truc de ce style (en "pseudo-code"):
    Code:
    void interrupt_timer1(void)
    {  
      ADCON0bits.GO = 1;
      positionne TMR1L et TMRLH pour une période de 100µs;
      re-active interruption TMR1; // (cad efface flag)
    }
    
    void main(void)
    {
      init_uc();  
      init/start TMR1;
      positionne TMR1L et TMRLH pour une période de 100µs;
      active interruption du TMR1;
    
      while(1)
      {
        while (ADCON0bits.GO)
        ;
        current_ad_value = ADRES;
     }
    }
    vede
    ;O]
    _________________________
    no pub...

    .

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

    Re : mplab

    Bonjour!

    Merci pour ton aide vede cela m'est d'une grande aide!

    Pour le branchement et l'oscillateur de mon pic j'utilise un quartz de 20 Mhz, donc pour le timer si je souhaite avoir un temps de 100 us il faut que mon timer effectue 2 000 cycles. Soit 65 536 - 2 000 = 63 536 avec prédiviseur de 1.
    Donc je charge les Timer1H et timer1L avec 1111 1000 0011 0000.(0xF830).

    Par contre pour le registre T1CON j'ai un doute pour le 1er bit (TMR1CS). Je ne sais pas quel valeur lui donner vu que j'utilise un oscillateur extérieur au quartz réalisé par un pic de 20 Mhz.

    Code:
    Code:
    #include <stdio.h>
    #include <delays.h>
    #include <timers.h>
    #include <p18cxxx.h>
    
    #define signal_analogique RA0
    #define led RB4
    
    #pragma config WDT = OFF
    int start;
    
    void init_uc (void)
    {
    /* PORTA RA0 entrée, pour le CAN */
      TRISAbits.TRISA0 = 1;
    
    /* PORTB RB0,RB1,RB2,RB3 sortie, pour l'afficheur */
      TRISBbits.TRISB0 = 0;
      TRISBbits.TRISB1 = 0;
      TRISBbits.TRISB2 = 0;
      TRISBbits.TRISB3 = 0;
    
    /* PORTB RB4 sortie, Led de bon fonctionnement */
      TRISBbits.TRISB4 = 0;
    
    /* PORTB RB6,RB7 entrée, liaison PIC/PC  */
      TRISBbits.TRISB6 = 1;
      TRISBbits.TRISB7 = 1;
    
    /* Configure the ADC, most of this is the
       * default settings:
       * Fosc/32
       * AN0 Analog,
       * AN1-15 Digital Channel zero Interrupt
       *   disabled
       * Internal voltage references
       */
    
    /* FOSC/32 clock select */
      ADCON2bits.ADCS0 = 0;
      ADCON2bits.ADCS1 = 1;
      ADCON2bits.ADCS2 = 0;
    
    /*Acquisition Time Select = 4 Tad */
      ADCON2bits.ACQT0 = 0;
      ADCON2bits.ACQT1 = 1;
      ADCON2bits.ACQT2 = 0;
    
    /* AN0-15, VREF */
      ADCON1 = 0b00011110;
      
    /* Turn on the ADC */
      ADCON0bits.ADON = 1;
    }
    
    void interrupt_timer1(void)
    {  
      ADCON0bits.GO = 1;
      TMR1L  = 0xF830;	/* Ré-initialise le timer pour une période de 100 us (OSC quartz = 20 MHZ) */
      TMR1H  = 0xF830;
      PIR1bits.TMR1IF = 0;    /* Réactive l'interrupt sur TMR1 (afface le flag)*/
    }
    
    void main (void)
    {
    init_uc();
    
    /* Démarre le prog si on reçoit un signal analogique en entrée RA0 */
    /* La led s'allume pendant 2 secondes puis s'éteind */
    while(1){
        while(signal_analogique==1){
           start =1;
           }
        if (start==1) {
           start=0;
           led=1;
           delay_ms(2000);
           led=0;
         }
       }
    
    /* init/start timer */
    	T1CON = 0b10000000; /*démarre TMR1, avec PreScaler = 8*/
    	TMR1L  = 0xF830;	/* Initialise le timer pour une période de 100 us (OSC quartz = 20 MHZ) */
    	TMR1H  = 0xF830;
        INTCON = 0x11000000;    /*activation interruptions périphériques*/
        PIE1   = 0x00000001;    /* activation interruption du TMR1 */
    
    /* Start the ADC conversion */
      while (1)
        {
            while (ADCON0bits.GO)
            ;
          current_ad_value = ADRES;
        }
    }
    Peux tu me dire ce que tu pense de mon code.

    Merci d'avance.
    phil

  7. #6
    invite7a49d0d5

    Cool Re : mplab

    hi ;O]

    je t'ai fais les calculs... comme exemple...

    FOsc 20Mhz > TOsc = 0.2µs (FOsc / 4)
    soit 1 instruction toute les 0.2µs
    donc faut initialiser TMR1 @ 500...
    pour avoir une interruption toutes les 100µs...
    à 20Mhz... avec Prescaler 1...

    ensuite pour TMR1L et TMRLH...
    il ne suffit pas de mettre 500 dans chacuns... il faut Dé Com Po Ser ;O]
    on a donc la valeur à mettre dans ces registres : 65036 (65536 - 500)
    il faut faire :
    TMR1H = 65036 / 256 '' (retourne un entier resultat div.)
    TMR1L = 65036 % 256 '' (% = modulo = le reste de la division)
    soit :
    TMR1H = 254
    TMR1L = 12 '' théorique...

    pour le registre TMR1CS, il faut qu'il soit = 0,
    ainsi le timer s'incrémente à chaque instruction, basé
    sur le quartz, cad à TOsc (toutes les 0.2µs)...

    j'ai pas eu le temps de bien lire tout ton code
    mais il ya a des erreurs... laisse tomber l'ADC pour
    l'instant... commençons par faire clignoter une led
    grâce aux timers et interruptions...
    delà on les utilisera pour l'ADC...
    (qui est lui aussi interruptible ;O])

    enfin tiens nous au jus,
    et n'hésites pas si question,
    vede
    ;O]
    ______________________
    no pub...

    .

  8. #7
    invite7a49d0d5

    Cool Re : mplab

    EDIT :

    mais il ya a peut être d'autres erreurs...
    et le code paraît déjà long...

  9. #8
    invite7a49d0d5

    Cool Re : mplab

    Citation Envoyé par vede Voir le message
    EDIT : (...) et le code paraît déjà long...
    pas pratique pour assimiler facilement les principes
    des timers et interruptions... pour pouvoir ensuite
    facilement les appliquer sur le "vrai" projet...

  10. #9
    invite93f9dd0c

    Re : mplab

    Salut merci pour tes conseils.

    J'ai donc fait un code pour faire clignoter la led en utilisant le timer 1.
    Je me suis aidé de un de tes commentaire sur une autre discussion. J'ai également mis 0 dans les registres TMR1H et TMR1L avec Prescaler=8 pour avoir un temps plus long et ainsi voir le clignotement.

    Cependant la led reste éteinte!!

    Peux tu regarder mon code simplifié par rapport a la fois d'avant et me dire ce qui ne va pas??

    code:
    Code:
    #include <p18f2550.h>
    
    #pragma config WDT = OFF
    #pragma config FOSC = INTOSC_EC
    
    void interrupt_timer1(void)
    {  
     
      TMR1L  = 0;	/* Ré-initialise le timer pour une période de 256*256*8*0,2 us (OSC quartz = 20 MHZ) */
      TMR1H  = 0;
      PIR1bits.TMR1IF = 0;    /* Réactive l'interrupt sur TMR1 (afface le flag)*/
      PORTB = PORTB + 1;
    }
    
    void main (void)
    {
      /* Make all bits on the Port B (LEDs) output bits.
       * If bit is cleared, then the bit is an output bit.
       */
      TRISB = 0;
    
    /* Reset the LEDs */
      PORTB = 0;
    
    /* init/start timer */
    	T1CON = 0b10110000; /*démarre TMR1, avec PreScaler = 8*/
    	TMR1L  = 0;	/* Initialise le timer pour une période de 256*256*8*0,2 us (OSC quartz = 20 MHZ) */
    	TMR1H  = 0;
        INTCON = 0x11000000;    /*activation interruptions périphériques*/
        PIE1   = 0x00000001;    /* activation interruption du TMR1 */
    
    
      while (1)
        ;
    }
    Merci
    bonne soirée
    phil

  11. #10
    invite7a49d0d5

    Cool Re : mplab

    Hi ;O]

    sur un 18Fxxxx il faut utiliser LAT plutôt que PORT pour
    assigner (0 ou 1) à un port... donc remplacer les lignes:

    PORTB = PORTB + 1;
    par
    LATB = PORTB + 1;

    (là on laisse PORT, car on 'lit' l'état)

    et

    PORTB = 0;
    par
    LATB = 0;

    testes ça...
    et moi je télécharge la datasheet du 2550 et re-post dans la soirée...

    vede
    ;O]
    ________________________
    ...

  12. #11
    invite93f9dd0c

    Re : mplab

    Ok je testerai ça dès demain matin pour voir si ça fonctionne.

    Mais peut être que je ne vois pas de clignotement parce que comme la led et initialiser à 0 et quelle change d'état tous les 0,1 s ce n'est pas détéctable pour l'oeil humain!

  13. #12
    invite7a49d0d5

    Cool Re : mplab

    re ;O]

    si, théoriquement 100ms c'est visible à l'oeil humain...

    sinon tu rajoutes une variable "compteur" dans ton interruption,
    pour augmenter la durée de temporisation,
    exemple :
    Code:
    void interrupt_timer1(void)
    {  
      compteur = compteur + 1
      if compteur > 4  // toutes les 5 * 100ms
     {
      LATB = PORTB + 1;
      compteur = 0;
     }
      TMR1L  = 0;	/* Ré-initialise timer pour une période de 256*256*8*0,2 us*/
      TMR1H  = 0;
      PIR1bits.TMR1IF = 0;    /* Réactive l'interrupt sur TMR1 (afface le flag)*/
    }

  14. #13
    invite7a49d0d5

    Cool Re : mplab

    rere ;O]

    dans cette ligne, c'est bon, sauf que tu "oublies" de démarrer le TMR1 ;O]

    T1CON = 0b10110000; /*ne démarre pas TMR1 ;O] , avec PreScaler = 8*/

    il faut mettre à 1 le bit 0 (TMR1ON), pour que le TMR1 "démarre" :

    T1CON = 0b10110001; /*démarre TMR1, avec PreScaler = 8*/

  15. #14
    invite93f9dd0c

    Re : mplab

    Ah! en effet c'est sur que ça ne peut pas marcher comme ça!!
    Je change ça direct et je te tien au courant demain.

    En tout cas c'est super sympas de me filer un coup de main..
    bonne soirée
    phil

  16. #15
    invite7a49d0d5

    Cool Re : mplab

    rerere ;O]

    bon je suis sur la datasheet...
    ben c'est beaucoup plus complexe qu'un 16F...

    rien que pour paramétrer l'oscillateur interne...

    ensuite faut désactiver l'ADC pour pouvoir utiliser RB0 en IO numérique...
    style :
    ADCON0 = 0
    ADCON1 = 0b00001111
    ADCON2 = 0

    et mettre une résistance 10K entre la broche MCLR et VDD...

    et...

  17. #16
    invite93f9dd0c

    Re : mplab

    Wi c'est sur c'est asser complexe..

    Et donc pour la suite si je veux effectuer une conversion du signal analogique tout les 100 us. Je dois fonctionner de la même façon ou je dois utiliser l'interruption du CAN?

  18. #17
    invite93f9dd0c

    Re : mplab

    Bonjour!

    J'ai essayé de faire clignoter la led mais elle reste bloquer à 0. J'ai regardé à l'oscilloscope et je ne reçoit pas la trame de changement de niveau.

    J'ai testé sur mplabSIM et g l'impression que le programme reste bloqué dans ma boucle while!!
    Peut être il faudrait mettre une condition " si flag passe à 1 alors on va en interruption timer"

    Dit moi ce que tu en pense.

    phil

  19. #18
    invite7a49d0d5

    Cool Re : mplab

    Salut Phil !

    non surtout pas... car si on fait ça (test du flag dans le main)
    ben c'est plus la peine d'utiliser une interruption...

    j'ai peur qu'il y ait un problème de configuration
    de l'oscillateur... qu'utilises-tu? l'oscillateur interne?

    tu as déjà fait un programme fonctionnel sur ce PIC?
    si non, on va commencer par réussir à faire clignoter
    une led, en simu et en réél, avant de continuer à avancer
    dans le brouillard...

    vede
    ;O]
    ________________________
    ...

    ps : jettes un oeil à ce fil... problème et pic similaire...
    http://forums.futura-sciences.com/el...ickit-2-a.html

  20. #19
    invite7a49d0d5

    Cool Re : mplab

    re-ps ;O]
    un programme style :
    Code:
    void main(void)
    {
      init_uc();
      while true
      {
          PORTB.0 = 1;
          DELAY_MS(250);
          PORTB.0 = 0;
          DELAY_MS(250);
      }
    }
    et tant que ça ça fonctionne pas...

  21. #20
    invite93f9dd0c

    Re : mplab

    Salut!

    J'ai déja fait des test sur ma carte nottament pour faire clignoter une led avec des delay et ça fonctionne. Donc ça ne peut pas être un problème de config..

    j'ai un peu remodifier mon code
    code:
    Code:
    #include <p18f2550.h>
    #include <timers.h>
    
    #pragma config WDT = OFF
    #pragma config FOSC = INTOSC_EC
    
    void InterruptHandlerHigh (void);
    
    //----------------------------------------------------------------------------
    // High priority interrupt vector
    
    #pragma code InterruptVectorHigh = 0x08
    void InterruptVectorHigh (void)
    {
      _asm
        goto InterruptHandlerHigh //jump to interrupt routine
      _endasm
    }
    
    //----------------------------------------------------------------------------
    // High priority interrupt routine
    
    #pragma code
    #pragma interrupt InterruptHandlerHigh
    
    void
    InterruptHandlerHigh ()
    {
      if (INTCONbits.TMR0IF)
        {                                   //check for TMR0 overflow
          LATBbits.LATB4 = !LATBbits.LATB4;
      
     
     /* TMR1L  = 0;	/* Ré-initialise timer pour une période de 256*256*8*0,2 us*/
      /*TMR1H  = 0;*/
      PIR1bits.TMR1IF = 0;    /* Réactive l'interrupt sur TMR1 (afface le flag)*/
        }
    }
    
    //----------------------------------------------------------------------------
     
    void main (void)
    {
      /* Make all bits on the Port B (LEDs) output bits.
       * If bit is cleared, then the bit is an output bit.
       */
      TRISB = 0;
    
    /* Reset the LEDs */
      LATB = 0;
    
    /* init/start timer */
    	T1CON  = 0b10110001; /*démarre TMR1, avec PreScaler = 8*/
    	TMR1L  = 0;	/* Initialise le timer pour une période de 256*256*8*0,2 us (OSC quartz = 20 MHZ) */
    	TMR1H  = 0;
        INTCON = 0x11000000;    /*activation interruptions périphériques*/
        PIE1   = 0x00000001;    /* activation interruption du TMR1 */
    
      while (1)
      ;
    	 
    }

  22. #21
    invite7a49d0d5

    Cool Re : mplab

    re ;O]

    moi ce qui m'étonnes c'est que tu parais utiliser l'oscillateur interne (INTIOSC_EC)
    mais que je ne vois pas de configuration de sa vitesse (registre OSCON)
    peux-tu m'en dire plus sur ta config. de l'oscillateur?

    vede
    ;O]
    ____________________
    ...

  23. #22
    invite7a49d0d5

    Cool Re : mplab

    rere ;O]

    dans ton interruption, je vois

    if (INTCONbits.TMR0IF)

    ce test ne sert à rien, vu qu'il n'y a qu'une source d'interruption possible (TMR0)...
    supprimes-le... il faut faire "basique"... jusqu'à ce que cela fonctionne...

    ensuite là :

    LATBbits.LATB4 = !LATBbits.LATB4;

    c'est pas bon... LAT c'est en sortie... et PORT pour "lire"... il faut coder :

    LATBbits.LATB4 = !PORTBbits.PORTB4;

    corriges ça...

    bon ensuite je vois tes corrections sur la gestion
    des interruptions, qui sont propres à ton compilo,
    que je ne connais pas, donc je vais pas pouvoir
    t'aider sur les syntaxes à utiliser... reportes toi
    à son aide et ses exemples...

    tiens nous au jus,
    et n'hésites pas si question,
    vede
    ;O]
    __________________
    ...












    il

  24. #23
    invite93f9dd0c

    Re : mplab

    Salut !

    J'ai réussi à faire clignoter ma led toute les 100 us. Cependant j'ai pas tout compris, notamment au niveau des registres TMR1H et TMR1L dont j'ai modifié les valeurs pour obtenir mes 100 us. Je joint mon code.

    code:
    Code:
    #include <p18f2550.h>
    #include <timers.h>
    
    #pragma config WDT = OFF
    
    void main (void);
    void InterruptHandlerHigh (void);
    
    //----------------------------------------------------------------------------
    // Main routine
    
    void main ()
    {
      /* Make all bits on the Port B (LEDs) output bits.
       * If bit is cleared, then the bit is an output bit.
       */
      TRISB = 0;
    
    /* Reset the LEDs */
      LATBbits.LATB4 = 0;
    
    RCONbits.IPEN = 1;            //enable priority levels
    
    /* init/start timer */
    	T1CON  = 0b10000001; /*démarre TMR1, avec PreScaler = 8*/
    	TMR1L  = 248;	/* Initialise le timer pour une période de 256*256*8*0,2 us (OSC quartz = 20 MHZ) */
    	TMR1H  = 255;
        INTCON = 0x11000000;    /*activation interruptions périphériques*/
        PIE1   = 0x00000001;    /* activation interruption du TMR1 */
    
    T1CONbits.TMR1ON=1;//demarrage du timmer1;
    INTCONbits.GIE=1;	// enable int
    
    
    INTCONbits.PEIE=1;	// enable int
    
      while (1);
      {
    
      }
    }
    
    //----------------------------------------------------------------------------
    // High priority interrupt vector
    
    #pragma code InterruptVectorHigh = 0x08
    void InterruptVectorHigh (void)
    {
      _asm
        goto InterruptHandlerHigh //jump to interrupt routine
      _endasm
    }
    
    //----------------------------------------------------------------------------
    // High priority interrupt routine
    
    #pragma code
    #pragma interrupt InterruptHandlerHigh
    
    void
    InterruptHandlerHigh ()
    {
      if (PIR1bits.TMR1IF)
        {                                   //check for TMR0 overflow
         
    PIR1bits.TMR1IF = 0;    /* Réactive l'interrupt sur TMR1 (afface le flag)*/
    LATBbits.LATB4 = !LATBbits.LATB4;
       
     TMR1L  = 248;	/* Ré-initialise timer pour une période de 256*256*8*0,2 us*/
     TMR1H  = 255;
      
        }
    }
    
    //----------------------------------------------------------------------------

    Maintenant je vais essayer d'afficher quelque chose sur mon LCD 2*16 mode 4bits.
    Je sais pas du tout comment ça marche mais j'ai choppé quelques docs sur le net.

  25. #24
    invite7a49d0d5

    Cool Re : mplab

    Hi Phil ;O]

    là ton timer "déborde" et donc interruptionne toutes les 8 instructions...
    65536 - (255*256 + 248) = 8
    calcul du temp du timer :
    8 * 8 (prescaler) * TOsc = 100?s
    TOsc c'est le temp d'une instruction, qui est basé sur l'oscillateur FOsc/4 du PIC...
    exemples
    @ 4Mhz : TOsc=1µs
    @ 20Mhz : TOsc=0.2µs
    on voit qu'avec un oscillateur à 4Mhz, la période est de 64µs...

    et bon courage pour le LCD,
    tiens nous au jus,
    vede
    ;O]
    _____________________
    ...

  26. #25
    invite7a49d0d5

    Cool Re : mplab

    ps : lis ce fil :
    http://forums.futura-sciences.com/el...c-18f2550.html
    au début du code tu as un exemple de configuration de l'oscillateur interne du 18F2550...
    avec désactivation de l'ADC...

  27. #26
    invite93f9dd0c

    Re : mplab

    Je comprend pas pourquoi tu prend en compte le prescaler = 8 parce que mon registre T1CON est égale à 0b10000001. Les bits 4 et 5 sont à 0.
    Donc avec mon quartz 20Mhz sa devrait faire
    8*0,2 us = 1,6us

    Or la j'obtient du 100 us!!

    Je vais jeter un oeil à ton lien.

  28. #27
    invite7a49d0d5

    Cool Re : mplab

    re ;O]

    j'avais pas vu, m'étais basé sur le commentaire...
    et oui c'est très très zétrange ;O]
    car ça devrait bien faire 1,6µs @ 20Mhz, et pas 100µs...

  29. #28
    invite93f9dd0c

    Re : mplab

    Re
    je viens de regarder le lien mais lui il configure son oscillateur parce que il a mis au début de son programme:

    Code:
    #pragma config FOSC = INTOSCIO_EC//Internal oscillator, port function on RA6, EC used by USB
    Or moi je ne mets pas ça parce que je veux utiliser mon quartz comme oscilatteur.

  30. #29
    invite93f9dd0c

    Re : mplab

    Salut!

    Bon je suis passé à la prgrammation de mon afficheur pour essayer d'afficher un caractère dessus.
    Cependant la librairie de microchip xlcd.h n'a pas l'air de marcher. Sa me met des erreurs de synthax alors que je recopie juste le nom de la fonction.

    Est ce que tu connais des librairies pour afficheur LCD 2*16?

  31. #30
    invite7a49d0d5

    Cool Re : mplab

    Hi!
    ça n'a pas l'air de marcher... en simu?
    sinon oui, dans MikroC > Help > Libraries > LCD
    après le "protocole LCD" est des plus minimaliste...
    vede
    ;O]
    ______________
    ...

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Mplab
    Par invite12de5372 dans le forum Électronique
    Réponses: 4
    Dernier message: 07/12/2009, 22h14
  2. Mplab
    Par invite70772835 dans le forum Électronique
    Réponses: 3
    Dernier message: 08/03/2008, 14h47
  3. Mplab V6
    Par invitedef0ec76 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/02/2008, 21h39
  4. Mplab
    Par invite8146323e dans le forum Électronique
    Réponses: 5
    Dernier message: 18/10/2006, 21h48
  5. Mplab
    Par invite8146323e dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 18/10/2006, 13h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.