Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
entretoize
Débutant
Débutant
Messages : 25
Enregistré en : mai 2016

#11 Message par entretoize » sam. 14 mai 2016 11:09

En fait actuellement, je ne met rien dans la boucle infinie pour être sûr que ça ne vient pas des delay, et j'ai toujours les piques à 2 ou 5V, que je mette 0 ou 0xff au debut.
En gros mon code se résume à ça:

Code : Tout sélectionner

   
   TRISB = 0;   /* Utilisation de toutes les 8 broches du PORT B en tant que sortie */
   PORTB = 0xff;   /*allumer toutes les LED */
Modifié en dernier par entretoize le sam. 14 mai 2016 11:45, modifié 1 fois.

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » sam. 14 mai 2016 11:17

Erreur de commentaire je suppose , car tu parle du PORTD dans le commentaire et tu mets le PORTB en sortie ?


Essaye ca :

Code : Tout sélectionner

void main(void)
{
   
TRISB 0;  /* Ici on parle bien du PORT B  */
   
PBADEN OFF  /* mode numerique */
   
while(1)
   {
         
__delay_ms(100);
        
LATB 0xff;
         
__delay_ms(100);
        
LATB 0x00;
       
   }
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#13 Message par Jérémy » sam. 14 mai 2016 11:22

HS: peut tu essayer de ré-éditer ton premier message voir si tu vois le lien data-sheet s'il te plait ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
entretoize
Débutant
Débutant
Messages : 25
Enregistré en : mai 2016

#14 Message par entretoize » sam. 14 mai 2016 11:45

C'est bon pour le datasheet.
Bon j'ai essayé ton code dans mikroc (car je n'arrive pas à compiler avec des delay dans mplab x = probleme d'include...) et d'importer le fichier hex dans mplab x et la la j'ai juste 0 en sortie...
C'est bien le port B que j'utilise.
Pour l'histoire des délais le problème ne vient pas de la, car avec le code suivant j'ai la même chose.

Code : Tout sélectionner

void main(void)
{
   TRISB = 0;   /* Utilisation de toutes les 8 broches du PORT B en tant que sortie */
   PORTB = 0xff;   /* allumer toutes les LED */

   while(1)
   {

       
   }
}

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#15 Message par Jérémy » sam. 14 mai 2016 12:03

C'est bon pour le datasheet.

Ok génial ! meric pour le test .

Si tu as aussi mikroC le code serait comme ceci :

Code : Tout sélectionner


void main
(void)
{
    ANSELB = 0;  // On met le port B en numérique
   TRISB = 0;   // Mise en sortie du port

   while(1)
   {
    LATB = 0x00 ; //on éteint le port
    delay_ms(100); // pause de 100 millisecondes
    LATB = 0xFF ; //on allume le port
    delay_ms(100); // pause de 100 millisecondes
       
   
}
}


Sinon il ne manquerai pas ca : #include <xc.h>
utilise tu un OSC externe ? ou en interne ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#16 Message par Guest » sam. 14 mai 2016 12:27

Bonjour
Delay10KTCYx(0); c'etait pour le compli C18
Utilise pour les delays:
__delay_ms(1000); 1Seconde

Sous quel compil es-tu , V1.37 ? C'est un problème ces macros de Temporisation.
Comme dit Jeremy, utilise le xc.h ,question d' habitude,c'est le courant, il va,chercher lui même le bon fichier xxxx.h , issus de ton projet à incorporer (plus simple si tu changes en cours de route de µC). Même si comme cela,ça fonctionne aussi. Ton programme tourne, le problème c'est que tu ne vois pas, la led : je te vois, je ne te vois pas ,je te vois, je ne te vois pas :lol:

Allez A+

PS je viens de voir que tu as mis le chien en route

Code : Tout sélectionner

// CONFIG2H
#pragma config WDT = ON         // Watchdog Timer Enable bit (WDT enabled)
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)


passe en off

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
entretoize
Débutant
Débutant
Messages : 25
Enregistré en : mai 2016

#17 Message par entretoize » sam. 14 mai 2016 15:14

