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

#1 Message par entretoize » ven. 13 mai 2016 23:00

Bonjour, j'essaye de compiler mon premier programme pour le PIC18F2450, vo ici mon code actuel:

Code : Tout sélectionner

// PIC18F2450 Configuration Bit Settings

// 'C' source line config statements


#include <p18F2450.h>
#include <delays.h>



// 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_XT // 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 = ON         // Watchdog Timer Enable bit (WDT enabled)
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config PBADEN = ON      // PORTB A/D Enable bit (PORTB<4:0> pins are configured as analog input channels on Reset)
#pragma config LPT1OSC = OFF    // Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON       // 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)


void main(void)
{
   TRISB = 0;
   PORTB = 0xff;


   while(1)
   {
        //Delay10KTCYx(0);
        PORTB = 0xff;
        //Delay10KTCYx(0);
        PORTB = 0;
       
   }
}


Quand je debug en pas à pas, une led connectée sur le port B pin 4 s'allume puis s'éteint et si je laisse aller le programme elle s'allume moins lumineuse puisqu'il n'y a pas de délai. Je n'ai pas trouvé de délai qui fonctionne mais c'est un autre problème.

Si je clique "make and program device main project" (j'utilise mplab) la comilation se fait bien et la programmation du pic aussi mais j'ai uniquement des chose bizarre qui se passe (soit led est éteinte soit légèrement allumé, soit elle s'allume quand j'approche mes doigts à quelques centimètres !).

Je ne sais pas ce qui n'ai pas bon, peut être les réglages pour l'oscillateur car je n'ai pas tout compris.

Merci d'avance.
Modifié en dernier par entretoize le sam. 14 mai 2016 11:39, modifié 5 fois.

Program works only in debugging
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » sam. 14 mai 2016 08:28

 ! Message de modération :
Hello,

This is a french forum ! Please You must speak in french ! thank you .


En allant sur les serveurs anglais, je fais l'effort de parler anglais ! sans traduction en français ce post sera verrouiller !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Program works only in debugging
entretoize
Débutant
Débutant
Messages : 25
Enregistré en : mai 2016

#3 Message par entretoize » sam. 14 mai 2016 08:44

Désolé pour le message en anglais (l'habitude) en plus je suis francais ! C'est traduit.

Program works only in debugging
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#4 Message par Jérémy » sam. 14 mai 2016 08:54

Salut,

Ah ok ben plus de problème alors !

PAr contre je te demanderais de modifier ton premier post et de mettre ton code entre balise ( lien explicatif)
Il serait également préférable de fournir la Data-Sheet de ton PIC afin que les personnes voulant t'aider n'ai pas à le chercher. Une option ç été prévue à cet effet pou faciliter cela , en quelques clic seulement ( lien explicatif ).
Pour finir de renommer le titre de ton post


Je travail sous mikroC je ne connais que très peu Mplabx . Mais je suis sur qu'il existe une librairie pour faire un delay, sans quoi ta led va s"allumer et s'éteindre tellement vite que tu ne verra aucun changement.
Si en approchant ta main le comportement change il doit y avoir un problème de masse ? Utilise tu un transistor pour allumer ta led ? Dans le doute aurait tu un schéma à nous montrer pour qu'on vérifie tout ca ?

Concernant le programme, cela me parait bizarre d'avoir un si gros paramétrage pour allumer une led.
As tu regarder ce petit tutorielsur comment faire clignoter une LED ?


Merci à toi de ta compréhension
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

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

C'est bon pour les modifs, sauf le datasheet que j'ai mis en lien car je ne vois pas l'option en éditant le message...
Pour la config c'est mplab X qui génère un code de config avec tous les paramètres, je pense que la plupart sont par défaut et donc inutiles.

J'ai pensé à un problème de masse mais mon montage étant très simple je ne vois pas, j'utilise le Pickit en alim donc sa masse est sur les bornes 8 et 19 (une suffit peut etre), le VDD sur la broche 20, les broches de programmation sur les broches 27 et 28 (PGC et PGD) et la broche reset sur la broche 1. Pour cette partie pas de problème puisque la programmation fonctionne.

L'anode de ma led est branchée sur la broche 25 (RB4) puis va à la masse par l'intermédiaire d'une resistance de 1.5kohms (c'est une led cms). Donc je ne vois pas ou le probleme de masse pourrais être d'autant que ça fonctionne en debug... ?

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 :

#6 Message par Jérémy » sam. 14 mai 2016 10:10

sauf le datasheet que j'ai mis en lien car je ne vois pas l'option en éditant le message...


Aïe, toujours ce problème...... il va falloir le réglé ! . Parfait pour les modifications. On va checker le problème d'édition de message et de lien de Data-sheet qui ne fonctionne pas.
Petit Hors-sujet: quand tu édite ton premier post tu ne vois pas la partie pour mettre le lien de DS c'est bien ça ? .

Une R de 1.5K pour une led ca me parait juste énorme. est ce une LED Haute luminosité ? quelle est la tension d'alimentation de ton PIC ?

avec les PIC 18F on utilise plutôt LATB à la palce de PORTB pour mettre une sortie dans un état haut ou bas.
De plus je pense que tu devrais mettre ta sortie en numérique . je ne connais pas la commande avec MPLABx en mikroC c'est ANSEL
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

#7 Message par entretoize » sam. 14 mai 2016 10:37

Pour le datasheet oui quand je fais éditer il n'y a pas le champs comme dans le lien explicatif.
Pour la résistance oui ca fait beaucoup ça doit effectivement être un led haute luminosité, c'est touT ce que j'avais soula main mais encore une fois elle fonctionne très bien en debug avec cette résistance et j'ai aussi vérifié la tension en sortie du pic à l'oscillo, j'ai juste des pics à 2V toutes les 19us (voir image jointe), donc elle ne risque pas de s'allumer.
Je viens d'essayer avec LATB, c'est exactement pareil. Est-ce qu'il n'y a pas OSCCON à configurer ? Moi je pense plus à un problème d'oscillateur du fait que ça fonctionne en debug...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

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

#8 Message par entretoize » sam. 14 mai 2016 10:51

Je suis passé en digital en mettant PBADEN = OFF, pas de changement.

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
HULK28
Avatar de l’utilisateur
Amateur
Amateur
Messages : 106
Enregistré en : août 2015
Localisation : IdF

#9 Message par HULK28 » sam. 14 mai 2016 10:53

Bonjour,

je ne vois aucun problème hormis que tu ne mets pas de delay entre tes 2 commandes de led.....
A la vitesse du debug évidemment ça fonctionne puisque c'est du pas à pas, par contre en mode normal il faut que tu mettes un temps suffisamment long pour voir ta led s'allumer puis s'éteindre etc.
"Pour la carotte, le lapin est la parfaite incarnation du mal" -Robert Shecley-

Programme ne fonctionne qu'en mode debugging (PIC18F2450)
HULK28
Avatar de l’utilisateur
Amateur
Amateur
Messages : 106
Enregistré en : août 2015
Localisation : IdF

#10 Message par HULK28 » sam. 14 mai 2016 10:55

Donc pour résumer:

tu appliques le conseil de Jérémy avec LATB et tu ajoutes une tempo entre chaque commande et ça fonctionnera.
"Pour la carotte, le lapin est la parfaite incarnation du mal" -Robert Shecley-


Retourner vers « Langage C »

Qui est en ligne

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