![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Part of the Pacemaker Project; this models the Pacemaker.
Dependencies: mbed TextLCD mbed-rtos
Diff: PacemakerController.cpp
- Revision:
- 33:b68c1648206e
- Parent:
- 32:c58b6651336c
- Child:
- 34:b4b50ca26e8c
- Child:
- 36:03704a3ec2e3
--- a/PacemakerController.cpp Wed Dec 02 02:23:26 2015 +0000 +++ b/PacemakerController.cpp Wed Dec 02 03:40:48 2015 +0000 @@ -39,8 +39,8 @@ // alarms DigitalOut led_apace(LED1); DigitalOut led_vpace(LED2); -DigitalOut Asense(LED3); -DigitalOut Vsense(LED4); +DigitalOut led_asense(LED3); +DigitalOut led_vsense(LED4); DigitalIn agetSignal(p24); DigitalIn vgetSignal(p23); @@ -53,16 +53,20 @@ void asense() { a_sense = 1; + led_asense = 1; lcd.printf("asense fired\n"); Thread::wait(10); + led_asense = 0; a_sense = 0; } void vsense() { v_sense = 1; + led_vsense = 1; lcd.printf("vssense fired\n"); Thread::wait(10); + led_vsense = 0; v_sense = 0; } @@ -73,6 +77,7 @@ apaceSignal = 1; led_apace = 1; Thread::wait(10); + led_apace = 0; apaceSignal = 0; } @@ -83,20 +88,21 @@ vpaceSignal = 1; led_vpace = 1; Thread::wait(10); + led_vpace = 0; vpaceSignal = 0; } // hardware interrupt handler, adapted from code in piazza post by Dagaen -extern "C" void TIMER0_IRQHandler (void) +/*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 +*/ +/*// init the hardware interrupt (timer0), adapted same as above void timer0_init(void) { LPC_SC->PCONP |=1<1; //timer0 power on @@ -105,7 +111,7 @@ 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 -} +}*/ void PM_ALARM(void const *args) @@ -137,44 +143,58 @@ //lcd.locate(0,1); //lcd.printf("in pmsense\n"); - t_count.stop(); + /*if (agetSignal == 0) { + pc.printf("Aget:LO\n"); + } + + if (vgetSignal == 0) { + pc.printf("Vget:LO\n"); + } + if (agetSignal == 1) { + pc.printf("Aget:HI\n"); + } + + if (vgetSignal == 1) { + pc.printf("Vget:HI\n"); + }*/ + - if (t_count.read() >= VRP && vgetSignal == 1) { + if (t_count.read_ms() >= VRP && vgetSignal == 1) { lcd.printf("valid v state\n"); pc.printf("valid v state\n"); //Thread::wait(2); // Valid_V state t_count.reset(); - t_count.start(); + //t_count.start(); vsense(); // do something with Vsense! - } else if (t_count.read() < VRP && vgetSignal == 1) { + } else if (t_count.read_ms() < VRP && vgetSignal == 1) { lcd.printf("invalid v state\n"); pc.printf("invalid v state\n"); - pc.printf("%d\n",t_count.read()); + //pc.printf("%d\n",t_count.read()); - t_count.start(); + //t_count.start(); //Thread::wait(2); // Invalid_V state } - if (t_count.read() < PVARP && agetSignal == 1) { + if (t_count.read_ms() < PVARP && agetSignal == 1) { // Invalid_A state lcd.printf("invalid a state\n"); pc.printf("invalid a state\n"); - pc.printf("%d\n",t_count.read()); - t_count.start(); + // pc.printf("%d\n",t_count.read()); + //t_count.start(); //Thread::wait(2); - } else if (t_count.read() >= PVARP && agetSignal == 1) { + } else if (t_count.read_ms() >= PVARP && agetSignal == 1) { // Valid_A state lcd.printf("valid a state\n"); pc.printf("valid a state\n"); //Thread::wait(2); - t_count.start(); + //t_count.start(); asense(); // do something with Asense! } @@ -186,13 +206,16 @@ { while(1) { //lcd.cls(); - //lcd.printf("in response\n"); + lcd.printf("in response\n"); + pc.printf("in response %d\n", t_count.read()); bool goInitalState = 1; - if (t_count.read() >= LRI-AVI) { + if (t_count.read_ms() >= LRI - AVI) { + //lcd.cls(); //lcd.printf("t_count.reasd() >= LRI-AVI\n"); goInitalState = 0; // PM_A! sets the LED high + pc.printf("in pmresponse"); led_apace = 1; // avi_clk = 0 @@ -200,7 +223,7 @@ apace(); // At Atrial Event State - while (avi_clk.read() < AVI) { + while (avi_clk.read_ms() < AVI) { //lcd.cls(); //lcd.printf("avi_clk.read() < AVI\n"); if (v_sense == 1) { @@ -216,9 +239,10 @@ led_vpace = 1; t_count.reset(); + pc.printf("in pmresponse 2"); vpace(); } - } else if (t_count.read() < LRI - AVI) { + } else if (t_count.read_ms() < LRI - AVI) { //lcd.cls(); //lcd.printf("t_count.read() < LRI - AVI\n"); // if Asense, move on to atrial event @@ -262,14 +286,21 @@ // Start the avi_clock avi_clk.start(); - t_count.start(); + avi_clk.reset(); Thread t1(pm_sense, (void *)""); Thread t2(pm_response, (void *)""); Thread t3(PM_ALARM, (void *)""); + t_count.start(); + t_count.reset(); + //pc.printf("PM CLOCK time isss %d\n",t_count.read_ms()); + // pc.printf("AVI CLK %d\n",avi_clk.read_ms()); char a = 'Z'; while(1) { + + + if (pc.readable()) { a = pc.getc();