#include #include #define SS_ADXL 6 //slave select for adxl372 #define SPI_SPEED 10000000 //10MHz top speed for SCLK #define debug 0 //if serial connection for debug #include "adxl372.h" #define adxl_int1_pin 19 #define adxl_int2_pin 15 #define samples_after_trigger 4000 #define samples_total 6000 #define frequency_debug_pin 11 #define VBATPIN A7 File logfile; //define a log file #define cardSelect 4 //slave select for micro sd card #include "sd_utils.h" #define LED_RED 13 #define LED_GRN 8 int16_t z_accel[samples_total]; int8_t dt[samples_total]; uint32_t this_time, last_time; uint32_t pointer = 0; uint32_t data_start = 0; void setup() { if(debug){ Serial.begin(115200); while (!Serial) {} //wait for serial connection Serial.println("\r\nADXL372 logger"); } pinMode(SS_ADXL, OUTPUT); digitalWrite(SS_ADXL, HIGH); //unselect adxl, must do before talking to sd card pinMode(adxl_int1_pin, INPUT); //impact detection pinMode(adxl_int2_pin, INPUT); //data ready pinMode(LED_RED,OUTPUT); pinMode(LED_GRN,OUTPUT); digitalWrite(LED_RED,LOW); digitalWrite(LED_GRN,LOW); SPI.begin(); //this gives about 100kHz sampling rate on z data. //I couldn't get this to take my user defined clock speed for some reason... if (!init_sd_card()){ while(1){ delay(100); digitalWrite(LED_GRN,LOW); delay(100); digitalWrite(LED_GRN,HIGH); } } if (!init_adxl372()){ while(1){ delay(100); digitalWrite(LED_RED,LOW); delay(100); digitalWrite(LED_RED,HIGH); } } //if debug, simply report values if (debug){ while(1){ float average = 0; for(int i=0; i> 4; this_time = micros(); dt[pointer] = this_time-last_time; last_time = this_time; digitalWrite(SS_ADXL, HIGH); }