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 ---
- 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 ---
Modérateur : Jérémy
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
-
entretoize
Débutant- Messages : 25
- Enregistré en : mai 2016
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:
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- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Erreur de commentaire je suppose , car tu parle du PORTD dans le commentaire et tu mets le PORTB en sortie ?
Essaye ca :
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;
}
}
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
-
entretoize
Débutant- Messages : 25
- Enregistré en : mai 2016
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.
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- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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 ?
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
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
Allez A+
PS je viens de voir que tu as mis le chien en route
passe en off
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
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- Messages : 25
- Enregistré en : mai 2016
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.
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)
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
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
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
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
Programme ne fonctionne qu'en mode debugging (PIC18F2450)
-
entretoize
Débutant- Messages : 25
- Enregistré en : mai 2016
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:
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 ??
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 ??
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 81 invités