manu jose
/
6hrmaster
B.3 : THE 6 HOUR PROGRAM WITH 1 PPS SIGNAL THE MASTER TO BE CONNECTED TO 11 PIN.
Revision 1:9efda6a3f83c, committed 2010-12-14
- Comitter:
- manujose
- Date:
- Tue Dec 14 23:26:02 2010 +0000
- Parent:
- 0:e6964ff1bbcc
- Commit message:
- hello
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
problemb1.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Dec 04 05:09:15 2010 +0000 +++ b/main.cpp Tue Dec 14 23:26:02 2010 +0000 @@ -18,6 +18,7 @@ static struct pt pt1,pt2,pt3; int main() { sync.baud(460800); + pc.baud(115200); wait(2); pc.printf("ENTERING MAIN JOBS\n"); @@ -29,13 +30,13 @@ // 1 PPS pps.tv_sec = 10; - pps.tv_usec = 500000; - ideal_trg_time[0].tv_sec = 10; - ideal_trg_time[0].tv_usec =500000; + pps.tv_usec = 700000; + //ideal_trg_time[0].tv_sec = 10; + //ideal_trg_time[0].tv_usec =700000; runAtTime(&pinToggle,&pps); - + myled = 1; //On any sync request from slave, respond to it sync.attach(&resp_sync_request); @@ -51,7 +52,7 @@ timeval rt; - runAtTrigger(&reportToggle); + //runAtTrigger(&reportToggle); char c;
--- a/problemb1.h Sat Dec 04 05:09:15 2010 +0000 +++ b/problemb1.h Tue Dec 14 23:26:02 2010 +0000 @@ -5,7 +5,7 @@ #include "pt-sem.h" #include "decl.h" #include "pqueue.h" - +void pinToggle(void); pQueue globalQ; unsigned int gTime =0; int B; @@ -33,8 +33,8 @@ // Select PIN LPC_PINCON->PINSEL0 |= (0xf << 8); - LPC_TIM2->CCR |= 0x07;// doing capture register for now, so use timer 2 - + //LPC_TIM2->CCR |= 0x07;// doing capture register for now, so use timer 2 + LPC_TIM2->CCR |= 0x05; LPC_TIM2->MR0 = RESET_42; LPC_TIM2->MCR = 3; // Interrupt, Stop, and Reset on match @@ -74,45 +74,48 @@ void Timer0_IRQHandler(void) { // LPC_TIM0->IR=0xff; //LPC_TIM0->MR0 = 0x5370; + // pc.printf(" THE INTERERUPT\n"); if (LPC_TIM2->IR&1) { gTime++; // pc.printf("\ngtime = %X",LPC_TIM2->IR); } if ( (LPC_TIM2->IR >> 1)&1 ){ //RUN THE RUNAT TIME HIT - qEle *ele = pop(&globalQ); + // M qEle *ele = pop(&globalQ); - - ele->foo(); - - free(ele); + // pc.printf("RUN AT TIME TRIGGERED\n"); + //M ele->foo(); + pinToggle(); + //M globalQ.head->foo(); + // M free(ele); } if( (LPC_TIM2->IR >> 4 )& 1){ // run report toggle timeval curT; unsigned int nMSec = (LPC_TIM2->CR0)/CLK_FRQ; + // pc.printf(" THE SEC = %d \n",nMSec); unsigned int nSec = nMSec/1000000; curT.tv_sec = gTime*42 + nSec; curT.tv_usec = nMSec-(nSec*1000000); gtrigFunc(&curT); } - + //check if more ele for schedule this time ? - if ((globalQ.numEle >0) && (globalQ.head->sched ==0)&& (globalQ.head->t.tv_sec <((gTime+1)*42))) { - globalQ.head->sched = 1; + //M if ((globalQ.numEle >0) && (globalQ.head->sched ==0)&& (globalQ.head->t.tv_sec <((gTime+1)*42))) { + //M globalQ.head->sched = 1; // LPC_TIM0->MR1 = (globalQ.head->t.tv_sec-gTime*42)*96000000 +globalQ.head->t.tv_usec*96; - LPC_TIM2->MR1 = (globalQ.head->t.tv_sec-gTime*42)*CLK_FREQUENCY +globalQ.head->t.tv_usec*CLK_FRQ; - LPC_TIM2->MCR |= 8; - pc.printf("\n MR1 = %X",LPC_TIM2->MR1); + //M LPC_TIM2->MR1 = (globalQ.head->t.tv_sec-gTime*42)*CLK_FREQUENCY +globalQ.head->t.tv_usec*CLK_FRQ; + //M LPC_TIM2->MCR |= 8; + // pc.printf("\n MR1 = %X",LPC_TIM2->MR1); - } else if (globalQ.head->sched == 0) //NO events in this gTime update yet . - { //turn off the match regiester 1 interrupts. - LPC_TIM2->MCR &= 3; - } + //M } else if (globalQ.head->sched == 0) //NO events in this gTime update yet . + //M { //turn off the match regiester 1 interrupts. + //M LPC_TIM2->MCR &= 3; + //M} - timeval t; - getTime(&t); + // timeval t; +// getTime(&t); LPC_TIM2->IR = 0xff; // pc.printf("INCREMENTING COUNTER or event %d \n",t.tv_sec); } @@ -142,19 +145,28 @@ } return 0; } +int x =0; int runAtTime(void (*schedFunc)(void), timeval *tv) { int ret =0; - ret = enqueue(&globalQ, *tv, schedFunc); + if(!x) + { + x=1; + ret = enqueue(&globalQ, *tv, schedFunc); + } + // pc.printf("The sec = %d and pps = %d\n",tv->tv_sec, tv->tv_usec); + globalQ.head->t.tv_sec = tv->tv_sec; + globalQ.head->t.tv_usec = tv->tv_usec; if (tv->tv_sec < (gTime+1)*42) { - if (globalQ.head->sched == 0) { - + // if (globalQ.head->sched == 0) { + LPC_TIM2->MR1 = ((globalQ.head->t.tv_sec%42 )*CLK_FREQUENCY+(globalQ.head->t.tv_usec*CLK_FRQ)); globalQ.head->sched = 1; + // pc.printf("SCHEUDLIN MR1 =%X and TC = %X\n",LPC_TIM2->MR1,LPC_TIM2->TC); LPC_TIM2->MCR |= 8; - } + // } } - return ret; + return 1; } void trigEX(timeval *tv) { pc.printf(" Triggered at %d\n",tv->tv_sec); @@ -164,7 +176,8 @@ unsigned int nMSec = (LPC_TIM2->CR0)/CLK_FRQ; unsigned int nSec = nMSec/1000000; curT.tv_sec = gTime*42 + nSec; - curT.tv_usec = nMSec-(nSec*1000000); + curT.tv_usec = nMSec-(nSec*1000000); + // pc.printf("nMsec and nSec = %d \n",nMSec); gtrigFunc(&curT); } void runAtTrigger(void(*trigFunc)(timeval *tv)) { @@ -210,9 +223,20 @@ void pinToggle(void) { toggle = !toggle; - pc.putc('T'); - pps.tv_sec++; - runAtTime(&pinToggle,&pps); + myled =!myled; + // pc.putc('T'); + pps.tv_usec+=500000; + if(pps.tv_usec == 1200000) + { + pps.tv_usec = 200000; + pps.tv_sec++; + } + + LPC_TIM2->MR1 = (pps.tv_sec%42 )*CLK_FREQUENCY+(pps.tv_usec*CLK_FRQ); + + // pc.printf("SCHEUDLIN MR1 =%X and TC = %X\n",LPC_TIM2->MR1,LPC_TIM2->TC); + LPC_TIM2->MCR |= 8; + //M runAtTime(&pinToggle,&pps); } @@ -229,14 +253,16 @@ // slv_diff = (rt->tv_sec - ideal_trg_time[ideal_trg_time_index].tv_sec)*1000000 + // rt->tv_usec - ideal_trg_time[ideal_trg_time_index].tv_usec; - // pc.printf("\n %d %d %d %d ", rt->tv_sec, rt->tv_usec, ideal_trg_time[ideal_trg_time_index].tv_sec, \ +// pc.printf("\n %d %d \n", rt->tv_sec, rt->tv_usec); // ideal_trg_time[ideal_trg_time_index].tv_usec); - ideal_trg_time_index++; + // ideal_trg_time_index++; //1 pps part. -slv_diff = rt->tv_usec -ideal_trg_time[0].tv_usec; + +slv_diff = rt->tv_usec - pps.tv_usec; + //ideal_trg_time[0].tv_sec++ ; -ideal_trg_time_index--; +//ideal_trg_time_index--; pc.printf("%\n diff = %d",slv_diff);