Hi everyone, I have made a function that does the follwing
-
Wait until button 1 pressed
-
When button 1 pressed start timing
-
Wait until button 1 pressed again
-
When B1 pressed again, record time between B1 press 1 and B1 press2
5.Continue timing
6, When B1 pressed again record time bewteen B1 press 2 and B1 press 3
Its so that I can calculate the acceleration of an object, the code is below that does this. But i think it could be more accurate with interupts, could anyone show me how it would be done more accurately?
Thanks
int timing()
{
while (PINC&(1<<PC5)) // loop here until first button press
;
_delay_ms(10); // delay for 10 ms to debounce the press
while (!(PINC&(1<<PC5))) // loop here until button is released
;
_delay_ms(10); // delay for 10 ms to debounce button release
time_ms1 = 0; // here is where we start timing
time_ms2 = 0;
TCNT1 = 0;
while (PINC&(1<<PC5)) // loop here until second button press
{
// while waiting for button press, keep track of elapsed time
// if system clock is 1 MHz, 1000 TCNT1 ticks = 1 ms
// if system clock is 8 MHz, 8000 TCNT1 ticks = 1 ms
if (TCNT1 >= 1000)
{
time_ms1++;
TCNT1 = 10;
}
}
while (!(PINC&(1<<PC5))) // loop here until button is released
;
_delay_ms(10); // delay for 10 ms to debounce button release
TCNT1 = 10;
while (PINC&(1<<PC5)) // loop here until 3rd button press
{
// while waiting for button press, keep track of elapsed time
// if system clock is 1 MHz, 1000 TCNT1 ticks = 1 ms
// if system clock is 8 MHz, 8000 TCNT1 ticks = 1 ms
if (TCNT1 >= 1000)
{
time_ms2++;
TCNT1 = 10;
}
}
lcd_line1();// display the times
lcd_time(time_ms1);
lcd_line2();
lcd_time(time_ms2);
}