teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
Diff: IRPack.cpp
- Revision:
- 20:da1b8d80ba00
- Parent:
- 7:ae9c47f62946
- Child:
- 21:b9315cdd9275
--- a/IRPack.cpp Sat Jan 27 22:34:14 2018 +0000 +++ b/IRPack.cpp Mon Jan 29 14:22:38 2018 +0000 @@ -23,16 +23,20 @@ } uint16_t pulseDuration_us(bool high,DigitalIn pin,unsigned long int timeout){ - unsigned long int duration; - IrTmr.reset(); - IrTmr.start(); - + //unsigned long int durationBefore, duration; + unsigned long int duration; + //IrTmr.reset(); + //IrTmr.start(); + + //durationBefore = us_ticker_read(); + duration=0; do{ - duration = IrTmr.read_us(); + duration++; + wait_us(1); }while((duration < timeout) && (pin==high)); - IrTmr.stop(); + //IrTmr.stop(); if(duration < timeout){ return duration; } @@ -50,8 +54,10 @@ float sd4Duty = SD4.read(); float sd5Duty = SD5.read(); float sd6Duty = SD6.read(); + unsigned long int duration; float frequencia = freq*1000.0; float periodo = 1000000.0/frequencia; + PwmOut *SD; switch(port){ case 0: @@ -92,12 +98,30 @@ if(startBitAlto!=65535){wait_us(startBitAlto);} SD->write(0.0); if(startBitBaixo!=65535){wait_us(startBitBaixo);}*/ + + /*for(i=0;i<indexIr;i++){ + SD->write(0.5); + if(bitAlto[i]!=65535){ + duration = us_ticker_read(); + while((us_ticker_read()-duration)<bits[i][0]); + } + SD->write(0.0); + if(bitBaixo[i]!=65535){ + duration = us_ticker_read(); + while((us_ticker_read()-duration)<bits[i][1]); + } + }*/ + for(i=0;i<indexIr;i++){ SD->write(0.5); - if(bitAlto[i]!=65535){wait_us(bits[i][0]);} + if(bitAlto[i]!=65535){ + wait_us(bits[i][0]); + } SD->write(0.0); - if(bitBaixo[i]!=65535){wait_us(bits[i][1]);} - } + if(bitBaixo[i]!=65535){ + wait_us(bits[i][1]); + } + } pc.printf("Finalizado o envio IR.\r\n"); SD1.period_us(pwmPeriod); @@ -198,7 +222,7 @@ if((irInAntes!=IrIn) && (!IrIn)){ bits[0][0] = pulseDuration_us(0,IrIn,10000); bits[0][1] = pulseDuration_us(1,IrIn,10000); - if((bits[0][0]>1000)&&(bits[0][1]>1000)){ + if((bits[0][0]>100)&&(bits[0][1]>100)){ indexIr = 1; do{ bits[indexIr][0] = pulseDuration_us(0,IrIn,10000);