ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
45904
ivs (07.12.2005 05:20, просмотров: 2849)
Почему может вызываться prefetch abort? Программа работает в RAM У меня AT91SAM7S256 с кварцем 12МГц, компилятор IAR 4.30. Пример из IAR'а рассчитан на кварц 18,432, PLL работает на частоте ~96МГц, процессор на 48Мгц // 2 Checking the Main Oscillator Frequency (Optional) // 3 Setting PLL and divider: // - div by 5 Fin = 3,6864 =(18,432 / 5) // - Mul 25+1: Fout = 95,8464 =(3,6864 *26) // PLLCOUNT pll startup time estimate at : 0.844 ms // PLLCOUNT 28 = 0.000844 /(1/32768) pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x05) | (AT91C_CKGR_PLLCOUNT & (28<<8)) |(AT91C_CKGR_MUL & (25<<16))); ... ... pPMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2 Так вот с этими настройками все работает. Получается для кварца 12МГц частота PLL=62.4МГц, процессора 31.2МГц. Если я задаю делитель=0x04, множитель (31+1), при работе вызывается prefetch abort. Это нормальное явление или что-то неправильно? pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x04) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & (31<<16)));