test

Dependencies:   HIDScope MODSERIAL mbed-dsp mbed

Fork of emg_filter2 by BMT M9 Groep01

Files at this revision

API Documentation at this revision

Comitter:
vsluiter
Date:
Wed Oct 01 12:25:06 2014 +0000
Parent:
20:f7d281e3112b
Child:
22:dc630dbb1dcd
Commit message:
Removed all code for serial data, moved Ticker to local scope

Changed in this revision

MODSERIAL.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp.orig Show diff for this revision Revisions of this file
--- a/MODSERIAL.lib	Mon Sep 29 13:08:57 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/Sissors/code/MODSERIAL/#180e968a751e
--- a/main.cpp	Mon Sep 29 13:08:57 2014 +0000
+++ b/main.cpp	Wed Oct 01 12:25:06 2014 +0000
@@ -1,13 +1,10 @@
 #include "mbed.h"
-#include "MODSERIAL.h"
 #include "HIDScope.h"
 
 #include "arm_math.h"
 
 //Define objects
 AnalogIn    emg0(PTB1); //Analog input
-Ticker log_timer;
-MODSERIAL pc(USBTX,USBRX);
 HIDScope scope(2);
 
 arm_biquad_casd_df1_inst_f32 lowpass;
@@ -59,7 +56,7 @@
 
 int main()
 {
-
+    Ticker log_timer;
    //set up filters. Use external array for constants
     arm_biquad_cascade_df1_init_f32(&lowpass,1 , lowpass_const, lowpass_states);
     arm_biquad_cascade_df1_init_f32(&highpass,1 ,highpass_const,highpass_states);
--- a/main.cpp.orig	Mon Sep 29 13:08:57 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-#include "mbed.h"
-#include "MODSERIAL.h"
-
-//Define objects
-AnalogIn    emg0(PTB1); //Analog input
-PwmOut      red(LED_RED); //PWM output
-Ticker log_timer;
-MODSERIAL pc(USBTX,USBRX);
-
-typedef struct second_order_constants
-{
-    float b[3];
-    float a[3];
-} second_order_constants_t;
-
-typedef struct second_order_values
-{
-    float x_1,x_2;
-    float y_1,y_2;
-} second_order_values_t;
-
-//constants
-second_order_constants_t highpass= {{0.97803048, -1.95606096,  0.97803048},{1, -1.95557824,  0.95654368}};
-//type for values
-second_order_values_t highpass_values;
-
-float second_order(float x, second_order_constants_t constants, second_order_values_t &values);
-
-
-/** Looper function
-* functions used for Ticker and Timeout should be of type void <name>(void)
-* i.e. no input arguments, no output arguments.
-* if you want to change a variable that you use in other places (for example in main)
-* you will have to make that variable global in order to be able to reach it both from
-* the function called at interrupt time, and in the main function.
-* To make a variable global, define it under the includes.
-* variables that are changed in the interrupt routine (written to) should be made
-* 'volatile' to let the compiler know that those values may change outside the current context.
-* i.e.: "volatile uint16_t emg_value;" instead of "uint16_t emg_value"
-* in the example below, the variable is not re-used in the main function, and is thus declared
-* local in the looper function only.
-**/
-void looper()
-{
-    /*variable to store value in*/    
-    uint16_t emg_value;
-    float filtered_emg;
-    /*put raw emg value both in red and in emg_value*/
-    red.write(emg0.read());      // read float value (0..1 = 0..3.3V)
-    emg_value = emg0.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V)
-    filtered_emg = second_order((float)emg_value,highpass, highpass_values);
-    /*send value to PC. Line below is used to prevent buffer overrun */
-    if(pc.rxBufferGetSize(0)-pc.rxBufferGetCount() > 30)
-        pc.printf("%u\t%f\n",emg_value, filtered_emg);
-    /**When not using the LED, the above could also have been done this way:
-    * pc.printf("%u\n", emg0.read_u16());
-    */
-}
-
-int main()
-{
-    /*setup baudrate. Choose the same in your program on PC side*/
-    pc.baud(115200);
-    /*set the period for the PWM to the red LED*/
-    red.period_ms(2);
-    /**Here you attach the 'void looper(void)' function to the Ticker object
-    * The looper() function will be called every 0.01 seconds.
-    * Please mind that the parentheses after looper are omitted when using attach.
-    */
-    log_timer.attach(looper, 0.01);
-    while(1) //Loop
-    {
-      /*Empty!*/
-      /*Everything is handled by the interrupt routine now!*/
-    }
-}
-
-float second_order(float x, second_order_constants_t constants, second_order_values_t &values)
-{
-    float y = 0;
-    float b_terms, a_terms;
-    b_terms = (constants.b[0]*x) + (constants.b[1]*values.x_1) + (constants.b[2]*values.x_2);
-    a_terms = (constants.a[1]*values.y_1) + (constants.a[2]*values.y_2);
-    y=(1./constants.a[0])* (b_terms-a_terms);
-    values.x_2 = values.x_1;
-    values.x_1 = x;
-    values.y_2 = values.y_1;
-    values.y_1 = y;
-    return y;
-}
\ No newline at end of file