Motorola ONCE SC140 User Manual

Page 20

Advertising
background image

16

Using the SC140 Enhanced OnCE Stopwatch Timer

Code 9. Testing Code

#include <stdio.h>
#include "EOnCE_stopwatch.h"

#ifdef COMPILER_BETA_1_BUG
extern long ECNT_VAL;
#else
#include "EOnCE_registers.h"
#endif

void PLL_setup_300MHz()
{
asm("move.l #$80030003,PCTL0");
asm("move.l #$00010000,PCTL1");
}

void main(){
unsigned long clock_ext,clock_val,clock_cycle,cycle_req;
unsigned long time_sec;
extern unsigned long CLOCK_SPEED;

PLL_setup_300MHz();
EOnCE_stopwatch_timer_init(); /* Setup to event detector 1 for any write to
dummy variable. Setup EOnCE event counter
to count if event 1 happens */
EOnCE_LED_init(); /* Setup LED to toggle in detection of
event 1 */

cycle_req = CLOCK_SPEED*10; /* Calculate total clock cycles required
by 10 sec */
EOnCE_stopwatch_timer_start(); /* Event 1 happens, counter & LED on */

do {
READ_IOREG(ECNT_VAL,clock_cycle); /* Read bit 31-0 counter value */
clock_cycle = MAX_32_BIT - clock_cycle;/* Minus max value due to count down */
} while (clock_cycle <= cycle_req);

EOnCE_stopwatch_timer_stop(&clock_ext, &clock_val); /* Stop timer, return bit 63-0

counter value */

EOnCE_LED_off(); /* LED off */
time_sec = Convert_clock2time(clock_ext, clock_val, EONCE_SECOND);
printf("duration = %u sec\n", time_sec);

cycle_req = CLOCK_SPEED*7.5; /* Calculate total clock cycles required
by 7.5 sec */
EOnCE_stopwatch_timer_start(); /* Event 1 happens, counter & LED on */

do {
READ_IOREG(ECNT_VAL,clock_cycle); /* Read bit 31-0 counter value */
clock_cycle = MAX_32_BIT - clock_cycle;/* Minus max value due to count down */
} while (clock_cycle <= cycle_req);

EOnCE_stopwatch_timer_stop(&clock_ext, &clock_val); /* Stop timer, return bit 63-0

counter value */

EOnCE_LED_off(); /* LED off */
time_sec = Convert_clock2time(clock_ext, clock_val, EONCE_MILLISECOND);
printf("duration = %u ms\n", time_sec);

return;
}

Advertising