Sample of program breaking when a certain set of source files are in a folder, but is fine when it is in the root. In this case, it is tested with RF12B.cpp, RF12B.h and rfdefs

Dependencies:   mbed

Committer:
narshu
Date:
Sun Mar 25 13:39:11 2012 +0000
Revision:
0:349dc9b0984f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
narshu 0:349dc9b0984f 1
narshu 0:349dc9b0984f 2 #include "RFSRF05.h"
narshu 0:349dc9b0984f 3 #include "mbed.h"
narshu 0:349dc9b0984f 4
narshu 0:349dc9b0984f 5 RFSRF05::RFSRF05(PinName trigger,
narshu 0:349dc9b0984f 6 PinName echo0,
narshu 0:349dc9b0984f 7 PinName echo1,
narshu 0:349dc9b0984f 8 PinName echo2,
narshu 0:349dc9b0984f 9 PinName echo3,
narshu 0:349dc9b0984f 10 PinName echo4,
narshu 0:349dc9b0984f 11 PinName echo5,
narshu 0:349dc9b0984f 12 PinName SDI,
narshu 0:349dc9b0984f 13 PinName SDO,
narshu 0:349dc9b0984f 14 PinName SCK,
narshu 0:349dc9b0984f 15 PinName NCS,
narshu 0:349dc9b0984f 16 PinName NIRQ)
narshu 0:349dc9b0984f 17 : _rf(SDI,SDO,SCK,NCS,NIRQ),
narshu 0:349dc9b0984f 18 _trigger(trigger),
narshu 0:349dc9b0984f 19 _echo0(echo0),
narshu 0:349dc9b0984f 20 _echo1(echo1),
narshu 0:349dc9b0984f 21 _echo2(echo2),
narshu 0:349dc9b0984f 22 _echo3(echo3),
narshu 0:349dc9b0984f 23 _echo4(echo4),
narshu 0:349dc9b0984f 24 _echo5(echo5) {
narshu 0:349dc9b0984f 25
narshu 0:349dc9b0984f 26
narshu 0:349dc9b0984f 27 // initialises codes
narshu 0:349dc9b0984f 28 _code[0] = CODE0;
narshu 0:349dc9b0984f 29 _code[1] = CODE1;
narshu 0:349dc9b0984f 30 _code[2] = CODE2;
narshu 0:349dc9b0984f 31
narshu 0:349dc9b0984f 32 //set callback execute to true
narshu 0:349dc9b0984f 33 ValidPulse = false;
narshu 0:349dc9b0984f 34
narshu 0:349dc9b0984f 35 // Attach interrupts
narshu 0:349dc9b0984f 36
narshu 0:349dc9b0984f 37 _echo0.rise(this, &RFSRF05::_rising);
narshu 0:349dc9b0984f 38 _echo0.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 39 _echo1.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 40 _echo2.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 41 _echo3.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 42 _echo4.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 43 _echo5.fall(this, &RFSRF05::_falling);
narshu 0:349dc9b0984f 44
narshu 0:349dc9b0984f 45
narshu 0:349dc9b0984f 46 //init callabck function
narshu 0:349dc9b0984f 47 //callbackfunc = NULL;
narshu 0:349dc9b0984f 48 //callbackobj = NULL;
narshu 0:349dc9b0984f 49 //mcallbackfunc = NULL;
narshu 0:349dc9b0984f 50
narshu 0:349dc9b0984f 51 // innitialises beacon counter
narshu 0:349dc9b0984f 52 _beacon_counter = 0;
narshu 0:349dc9b0984f 53
narshu 0:349dc9b0984f 54 //Interrupts every 50ms
narshu 0:349dc9b0984f 55 //_ticker.attach(this, &RFSRF05::_startRange, 0.05);
narshu 0:349dc9b0984f 56 }
narshu 0:349dc9b0984f 57
narshu 0:349dc9b0984f 58 /*
narshu 0:349dc9b0984f 59 void RFSRF05::startRange() {
narshu 0:349dc9b0984f 60
narshu 0:349dc9b0984f 61 //printf("Srange\r\r");
narshu 0:349dc9b0984f 62
narshu 0:349dc9b0984f 63 // increments counter
narshu 0:349dc9b0984f 64 _beacon_counter = (_beacon_counter + 1) % 3;
narshu 0:349dc9b0984f 65
narshu 0:349dc9b0984f 66 // writes code to RF port
narshu 0:349dc9b0984f 67 _rf.write(_code[_beacon_counter]);
narshu 0:349dc9b0984f 68
narshu 0:349dc9b0984f 69 // send a trigger pulse, 10uS long
narshu 0:349dc9b0984f 70 ValidPulse = false;
narshu 0:349dc9b0984f 71
narshu 0:349dc9b0984f 72 _trigger = 1;
narshu 0:349dc9b0984f 73 wait_us (10);
narshu 0:349dc9b0984f 74 _trigger = 0;
narshu 0:349dc9b0984f 75 wait_us(50);
narshu 0:349dc9b0984f 76 }
narshu 0:349dc9b0984f 77 */
narshu 0:349dc9b0984f 78
narshu 0:349dc9b0984f 79 // Clear and start the timer at the begining of the echo pulse
narshu 0:349dc9b0984f 80 void RFSRF05::_rising(void) {
narshu 0:349dc9b0984f 81
narshu 0:349dc9b0984f 82 _timer.reset();
narshu 0:349dc9b0984f 83 _timer.start();
narshu 0:349dc9b0984f 84
narshu 0:349dc9b0984f 85 //Set callback execute to ture
narshu 0:349dc9b0984f 86 ValidPulse = true;
narshu 0:349dc9b0984f 87 }
narshu 0:349dc9b0984f 88
narshu 0:349dc9b0984f 89 // Stop and read the timer at the end of the pulse
narshu 0:349dc9b0984f 90 void RFSRF05::_falling(void) {
narshu 0:349dc9b0984f 91 _timer.stop();
narshu 0:349dc9b0984f 92
narshu 0:349dc9b0984f 93 if (ValidPulse) {
narshu 0:349dc9b0984f 94 //printf("Validpulse trig!\r\n");
narshu 0:349dc9b0984f 95 ValidPulse = false;
narshu 0:349dc9b0984f 96
narshu 0:349dc9b0984f 97 //Calucate distance
narshu 0:349dc9b0984f 98 _dist[_beacon_counter] = _timer.read_us()/2.9 + 300;
narshu 0:349dc9b0984f 99
narshu 0:349dc9b0984f 100 //if (callbackfunc)
narshu 0:349dc9b0984f 101 // (*callbackfunc)(_beacon_counter, _dist[_beacon_counter]);
narshu 0:349dc9b0984f 102
narshu 0:349dc9b0984f 103 //if (callbackobj && mcallbackfunc)
narshu 0:349dc9b0984f 104 // (callbackobj->*mcallbackfunc)(_beacon_counter, _dist[_beacon_counter]);
narshu 0:349dc9b0984f 105
narshu 0:349dc9b0984f 106 }
narshu 0:349dc9b0984f 107
narshu 0:349dc9b0984f 108 }
narshu 0:349dc9b0984f 109
narshu 0:349dc9b0984f 110 float RFSRF05::read0() {
narshu 0:349dc9b0984f 111 // returns distance
narshu 0:349dc9b0984f 112 return (_dist[0]);
narshu 0:349dc9b0984f 113 }
narshu 0:349dc9b0984f 114
narshu 0:349dc9b0984f 115 float RFSRF05::read1() {
narshu 0:349dc9b0984f 116 // returns distance
narshu 0:349dc9b0984f 117 return (_dist[1]);
narshu 0:349dc9b0984f 118 }
narshu 0:349dc9b0984f 119
narshu 0:349dc9b0984f 120 float RFSRF05::read2() {
narshu 0:349dc9b0984f 121 // returns distance
narshu 0:349dc9b0984f 122 return (_dist[2]);
narshu 0:349dc9b0984f 123 }
narshu 0:349dc9b0984f 124
narshu 0:349dc9b0984f 125 //SRF05::operator float() {
narshu 0:349dc9b0984f 126 // return read();
narshu 0:349dc9b0984f 127 //}