Mercurial > ecos
changeset 2151:f8823d78712d
* cdl/hal_arm_at91sam7s.cdl: Change the crystal frequency. The
numbers printed on top of the crystal are misleading. It has a
18.432MHz crystal, not 20MHz. This error when combined with the
previous fix to the PLL made the serial baud rate wrong. Change
the multiplier and divisor to achieve about the same CPU clock,
which should be USB compatible.
* src/at91sam7s_misc.c (hal_at91_us_baud): Need the same PLL fix
when calculating the baud rate dynamically.
* include/plf_io.h: Add the Programmable Clock Output registers.
| author | asl |
|---|---|
| date | Wed, 01 Mar 2006 20:43:18 +0000 |
| parents | 3f92807e911d |
| children | a98455a6572f |
| files | packages/hal/arm/at91/at91sam7s/current/ChangeLog packages/hal/arm/at91/at91sam7s/current/cdl/hal_arm_at91sam7s.cdl packages/hal/arm/at91/at91sam7s/current/include/plf_io.h packages/hal/arm/at91/at91sam7s/current/src/at91sam7s_misc.c |
| diffstat | 4 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/arm/at91/at91sam7s/current/ChangeLog +++ b/packages/hal/arm/at91/at91sam7s/current/ChangeLog @@ -1,3 +1,15 @@ +2006-03-01 Andrew Lunn <andrew.lunn@ascom.ch> + + * cdl/hal_arm_at91sam7s.cdl: Change the crystal frequency. The + numbers printed on top of the crystal are misleading. It has a + 18.432MHz crystal, not 20MHz. This error when combined with the + previous fix to the PLL made the serial baud rate wrong. Change + the multiplier and divisor to achieve about the same CPU clock, + which should be USB compatible. + * src/at91sam7s_misc.c (hal_at91_us_baud): Need the same PLL fix + when calculating the baud rate dynamically. + * include/plf_io.h: Add the Programmable Clock Output registers. + 2006-02-28 Oliver Munz <munz@speag.ch> * include/hal_platform_setup.h: Fix the PLL multiplier settings
--- a/packages/hal/arm/at91/at91sam7s/current/cdl/hal_arm_at91sam7s.cdl +++ b/packages/hal/arm/at91/at91sam7s/current/cdl/hal_arm_at91sam7s.cdl @@ -151,7 +151,7 @@ cdl_package CYGPKG_HAL_ARM_AT91SAM7S { display "Main oscillator frequency" flavor data legal_values { 3000000 to 20000000} - default_value { 20000000 } + default_value { 18432000 } description " What frequency of crystal is clocking the device." } @@ -160,7 +160,7 @@ cdl_package CYGPKG_HAL_ARM_AT91SAM7S { display "Divider for PLL clock" flavor data legal_values { 0 to 255 } - default_value 5 + default_value 14 description " The X-tal clock is divided by this value when generating the PLL clock" @@ -170,7 +170,7 @@ cdl_package CYGPKG_HAL_ARM_AT91SAM7S { display "Multiplier for PLL clock" flavor data legal_values { 0 to 2047 } - default_value 24 + default_value 145 description " The X-tal clock is multiplied by this value when generating the PLL clock."
--- a/packages/hal/arm/at91/at91sam7s/current/include/plf_io.h +++ b/packages/hal/arm/at91/at91sam7s/current/include/plf_io.h @@ -124,6 +124,9 @@ extern cyg_uint32 hal_at91_us_baud(cyg_u #define AT91_PMC_MCKR_PRES_CLK_16 (4 << 2) // divide by 16 #define AT91_PMC_MCKR_PRES_CLK_32 (5 << 2) // divide by 32 #define AT91_PMC_MCKR_PRES_CLK_64 (6 << 2) // divide by 64 +#define AT91_PMC_PCKR0 0x40 // Programmable Clock Register 0 +#define AT91_PMC_PCKR1 0x44 // Programmable Clock Register 1 +#define AT91_PMC_PCKR2 0x48 // Programmable Clock Register 2 #define AT91_PMC_IER 0x60 // Interrupt Enable Register #define AT91_PMC_IDR 0x64 // Interrupt Disable Register #define AT91_PMC_SR 0x68 // Status Register
--- a/packages/hal/arm/at91/at91sam7s/current/src/at91sam7s_misc.c +++ b/packages/hal/arm/at91/at91sam7s/current/src/at91sam7s_misc.c @@ -166,7 +166,7 @@ hal_at91_us_baud(cyg_uint32 baud_rate) case AT91_PMC_MCKR_PLL_CLK: HAL_READ_UINT32((AT91_PMC+AT91_PMC_PLLR), pll); main_clock = CYGNUM_HAL_ARM_AT91_CLOCK_OSC_MAIN * - (((pll & 0x7FF0000) >> 16) - 1) / (pll & 0xFF); + (((pll & 0x7FF0000) >> 16) + 1) / (pll & 0xFF); break; }
