Read modify and generate PPM

Dependents:   pwm-output

Fork of PPM by good god

Committer:
edy05
Date:
Fri Jun 09 08:34:42 2017 +0000
Revision:
1:3649456c67ef
PPM read class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edy05 1:3649456c67ef 1 #include "mbed.h"
edy05 1:3649456c67ef 2 #include "PPMIn.h"
edy05 1:3649456c67ef 3
edy05 1:3649456c67ef 4 PpmIn::PpmIn(PinName pin): ppm(pin), pc_com(USBTX, USBRX)
edy05 1:3649456c67ef 5 {
edy05 1:3649456c67ef 6 pc_com.printf("Constructor say hi!");
edy05 1:3649456c67ef 7 current_channel = 0;
edy05 1:3649456c67ef 8 state = false;
edy05 1:3649456c67ef 9 timer.start();
edy05 1:3649456c67ef 10 ppm.rise(this, &PpmIn::rise);
edy05 1:3649456c67ef 11
edy05 1:3649456c67ef 12 }
edy05 1:3649456c67ef 13
edy05 1:3649456c67ef 14 uint16_t* PpmIn::getPpm()
edy05 1:3649456c67ef 15 {
edy05 1:3649456c67ef 16 uint16_t* p_out[CHANNELS+2];
edy05 1:3649456c67ef 17 *p_out = &channels[0];
edy05 1:3649456c67ef 18 return *p_out;
edy05 1:3649456c67ef 19
edy05 1:3649456c67ef 20 }
edy05 1:3649456c67ef 21
edy05 1:3649456c67ef 22 void PpmIn::rise()
edy05 1:3649456c67ef 23 {
edy05 1:3649456c67ef 24 uint16_t time = timer.read_us();
edy05 1:3649456c67ef 25
edy05 1:3649456c67ef 26 //pc_com.printf("Rise say hi!");
edy05 1:3649456c67ef 27 // we are in synchro zone
edy05 1:3649456c67ef 28 if(time > 2500)
edy05 1:3649456c67ef 29 {
edy05 1:3649456c67ef 30 current_channel = 0;
edy05 1:3649456c67ef 31 // return values
edy05 1:3649456c67ef 32 state = true;
edy05 1:3649456c67ef 33 }
edy05 1:3649456c67ef 34 else
edy05 1:3649456c67ef 35 {
edy05 1:3649456c67ef 36 channels[current_channel] = timer.read_us();
edy05 1:3649456c67ef 37 current_channel += 1;
edy05 1:3649456c67ef 38 }
edy05 1:3649456c67ef 39
edy05 1:3649456c67ef 40 timer.reset();
edy05 1:3649456c67ef 41
edy05 1:3649456c67ef 42 //if (current_channel > (CHANNELS + 2 - 1)); //+frame and - 1 indexing of channels list
edy05 1:3649456c67ef 43 }