Part of the Pacemaker Project; this models the Pacemaker.

Dependencies:   mbed TextLCD mbed-rtos

PMTest.cpp

Committer:
lucastai
Date:
2015-11-30
Revision:
8:5924b2048a27
Child:
20:dc272bfaa276
Child:
22:365d51eb3783

File content as of revision 8:5924b2048a27:

#include "mbed.h"
#include "LPC17xx.h"
#include "TextLCD.h"
#include "rtos.h"
#include "Thread.h"

DigitalOut vsense(p23);
DigitalOut asense(p24);
DigitalIn apace(p22):
DigitalIn vpace(p21):

int timer_count;
int curr_test;

int[][] testfunc;

// hardware interrupt handler, adapted from code in piazza post by Dagaen
extern "C" void TIMER0_IRQHandler (void)
{
if((LPC_TIM0->IR & 0x01) == 0x01)   // if MR0 interrupt, proceed
    {
    LPC_TIM0->IR |= 1 << 0;         // Clear MR0 interrupt flag
    timer_count++;                  //increment timer_count
    }
}
 
// init the hardware interrupt (timer0), adapted same as above
void timer0_init(int n)
{
    LPC_SC->PCONP |=1<1;            //timer0 power on
    LPC_SC-> PCLKSEL0 |= 1 << 2;    // set timer clock to CCLCK nondivided (1 clock cycle = 1 increment)
    LPC_TIM0->MR0 = n;          //100mhz clock cycle, 1 cycle = 10ns, 10ms = 10 000 000 ns = 1M cycles
    LPC_TIM0->MCR = 3;              //interrupt and reset control
                                    //3 = Interrupt & reset timer0 on match (111) sets all three bits
    NVIC_EnableIRQ(TIMER0_IRQn);    //enable timer0 interrupt
}

// interrupt function
void interrupt_and_run_test(){
    // zero timer, set for 1ms interrupt
    timer0_init(100000)
    
    // wait for atrial pulse
    while(apace != 1}{}
    
    // check if timer was within event
    
    if(timer_count < testfunc[curr_test][0]){
        printf("ATRIAL PULSE FOR TEST " + curr_test + " WAS WITHIN BOUNDS\n");
    }
    
    // send vsense
    
    while(timer_count < testfunc[curr_test][1]){};
    vpace = 1;
    
    // send asense
    while(timer_count < testfunc[curr_test][2]){};
    apace = 1;
    
    // check if timer was in event

    // wait for vpace
    
    // wait for atrial pulse
    while(vpace != 1}{}
    
    // check if timer was within event
    
    if(timer_count < testfunc[curr_test][0]){
        printf("VENT PULSE FOR TEST " + curr_test + " WAS WITHIN BOUNDS\n");
    }