Normal CS setting, send IR data from SD card module.

Dependencies:   mbed

Committer:
halfpitch
Date:
Sat Sep 03 17:10:24 2011 +0000
Revision:
0:011aabf9f436
Rev.A

Who changed what in which revision?

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