Alors jeremy pour ton exemple j'ai ANSELB non déclaré ?!
J'ai mis l'include xc.h en lieu et place de p18f2450, j'ai pu mettre les __delay_ms.
J'utilise (ou essaye d'utiliser) l'oscillateur interne, y a t il quelque chose à connecter sur les broches, je ne trouve pas d'exemple avec shéma ?

Maï j'ai mis le watchdog sur OFF, pas de changement. J'utilisai C18 3.47 , la je suis passé sur X8 1.37.

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#18 Message par Jérémy » sam. 14 mai 2016 15:30

Les experts vont bien finir par réussir à faire clignoter ta LED .... :langue:

Le bug doit venir de la configuration, malheureusement je te dirais des bêtises . Ils parlent d'USB dans l'osc interne je comprends pas trop !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#19 Message par Guest » sam. 14 mai 2016 16:34

1/chien réglé il te faisait des resets a chaque débordement
2/Rajoute cela pour les delays ici c'est une Fosc de 20Mhz

Code : Tout sélectionner

#define _XTAL_FREQ 20000000             // oscillator frequency

Bizarre ,En principe tu devrais avoir un problème de compli, si tu ne mets pas cela .Car sert au macro pour le calcul des tempos
3/ change ton fuse FOSC et passe en INTOSCIO_ES a suivre...

PS tu n'as pas un quartz et 2 capa 15pf ~ c'est bien aussi oscillateur externe pour faire des essais :wink:

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
entretoize
Débutant
Débutant
Messages : 25
Enregistré en : mai 2016

#20 Message par entretoize » sam. 14 mai 2016 19:12

Bon grosse avancé en changeant de port, je suis passé sur le port C, les différentes configurations de FOSC ne change pas le fonctionnement apparemment.
Maï j'avais effectivement un problème de compilation mais j'avais trouvé qu'il fallait définir _XTAL_FREQ.

Donc ça fonctionne avec ce code:

Code : Tout sélectionner

// PIC18F2450 Configuration Bit Settings

// CONFIG1L
#pragma config PLLDIV = 1       // PLL Prescaler Selection bits (No prescale (4 MHz oscillator input drives PLL directly))
#pragma config CPUDIV = OSC1_PLL2// System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 1       // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1) (USB clock source comes directly from the primary oscillator block with no postscale)

// CONFIG1H
#pragma config FOSC = INTOSC_HS // Oscillator Selection bits (Internal oscillator, XT used by USB (INTXT))
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON         // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 21        // Brown-out Reset Voltage bits (2.1V)
#pragma config VREGEN = OFF     // USB Voltage Regulator Enable bit (USB voltage regulator disabled)

// CONFIG2H
#pragma config WDT = OFF         // Watchdog Timer Enable bit (WDT enabled)
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config PBADEN = OFF     // PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)
#pragma config LPT1OSC = OFF    // Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = OFF       // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = ON         // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
#pragma config BBSIZ = BB1K     // Boot Block Size Select bit (1KW Boot block size)
#pragma config XINST = OFF      // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000800-001FFFh) or (001000-001FFFh) is not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (002000-003FFFh) is not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot block (000000-0007FFh) or (000000-000FFFh) is not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000800-001FFFh) or (001000-001FFFh) is not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (002000-003FFFh) is not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) are not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot block (000000-0007FFh) or (000000-000FFFh) is not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000800-001FFFh) or (001000-001FFFh) is not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) or (000000-000FFFh) is not protected from table reads executed in other blocks)



#include <xc.h>

#define _XTAL_FREQ 8000000


void main(void)
{
    //OSCCON = 2;

   TRISC = 0;
   PORTC = 0xff;


   while(1)
   {
        PORTC  = 0;
        __delay_ms(1);
       
        PORTC  = 0xff;
        __delay_ms(1);
   }
}


Par contre le led clignote environ 2 fois par seconde avec __delay_ms(1) ce qui me semble étrange, ça devrait être 500 fois plus non ? Même avec un diviseur comment ça peut être aussi lent.

Reste la question du pourquoi ça ne fonctionne pas sur le portB , peut etre le #pragma config PBADEN = OFF qui ne joue pas son role ??


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 81 invités