Microcontroleur (2)
Le programme du microcontroleur est terminé !
Malheureusement il y a eu une erreur dans la commande du microcontroleur Rabbit. Il a fallu en commander un nouveau car il n'y avait pas la convertion analogique numérique. Nous le receverons surement la semaine prochaine.
Voici une partie du code :
//*******************PROGRAMME CONVERSION EN LECTURE CONTINUE*******************
#define ADCCSR 0x0543
#define ADCCR 0X544
#define ADCLR 0x0540
#define ADCMR 0x0541
int value1 ;
int value2 ;
int value3 ;
int value4 ;
int value5 ;
int value6 ;
int value7 ;
..................
main()
{
// 0x544 = ADCCR
// 1000 0100 /horloge source/-/division par 2(pas de ralentissement)
// /convertisseur actif/-/pas d'interruption/
WrPortI(ADCCR, NULL, 0x84);
// Port A en sortie
WrPortI(SPCR, &SPCRShadow, 0X84);
// Utilisation du Port A pour allumer les diodes
WrPortI(PADR, &PADRShadow, 0xF0);
//******************************************************************************
while(1)
{
while(1)
{
WrPortE(ADCCSR, NULL, 0x0C);// choix du canal de conversion
BitWrPortE(ADCCSR, NULL, 1, 0);//début de la conversion
value1 = BitRdPortE(ADCMR ,7); // lecture des 8 MSB
value2 = BitRdPortE(ADCMR ,6);
value3 = BitRdPortE(ADCMR ,5);
value4 = BitRdPortE(ADCMR ,4);
.............
printf("premiere valeur");
printf("%d", value1);
printf("%d", value2);
printf("%d", value3);
printf("%d", value4);
break;
}
while(1)
{
WrPortE(ADCCSR, NULL, 0x1C);//choix canal de conversion
BitWrPortE(ADCCSR, NULL, 1, 0);//début conversion
printf("deuxieme valeur");
value100 = BitRdPortE(ADCMR ,7); // lecture des 8 MSB
value200 = BitRdPortE(ADCMR ,6);
value300 = BitRdPortE(ADCMR ,5);
value400 = BitRdPortE(ADCMR ,4);
value500 = BitRdPortE(ADCMR ,3);
value600 = BitRdPortE(ADCMR ,2);
value700 = BitRdPortE(ADCMR ,1);
............
printf("%d", value100);
printf("%d", value200);
printf("%d", value300);
printf("%d", value400);
printf("%d", value500);
printf("%d", value600);
printf("%d", value700);
//conversion donne ValueY
break;
}
if(valueX>=? && valueX<=?)
{
if(ValueY > ?)
{
//ouvrir le contacteur
}
if(ValueY < ?)
{
//fermé le contacteur
}
}
//test à faire 5 fois
}
}
Un bon travail réalisé par Mathieu ! En attente de recevoir le bon microcontroleur et faire des tests !