Send IR data from SD card. I changed Chip Select signal timing.

Dependencies:   mbed

Committer:
halfpitch
Date:
Wed Jul 13 14:25:47 2011 +0000
Revision:
0:da2f4475a464
Child:
1:372b09a39fa4
RevA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
halfpitch 0:da2f4475a464 1 //////////////////////////////////////
halfpitch 0:da2f4475a464 2 // White Wizard Board (PAT.PEND) //
halfpitch 0:da2f4475a464 3 // Send IR data from microSD card. //
halfpitch 0:da2f4475a464 4 // //
halfpitch 0:da2f4475a464 5 // Nest Egg Inc. 2011/7/9 //
halfpitch 0:da2f4475a464 6 // //
halfpitch 0:da2f4475a464 7 //////////////////////////////////////
halfpitch 0:da2f4475a464 8 #include "mbed.h"
halfpitch 0:da2f4475a464 9 #include "SDFileSystem.h"
halfpitch 0:da2f4475a464 10
halfpitch 0:da2f4475a464 11 #define SDch 0x05
halfpitch 0:da2f4475a464 12 #define MAXdatanum 500
halfpitch 0:da2f4475a464 13 #define TimeLimit 3000
halfpitch 0:da2f4475a464 14 #define pul38khz 26
halfpitch 0:da2f4475a464 15 #define pul38k_ON 13
halfpitch 0:da2f4475a464 16 #define pul38k_OFF 26
halfpitch 0:da2f4475a464 17
halfpitch 0:da2f4475a464 18 //for ifdef
halfpitch 0:da2f4475a464 19 //#define TEST 1
halfpitch 0:da2f4475a464 20 //#define SEND 1
halfpitch 0:da2f4475a464 21 //#define SAVE 1
halfpitch 0:da2f4475a464 22
halfpitch 0:da2f4475a464 23 //prototype
halfpitch 0:da2f4475a464 24 void send_pulse(int, int);
halfpitch 0:da2f4475a464 25
halfpitch 0:da2f4475a464 26 SDFileSystem sd(p5, p6, p7, p8, "sd");
halfpitch 0:da2f4475a464 27
halfpitch 0:da2f4475a464 28 DigitalOut myled1(LED1);
halfpitch 0:da2f4475a464 29 DigitalOut myled2(LED2);
halfpitch 0:da2f4475a464 30 DigitalOut myled3(LED3);
halfpitch 0:da2f4475a464 31 DigitalOut myled4(LED4);
halfpitch 0:da2f4475a464 32
halfpitch 0:da2f4475a464 33 PwmOut Pulse_pin(p25);
halfpitch 0:da2f4475a464 34
halfpitch 0:da2f4475a464 35 int trigger = 0;
halfpitch 0:da2f4475a464 36 int saved = 0;
halfpitch 0:da2f4475a464 37
halfpitch 0:da2f4475a464 38 int main(){
halfpitch 0:da2f4475a464 39 int IRdata[MAXdatanum];
halfpitch 0:da2f4475a464 40 int pulsetime[MAXdatanum];
halfpitch 0:da2f4475a464 41 int j = 0;
halfpitch 0:da2f4475a464 42 int datanum = 0;
halfpitch 0:da2f4475a464 43
halfpitch 0:da2f4475a464 44 myled1 = 0;
halfpitch 0:da2f4475a464 45 myled2 = 0;
halfpitch 0:da2f4475a464 46 myled3 = 0;
halfpitch 0:da2f4475a464 47 myled4 = 0;
halfpitch 0:da2f4475a464 48
halfpitch 0:da2f4475a464 49 myled1 = 1;
halfpitch 0:da2f4475a464 50
halfpitch 0:da2f4475a464 51 sd.SetCh(SDch); //channel No 0101(=0x05), depend on your SPI module setting. (1:High 0:Low)
halfpitch 0:da2f4475a464 52 printf("again\n");
halfpitch 0:da2f4475a464 53 int pHL = 0;
halfpitch 0:da2f4475a464 54 int t = 0;
halfpitch 0:da2f4475a464 55 FILE *fp1 = fopen("/sd/IRdata.csv", "r");
halfpitch 0:da2f4475a464 56
halfpitch 0:da2f4475a464 57 datanum = 0;
halfpitch 0:da2f4475a464 58
halfpitch 0:da2f4475a464 59 fscanf(fp1, "%d\n",&datanum); //read from SD
halfpitch 0:da2f4475a464 60 printf("datanum, %d\n",datanum);
halfpitch 0:da2f4475a464 61 myled2 = 1;
halfpitch 0:da2f4475a464 62
halfpitch 0:da2f4475a464 63 Pulse_pin.period_us(pul38khz);
halfpitch 0:da2f4475a464 64
halfpitch 0:da2f4475a464 65 for(j=0;j<datanum;++j){
halfpitch 0:da2f4475a464 66 fscanf(fp1, "%d,%d,\n", &pHL, &t);
halfpitch 0:da2f4475a464 67 IRdata[j] = pHL;
halfpitch 0:da2f4475a464 68 pulsetime[j] = t;
halfpitch 0:da2f4475a464 69 }
halfpitch 0:da2f4475a464 70
halfpitch 0:da2f4475a464 71 myled3 = 1;
halfpitch 0:da2f4475a464 72
halfpitch 0:da2f4475a464 73 for(j=0;j<datanum;++j){
halfpitch 0:da2f4475a464 74 send_pulse(IRdata[j],pulsetime[j]);
halfpitch 0:da2f4475a464 75 }
halfpitch 0:da2f4475a464 76
halfpitch 0:da2f4475a464 77 Pulse_pin.pulsewidth(pul38k_OFF);
halfpitch 0:da2f4475a464 78 fclose(fp1);
halfpitch 0:da2f4475a464 79 myled4 = 1;
halfpitch 0:da2f4475a464 80 printf("close fp1\n");
halfpitch 0:da2f4475a464 81 }
halfpitch 0:da2f4475a464 82
halfpitch 0:da2f4475a464 83
halfpitch 0:da2f4475a464 84 void send_pulse(int pHL, int t){
halfpitch 0:da2f4475a464 85
halfpitch 0:da2f4475a464 86 int k = 0;
halfpitch 0:da2f4475a464 87
halfpitch 0:da2f4475a464 88 if(pHL == 0){
halfpitch 0:da2f4475a464 89 //38kHz pulse on
halfpitch 0:da2f4475a464 90 Pulse_pin.pulsewidth_us(pul38k_ON);
halfpitch 0:da2f4475a464 91
halfpitch 0:da2f4475a464 92 }else if(pHL == 1){
halfpitch 0:da2f4475a464 93 //38kHz pulse off
halfpitch 0:da2f4475a464 94 Pulse_pin.pulsewidth(pul38k_OFF);
halfpitch 0:da2f4475a464 95
halfpitch 0:da2f4475a464 96 }else{
halfpitch 0:da2f4475a464 97 Pulse_pin.pulsewidth(pul38k_OFF);
halfpitch 0:da2f4475a464 98 printf("\n\n-----Data format is incorrect!!-----\n pHL = %d, t = %d \n", pHL, t);
halfpitch 0:da2f4475a464 99
halfpitch 0:da2f4475a464 100 }
halfpitch 0:da2f4475a464 101 for(k = 0; k < t; ++k){
halfpitch 0:da2f4475a464 102 wait_us(50);
halfpitch 0:da2f4475a464 103 }
halfpitch 0:da2f4475a464 104 }
halfpitch 0:da2f4475a464 105