by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"
Revision 0:581963db97d8, committed 2013-06-16
- Comitter:
- robt
- Date:
- Sun Jun 16 15:19:06 2013 +0000
- Commit message:
- by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 581963db97d8 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jun 16 15:19:06 2013 +0000 @@ -0,0 +1,36 @@ +/* Program Example 11.3 Delay / Echo Effect + */ +#include "mbed.h" +AnalogIn Ain(p15); //object definitions +AnalogOut Aout(p18); +AnalogIn delay_pot(p16); +AnalogIn feedback_pot(p17); +Ticker s20khz_tick; +void s20khz_task(void); // function prototypes +#define MAX_BUFFER 14000 // max data samples +signed short data_in; // signed allows positive and negative +unsigned short data_out; // unsigned just allows positive values +float delay=0; +float feedback=0; +signed short buffer[MAX_BUFFER]={0}; // define buffer and set values to 0 +int i=0; + +//main program start here +int main() { + s20khz_tick.attach_us(&s20khz_task,50); +} +// function 20khz_task +void s20khz_task(void){ + data_in=Ain.read_u16()-0x7FFF; // read data and normalise + buffer[i]=data_in+(buffer[i]*feedback); // add data to buffer data + data_out=buffer[i]+0x7FFF; // output buffer data value + Aout.write_u16(data_out); // write output + if (i>(delay)){ // if delay loop has completed + i=0; // reset counter + delay=delay_pot*MAX_BUFFER; // calculate new delay buffer size + feedback=(1-feedback_pot)*0.9; // calculate feedback gain value + }else{ + i=i+1; // otherwise increment delay counter + } +} +
diff -r 000000000000 -r 581963db97d8 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Jun 16 15:19:06 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/b3110cd2dd17 \ No newline at end of file