ECG_ADS1198

Dependencies:   ADSlib mbed SDFileSystem

This was created for an internship project at IIT hyderabad.

main.cpp

Committer:
joelbandi
Date:
2015-05-01
Revision:
5:4bcb26d018f8
Parent:
4:dee470044b03

File content as of revision 5:4bcb26d018f8:

#include "mbed.h"
#include "ADSlib/ADSlib.h"
#include "SDFileSystem/SDFileSystem.h"

/***********************PROTOTYPING AND SETTINGS*********************/
DigitalOut CLKSEL(p8);
DigitalOut ADS1CS(p16);
DigitalOut ADS2CS(p17);
DigitalIn MULT_ADS(p18);
DigitalOut PWDN(p10);
DigitalOut RESETpin(p9);
DigitalOut STARTpin(p19);
DigitalOut waitled(LED1);
DigitalIn DRDY(p15);
SPI spi(p5,p6,p7);
SDFileSystem sd(p11,p12,p13,p14,"sd");
signed char Input_Data_Stream[];
uint16_t Input_modified[];
LocalFileSystem local("local");
/********************************************************************/

int main()                          // main call
{
    /********************POWER ON SEQUENCING *****************************/
    waitled =1;
    wait_ms(500);                   //boot up time

    ADS1CS=1;                       //deselect ADS1
    spi.format(8,3);                //spi setttings
    spi.frequency(1000000);         //spi settings

    CLKSEL = 1;                     //clock signal (internal) setup Frequency = 2.048 MHz
    ADS1CS= 0;
    spi.write(W_CONFIG1);
    spi.write(0x00);
    spi.write(0x64);
    ADS1CS =1;

    PWDN = 1;
    RESETpin = 1;
    wait(1);                        //Delay for Power-On Reset and Oscillator Start-Up

    ADS1CS= 0;                      // intial reset command for device reset and register setting clean up
    spi.write(RESET);
    pause_clk(18);


    spi.write(SDATAC);              // device boots up in RDATAC mode set it in SDATAC mode
    pause_clk(4);


    spi.write(W_CONFIG3);           // internal reference stup and enable
    spi.write(0x00);
    spi.write(0xC0);

    /***************POWER ON SEQUENCING COMPLETE**************************/


    /**************CHANNEL SETTINGS***************************************/
    spi.write(W_CHnSET);
    spi.write(0x07);
    spi.write((int)ADS_Default_Channel_Settings);
    ADS1CS = 1;
    /*********************************************************************/

    /*****************************CONVERSION BEGINS**********************/
    STARTpin= 1;

    //write main superloop and rdatac mode and enable dout conversion AND SETUP FILESTORAFGE
    Timer tensec;
    tensec.start();
    
    
    
    
    if (MULT_ADS = 0) {
        while(tensec.read()<=10) {
            spi.write(RDATAC);
            wait_ms(10);
            while(DRDY) {}
            ADS1CS= 0;
            for (int i=0; i<=18; i++) {
                Input_Data_Stream[i] = spi.write(0x00);
            }
            int k= 0;
            int j= 4;
            for(int i=3; i<=17; i++) {
                Input_modified[k]=Input_Data_Stream[i]<<8 + Input_Data_Stream[j];
                j++;
                k++;
            }
            Input_modified[8]=Input_modified[7]-Input_modified[6];
            Input_modified[9]=-(Input_modified[7]+Input_modified[6]/2);
            Input_modified[10]=((2*Input_modified[6])-Input_modified[7])/2;
            Input_modified[11]=((2*Input_modified[7])-Input_modified[6])/2;
            spi.write(SDATAC);

            /***********************FILE IO PROCEDURE ON LOCAL STORAGE******************/
            FILE* file = fopen("local/logfile.txt","w");
            for (int k =0; k<12; k++) {
                fputc(Input_modified[k],file);
            }
            //dont forget to
            //fclose(file);
            /***************************************************************************/


///////////////////////////OR///////////////////////////////////////////////////////////////////////


            /****************************SD I/O OPERATIONS *****************************/
            mkdir("sd/logfiledir",0777);
            FILE* file1 = fopen("sd/logfiledir/logfile.txt","w");
            for (int k =0; k<12; k++) {
                fputc(Input_modified[k],file1);
            }
            //dont forget to
            //fclose(file1);
            /***************************************************************************/
        }
    }
    
    
     if (MULT_ADS = 0) {
        while(tensec.read()<=10) {
            spi.write(RDATAC);
            wait_ms(10);
            while(DRDY) {}
            ADS1CS= 0;
            for (int i=0; i<=18; i++) {
                Input_Data_Stream[i] = spi.write(0x00);
            }
            int k= 0;
            int j= 4;
            for(int i=3; i<=17; i++) {
                Input_modified[k]=Input_Data_Stream[i]<<8 + Input_Data_Stream[j];
                j++;
                k++;
            }
            Input_modified[8]=Input_modified[7]-Input_modified[6];
            Input_modified[9]=-(Input_modified[7]+Input_modified[6]/2);
            Input_modified[10]=((2*Input_modified[6])-Input_modified[7])/2;
            Input_modified[11]=((2*Input_modified[7])-Input_modified[6])/2;
            spi.write(SDATAC);

            /***********************FILE IO PROCEDURE ON LOCAL STORAGE******************/
            FILE* file = fopen("local/logfile.txt","w");
            for (int k =0; k<12; k++) {
                fputc(Input_modified[k],file);
            }
            //dont forget to
            //fclose(file);
            /***************************************************************************/


///////////////////////////OR///////////////////////////////////////////////////////////////////////


            /****************************SD I/O OPERATIONS *****************************/
            mkdir("sd/logfiledir",0777);
            FILE* file1 = fopen("sd/logfiledir/logfile.txt","w");
            for (int k =0; k<12; k++) {
                fputc(Input_modified[k],file1);
            }
            //dont forget to
            //fclose(file1);
            /***************************************************************************/
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    tensec.stop();
    waitled =0;
}