Vic Van Roie / Mbed 2 deprecated STEM_Nucleo_start

Dependencies:   mbed

Committer:
VicOnCampusGeel
Date:
Thu Feb 09 08:28:08 2017 +0000
Revision:
0:d6c40db60579
start;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VicOnCampusGeel 0:d6c40db60579 1 //------------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 2 /* converteer de pulstrein naar een NEC code van 32-bit
VicOnCampusGeel 0:d6c40db60579 3
VicOnCampusGeel 0:d6c40db60579 4 element 0 van de array bevat de startsequentie
VicOnCampusGeel 0:d6c40db60579 5 laag - hoog en wordt dus niet vertaald in bits
VicOnCampusGeel 0:d6c40db60579 6 1 Pulstijd laag + 1 Pulstijd hoog = 0 Bit
VicOnCampusGeel 0:d6c40db60579 7 1 Pulstijd laag + 3 Pulstijd hoog = 1 Bit
VicOnCampusGeel 0:d6c40db60579 8
VicOnCampusGeel 0:d6c40db60579 9 als de pulstijd HOOG minstens dubbel zo lang duurt als de pulstijd LAAG
VicOnCampusGeel 0:d6c40db60579 10 wordt er de bit 1 gemaakt voor de code.
VicOnCampusGeel 0:d6c40db60579 11 Alle andere voorwaarden geven een bit 0 voor de decodering,
VicOnCampusGeel 0:d6c40db60579 12 zodat de actief lage pulsen worden omgezet in een actief hoge code.
VicOnCampusGeel 0:d6c40db60579 13
VicOnCampusGeel 0:d6c40db60579 14 Immers : een 1 in deze code, betekent IR-licht uitzenden op de Transmitter
VicOnCampusGeel 0:d6c40db60579 15 een 0 betekent geen IR-licht uitzenden
VicOnCampusGeel 0:d6c40db60579 16
VicOnCampusGeel 0:d6c40db60579 17 Terwijl: voor onze ontvanger geldt:
VicOnCampusGeel 0:d6c40db60579 18 een 1 lezen, betekent GEEN licht ontvangen
VicOnCampusGeel 0:d6c40db60579 19 een 0 lezen, betekent IR-licht ontvangen
VicOnCampusGeel 0:d6c40db60579 20 */
VicOnCampusGeel 0:d6c40db60579 21 //------------------------------------------------------------------------------
VicOnCampusGeel 0:d6c40db60579 22 unsigned long pulstrein_to_NEC_Code()
VicOnCampusGeel 0:d6c40db60579 23 {
VicOnCampusGeel 0:d6c40db60579 24 // long kan 64 bit integer code aan
VicOnCampusGeel 0:d6c40db60579 25 const int BLen= 32 ; // Bit lengte van deze NEC_CODE
VicOnCampusGeel 0:d6c40db60579 26 unsigned long NEC_Code=0 ;// tot max 64 bit code
VicOnCampusGeel 0:d6c40db60579 27 unsigned long flag=1;
VicOnCampusGeel 0:d6c40db60579 28 char byte[4]= {0,0,0,0};
VicOnCampusGeel 0:d6c40db60579 29 max_cnt=0;
VicOnCampusGeel 0:d6c40db60579 30 if (eLH_cnt>eHL_cnt) {
VicOnCampusGeel 0:d6c40db60579 31 max_cnt =eLH_cnt;
VicOnCampusGeel 0:d6c40db60579 32 } else {
VicOnCampusGeel 0:d6c40db60579 33 max_cnt =eHL_cnt;
VicOnCampusGeel 0:d6c40db60579 34 }
VicOnCampusGeel 0:d6c40db60579 35 if (max_cnt>BLen) { // enkel code produceren als 32-bit code volledig is
VicOnCampusGeel 0:d6c40db60579 36 // low bit first - high bit last
VicOnCampusGeel 0:d6c40db60579 37 for (int i=1; (i < BLen+1); i++) { // i = 0 is de startpuls
VicOnCampusGeel 0:d6c40db60579 38 // i = 1 is bit 0 --- i = 32 bit 31
VicOnCampusGeel 0:d6c40db60579 39 if ((dt_Low[i]*2 - dt_High[i] )>0) {
VicOnCampusGeel 0:d6c40db60579 40 // digitale 0, niets bijtellen
VicOnCampusGeel 0:d6c40db60579 41 } else {
VicOnCampusGeel 0:d6c40db60579 42 // digitale 1 : flag die telkens 1 bit wordt geshift naar links bijtellen
VicOnCampusGeel 0:d6c40db60579 43 NEC_Code = NEC_Code +flag;
VicOnCampusGeel 0:d6c40db60579 44 }
VicOnCampusGeel 0:d6c40db60579 45 flag=(flag<<1); // flag is flag * 2
VicOnCampusGeel 0:d6c40db60579 46 }
VicOnCampusGeel 0:d6c40db60579 47 printf("\r\nGelezen Nec_code : %x\r\n",NEC_Code);
VicOnCampusGeel 0:d6c40db60579 48 printf("\r\n");
VicOnCampusGeel 0:d6c40db60579 49
VicOnCampusGeel 0:d6c40db60579 50 // printf ("Druk op een toets om deze pulstrein weg te schrijven naar een file op de mBED \n\r");
VicOnCampusGeel 0:d6c40db60579 51 // pc.getc(); // wacht op een toets ingedrukt in Terminal. Enkel voor debugging
VicOnCampusGeel 0:d6c40db60579 52 }
VicOnCampusGeel 0:d6c40db60579 53
VicOnCampusGeel 0:d6c40db60579 54 // test op de geldigheid van de ontvangen code
VicOnCampusGeel 0:d6c40db60579 55 // byte 0 MOET het inverse zijn van byte 1
VicOnCampusGeel 0:d6c40db60579 56 // en byte 3 MOET het inverse zijn van byte 4 om geldig te zijn
VicOnCampusGeel 0:d6c40db60579 57 byte[0]=((NEC_Code >>0) & 0xff);
VicOnCampusGeel 0:d6c40db60579 58 byte[1]=!((NEC_Code>>8) & 0xff); // invers moet gelijk zijn aan vorige byte
VicOnCampusGeel 0:d6c40db60579 59 byte[2]=((NEC_Code>>16) & 0xff);
VicOnCampusGeel 0:d6c40db60579 60 byte[3]=!((NEC_Code>>24) & 0xff);// invers moet gelijk zijn aan vorige byte
VicOnCampusGeel 0:d6c40db60579 61
VicOnCampusGeel 0:d6c40db60579 62 if (byte[0]& byte[1]) {
VicOnCampusGeel 0:d6c40db60579 63 printf("\r\nOngeldige fabrikantcode: %x ",NEC_Code);
VicOnCampusGeel 0:d6c40db60579 64 NEC_Code=0;
VicOnCampusGeel 0:d6c40db60579 65 }
VicOnCampusGeel 0:d6c40db60579 66 if (byte[2]& byte[3]) {
VicOnCampusGeel 0:d6c40db60579 67 printf("\r\nOngeldige toetscode: %x ",NEC_Code);
VicOnCampusGeel 0:d6c40db60579 68 NEC_Code=0;
VicOnCampusGeel 0:d6c40db60579 69
VicOnCampusGeel 0:d6c40db60579 70
VicOnCampusGeel 0:d6c40db60579 71 }
VicOnCampusGeel 0:d6c40db60579 72
VicOnCampusGeel 0:d6c40db60579 73 return (NEC_Code); // big endian formaat
VicOnCampusGeel 0:d6c40db60579 74 /*
VicOnCampusGeel 0:d6c40db60579 75 zowel de Sparkfun afstandsbediening als de Optoma projector
VicOnCampusGeel 0:d6c40db60579 76 zijn gecodeerd volgens de NEC_Code pulstreinen
VicOnCampusGeel 0:d6c40db60579 77 */
VicOnCampusGeel 0:d6c40db60579 78 }
VicOnCampusGeel 0:d6c40db60579 79
VicOnCampusGeel 0:d6c40db60579 80 //------------------------------------------------------------------------------