Bonjour,
Voilà, j'ai un petit problème avec mes commandes de LED. JE travaille avec un PIC18f2620, alimenté en 5V. JE code sous mplab IDE 8, avec MCC18.
J'ai 4 led directement contrôlées par le pic, avec une résitance de 1k pour chaque led. Ces led sont branchées sur les pins RB3,RB2,RB1 et RB0.
Lors de l'initialisation de la carte, je veux faire un code de clignotement, en gros, les 4 led clignotent en même temps 10 fois, puis, elles s'allument une par une (en laissant les précédentes allumées, en gros, ca fait un chenille). D'habitude, j'utilise des commandes telles que PORTBbits.RB0= 1, mais cette fois ci, lorsque je fais un simple :
Seul RB1 reste 1...PORTBbits.RB0=1;
PORTBbits.RB1=1;
En revanche si je fait :
Les deux led restent allumées.PORTB=0B00000011;
Actuellement, j'ai résolu mon problème en utilisant LAT, mais je n'arrive pas à comprendre pourquoi en utilisant PORTB ca ne marche pas. Est ce par ce que mes led tire trop (avec une résistance de 1k???), et du coup au moment de la "relecture" de l'etat, celui ci n'est pas encore à 1??
Voici le code fonctionnant actuellement :
En revanche si je remplace#include <delays.h>
//* Pragma configs (en ordre):
//* Utilize le quartz interne
//* Pas de watch dog
//* Pas de low voltage programming
//* Power up active timer => preds du temps pour demarrer le programme
//* PORTB on digital, not on analogical
//*
#pragma config OSC = INTIO67
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PWRT = OFF
#pragma config MCLRE = OFF
//Définition des constante
#define LED_1 LATBbits.LATB3
#define LED_2 LATBbits.LATB2
#define LED_3 LATBbits.LATB1
#define LED_4 LATBbits.LATB0
#define XBEE LATCbits.LATC0
void main (void)
{
int i,j;
//0 : Out
//1 : In
// Set clock to 8MHz and activate PLL, thus we have 32MHz
OSCCONbits.IRCF2=1;
OSCCONbits.IRCF1=1;
OSCCONbits.IRCF0=1;
OSCTUNEbits.PLLEN=1;
TRISA=0b11111111;
TRISC=0b11000000;
TRISB=0b00000000;
j=0;
XBEE=0;
//on fait clignoter
while(j<10)
{
LED_1=1;
LED_2=1;
LED_3=1;
LED_4=1;
Delay10KTCYx(150);
LED_1=0;
LED_2=0;
LED_3=0;
LED_4=0;
Delay10KTCYx(150);
j=j+1;
}
LED_1=1;
Delay10KTCYx(250);
LED_2=1;
Delay10KTCYx(250);
LED_3=1;
Delay10KTCYx(250);
LED_4=1;
Delay10KTCYx(250);
XBEE=1;
while(1);
}
Par//Définition des constante
#define LED_1 LATBbits.LATB3
#define LED_2 LATBbits.LATB2
#define LED_3 LATBbits.LATB1
#define LED_4 LATBbits.LATB0
#define XBEE LATCbits.LATC0
Seul la dernière led allumée reste allumée, ce qui signifie qu'une seule led clignote au debut, puis, une seule reste allumée...//Définition des constante
#define LED_1 PORTBbits.RB3
#define LED_2 PORTBbits.RB2
#define LED_3 PORTBbits.RB1
#define LED_4 PORTBbits.RB0
#define XBEE PORTCbits.RC0
J'aurai aimé comprendre le truc la.
Merci d'avance pour votre aide.
-----