Counting Code

The first thing we had to do was define our variables. We put them in as global. The code has pretty good coments which would make it easier to follow. We then wanted to achieve a time period in between the states so that way if a person never successfully enters into the place than another person will not trip the counter as having two people going in. So the person now has about five seconds to get into the place, but if a person does not than the timer will reset the states and the timer.

The ideal logic diagram.
Better counting code logic

 int count_out=0; // this is our count of people going out
 int total;       // keeps track of the total people walking in and out
 int count_in=0;  // this is our count of people going in
 int k=0;         // keeping track of states going in
 int j=0;         // keeping track of states going out
 int total_in=0;  // this is the total amount of people in the place
 int Jcount=0;    // keep track of out time count
 int Kcount=0;    // keep track of in time count
 int limit=65535; // max limit for timer
 int jcnt=0;      // keep track of time for interval between out trips
 int kcnt=0;      // keep track of time for interval between in trips
 int cntLimit=5;  // keep track of amount of time its allowed to go through the

This is our actual counting code. This code was put into the for loop that normally is inserted into the program during the start up of a new FreeScale code warrior project file.

for(;;){   
 
     if(kcnt==cntLimit){ // if time takes to long going in the place, will reset states and counting time
      k=0; // state count of the entrance goes to 0
      Kcount=0; //in time count reset
      kcnt=0;   //between the trips time reset
     }
     if(jcnt==cntLimit) {// if time takes to long going out the place, will reset states and counting time
      j=0;  // state count of the exit goes to 0
      Jcount=0; //out time count reset
      jcnt=0;   //between the trips time reset
     }
 
     if(k==0&&PTAD_PTAD3==1){ // did person go into the first trip
          k=1;  // in state 1 was entered
     } else if(k==1&&PTAD_PTAD5==1){ // did person go into the second trip
          k=2; // in state 2 was entered
     } else if(k==2&&PTAD_PTAD7==1){ // did the person go in all the way
          k=0; //person in reset trip in
          count_in+=1;   // add to the number of people who are in the place
     } 
     if(j==0&&PTAD_PTAD7==1){ // is the person starting to go out
          j=1; // out state 1 was exited
     } else if(j==1&&PTAD_PTAD5==1){ // the person is almost out
          j=2; // out state 2 was exited
     } else if(j==2&&PTAD_PTAD3==1){ // the person had left
          j=0; //person out reset
          count_out+=1;  // add to the number of people who had left
     } 
 
    total = count_in - count_out; // now how many people are in the place
 
    if((total)<0){ // we do not want negative numbers or do we (people sneeking in our stuff should stop that though)
    total_in=0; // reset to 0 if there is a negative number
    } else{total_in=total;} // what is our actual total of people in the place
 
    if(Jcount==limit){ // does the out time count match limit
      jcnt++;   // keep timing
      Jcount=0; // reset out time count
    } else if(j!=0) { // at an out state 
      Jcount++; // keep timing
    }
 
    if(Kcount==limit){ // does the in time count match limit
      kcnt++;   // keep timing
      Kcount=0; // reset in time count
    }else if(k!=0){ // at an in state
      Kcount++; // keep timing
    } 
 
    __RESET_WATCHDOG(); 
  }
 
Back to top
users/earmuffs/blog/counting_code.txt · Last modified: 2010/02/03 17:15 by earmuffs
 
 
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0