void printserialhex(uint16_t innum) { uint16_t j1,in; uint8_t p1,p2; in = innum; j1 = (in & 0x0f); if (j1 > 9) p1 = (uint8_t)(j1 + 0x41 - 10); else p1 = (uint8_t)(j1 +0x30); j1 = (in & 0xf0) >> 4; if (j1 > 9) p2 = (uint8_t)(j1 +0x41 - 10); else p2 = (uint8_t)(j1 +0x30); TransmitCharacter(p2); TransmitCharacter(p1); }
void printserialsingned(uint16_t innum) { uint16_t j1,k1,l1,m1,in; uint8_t p1,p2,p3,p4,p5; if(innum < 0x8000) { in = innum; TransmitCharacter('+'); } else { in = (uint16_t)(~innum); //in = 0x7fff - in; TransmitCharacter('-'); } j1 = (in / 10); p1 = (uint8_t)(in - j1*10 +0x30); k1 = (j1 / 10); p2 = (uint8_t)(j1 - k1*10 +0x30); l1 = (k1 / 10); p3 = (uint8_t)(k1 - l1*10 +0x30); m1 = (l1 / 10); p4 = (uint8_t)(l1 - m1*10 +0x30); p5 = (uint8_t)m1 +0x30; TransmitCharacter(p5); TransmitCharacter(p4); TransmitCharacter(p3); TransmitCharacter(p2); TransmitCharacter(p1); TransmitCharacter(0x09); }
void printlistall(void) { TransmitCharacter(0x0a); TransmitCharacter(0x0d); for(pt=0;pt<120;pt++){ //pt++; //pt++; printserialhex(Result[pt]); TransmitData(" "); //printserial(list[pt]); } TransmitCharacter(0x0a); TransmitCharacter(0x0d); }
void TransmitData (char TransData[]) { uint8_t j=0; /* Dummy variable */ while(TransData[j]){ TransmitCharacter(TransData[j]); /* Transmit a byte */ j++; } }
void TransmitData (char TransData[]) { uint8_t j,k; /* Dummy variable */ k = strlen (TransData); for (j=0; j< k; j++) { /* Loop for character string */ TransmitCharacter(TransData[j]); /* Transmit a byte */ } }
void printlistall(void) { //TransmitCharacter(0x0a); //TransmitCharacter(0x0d); for(pt=0;pt<128;pt++){ //pt++; //pt++; printserialsingned(Result[pt]); //printserial(list[pt]); } TransmitCharacter(0x0a); // LIne feed //TransmitCharacter(0x0d); // carrige return }
void acquisitionLineSensors(void) { uint32_t Counter_value_start = EMIOS_0.CH[16].CCNTR.B.CCNTR; uint32_t Counter_value_tmp = 0; uint8_t i = 0; uint8_t capteur_resultat[7]; uint8_t seuil_capteur[7]; uint8_t k; while(i<7) // Boucle de test pour chaque Capteur { seuil_capteur[i] = potent_entre(400,1600); // On lit sur le potent le seuil du capteur i // Affichage textuel en xbee TransmitData("\n\nOn teste le capteur :"); TransmitCharacter(i); TransmitData("\nLe temps est : "); TransmitCharacter(seuil_capteur[i]); TransmitData("\nLe capteur detecte :"); PIT_Enable_Channel(1); do { SIU.PGPDO[1].B.PPD0 = 0xfe000000; //3f810000; // Pins level HIGH }while(PIT.CH[6].CVAL.R < 9 ); PIT_Disable_Channel(1); // Charging the sensor for 10 us SIU.PCR[32].R = 0x0100; // Pin set as an INPUT SIU.PCR[33].R = 0x0100; // Pin set as an INPUT SIU.PCR[34].R = 0x0100; // Pin set as an INPUT SIU.PCR[35].R = 0x0100; // Pin set as an INPUT SIU.PCR[36].R = 0x0100; // Pin set as an INPUT SIU.PCR[37].R = 0x0100; // Pin set as an INPUT SIU.PCR[38].R = 0x0100; // Pin set as an INPUT // Réinitialisation des valeurs lues sur les capteurs for(k = 0; k < 7; k++) { capteur_resultat[k] = 1; } Counter_value_start = EMIOS_0.CH[16].CCNTR.B.CCNTR; while(((Counter_value_tmp - Counter_value_start) % EMIOS_0.CH[16].CADR.R) < 2000)// Temps total d'acquisition // On fait l'aquisition <1600 et on fait varier le potentiometre entre 400 et 1600 { if(SIU.GPDI[32].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[0])//798 { capteur_resultat[0] = 0; } if(SIU.GPDI[33].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[1]) { capteur_resultat[1] = 0; } if(SIU.GPDI[34].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[2]) { capteur_resultat[2] = 0; } if(SIU.GPDI[35].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[3]) { capteur_resultat[3] = 0; } if(SIU.GPDI[35].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[4]) { capteur_resultat[4] = 0; } if(SIU.GPDI[36].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[5]) { capteur_resultat[5] = 0; } if(SIU.GPDI[37].B.PDI != 1 && EMIOS_0.CH[16].CCNTR.B.CCNTR< seuil_capteur[6])//686 { capteur_resultat[6] = 0; } Counter_value_tmp = EMIOS_0.CH[16].CCNTR.B.CCNTR; } // Affichage du résultat du capteur courant i if(capteur_resultat[i]) { TransmitData(" Blanc"); } else TransmitData(" Noir"); SIU.PCR[32].R = 0x0200; // Pin set as an OUTPUT // PC[0] SIU.PCR[33].R = 0x0200; // Pin set as an OUTPUT // PC[1] SIU.PCR[34].R = 0x0200; // Pin set as an OUTPUT // PC[2] SIU.PCR[35].R = 0x0200; // Pin set as an OUTPUT // PC[3] SIU.PCR[36].R = 0x0200; // Pin set as an OUTPUT // PC[4] SIU.PCR[37].R = 0x0200; // Pin set as an OUTPUT // PC[5] SIU.PCR[38].R = 0x0200; // Pin set as an OUTPUT // PC[6] if(SIU.PGPDI[2].R & 0x40000000) // SI le bouton 2 est appuyé on passe au capteur suivant { i++; delay(1000000); } } }