Incorrect PIT value inititalization?
leonp at plris.com
Tue Oct 19 16:10:23 UTC 2004
We have some problem with the PIT initialization code for MPC860. As
resides in the common directory, we think that it is worth asking the
Our board has the 5MHz XTAL clock. The file
in function ClockOn the code that initializes the PIT value (see below)
seems to be incorrect in case of a slower XTAL (not 50MHz as mbx860 has),
yielding float values for clicks_per_usec.
For example a 5MHz XTAL divided by 4 produces a 1.25MHz frequency, which
means that clicks_per_usec = 1.25. When it is assigned to an unsigned32
member it is truncated to 1, and the resulting value is only a rough
estimate of the value actually desired.
pit_value = (rtems_configuration_get_microseconds_per_tick() *
rtems_cpu_configuration_get_clicks_per_usec()) - 1 ;
We suggest the following modification:
/* PIRTCLCK is XTAL / 4. XTAL is computed from the clock speed and
unsigned long pitrtclk = (Cpu_table.clock_speed / ((m8xx.plprcr >> 20) +
1)) >> 2;
pit_value = pitrtclk / 1000 * rtems_configuration_get_milliseconds_per_tick()
Do MPC8xx gurus agree?
More information about the users