Read modify and generate PPM
Fork of PPM by
PPMIn.cpp@1:3649456c67ef, 2017-06-09 (annotated)
- Committer:
- edy05
- Date:
- Fri Jun 09 08:34:42 2017 +0000
- Revision:
- 1:3649456c67ef
PPM read class
Who changed what in which revision?
User | Revision | Line number | New 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 | } |