AlexBoy 0 20 июля, 2007 Опубликовано 20 июля, 2007 · Жалоба Сделал плату на SAM7S256, при запуске MainClock входит в вечный цикл. Вот этот фрагмент: // --------------------------------- // Включаем главный генератор pmc->PMC_MOR = (AT91C_CKGR_OSCOUNT & (0xFF <<8)) | AT91C_CKGR_MOSCEN; while(!(pmc->PMC_SR & AT91C_PMC_MOSCS)); Задержку на всякий случай поставил максимальную. Что это? Не исправен кварц или номиналы неправильные в PLL? Или PLL не влияет на запуск кварца? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IV_K 0 20 июля, 2007 Опубликовано 20 июля, 2007 · Жалоба номиналы pll влияют на pll, смотрите на кварц, есть ли генерация.. кондеры какие стоят? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexBoy 0 21 июля, 2007 Опубликовано 21 июля, 2007 · Жалоба номиналы pll влияют на pll, смотрите на кварц, есть ли генерация.. кондеры какие стоят? Кварц сразу ж не запускается, только после включения, посмотреть нечем. кондеры по 10пф. Наверно кварц неиспавен. Попробую поменять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 21 июля, 2007 Опубликовано 21 июля, 2007 · Жалоба Наверно кварц неиспавен.Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexBoy 0 23 июля, 2007 Опубликовано 23 июля, 2007 · Жалоба Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит) частота 18,342Mhz, резистор не нужен. К тому же эта схема у меня работала на SAM7X256. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amw 0 23 июля, 2007 Опубликовано 23 июля, 2007 · Жалоба Что-то размер кода маловат :). Я включаю так: (кварц 18.432 PLL 96 MCK=48 для USB) @-------------------------------------------------------- @ Power Mangement Controller (PMC) definitions .equ PMC_BASE, 0xFFFFFC00 @ PMC Base Address .equ PMC_SCER, 0x00 @ PMC SCER Offset .equ PMC_SCDR, 0x04 @ PMC SCDR Offset .equ PMC_MOR, 0x20 @ PMC_MOR Offset .equ PMC_MCFR, 0x24 @ PMC_MCFR Offset .equ PMC_PLLR, 0x2C @ PMC_PLLR Offset .equ PMC_MCKR, 0x30 @ PMC_MCKR Offset .equ PMC_SR, 0x68 @ PMC_SR Offset .equ PMC_PCK0, 0x40 @ Programmable Clock 0 @ MOR Bits .equ PMC_MOSCEN, (1 << 0) @ Main Oscillator Enable .equ PMC_OSCBYPASS, (1 << 1) @ Main Oscillator Bypass .equ PMC_OSCOUNT, (0xFF << 8) @ Main OScillator Start-up Time @ PLLR Bits .equ PMC_DIV, (0x18 << 0) @ PLL Divider .equ PMC_PLLCOUNT, (0x3F << 8) @ PLL Lock Counter .equ PMC_OUT, (0x00 << 14) @ PLL Clock Frequency Range .equ PMC_MUL, (0x7C << 16) @ PLL Multiplier .equ PMC_USBDIV, (0x01 << 28) @ USB Clock Divider @ MCKR Bits .equ PMC_CSS, (3 << 0) @ Clock Source Selection .equ PMC_PRES, (1 << 2) @ Prescaler Selection @ SR Bits .equ PMC_MOSCS, (1 << 0) @ Main Oscillator Stable .equ PMC_LOCK, (1 << 2) @ PLL Lock Status .equ PMC_MCKRDY, (1 << 3) @ Master clock ready .equ PMC_PCKRDY0, (1 << 8) @ Programmable Clock 0 ready @ Registers' values .equ PMC_MOR_Val, (PMC_OSCOUNT | PMC_MOSCEN) .equ PMC_PLLR_Val, (PMC_USBDIV | PMC_MUL | PMC_OUT | PMC_PLLCOUNT | PMC_DIV) .equ PMC_MCKR_Val, (PMC_PRES | PMC_CSS) @-------------------------------------------------------- @ PMC - OSC & PLL _pmc_init: ldr r0, =PMC_BASE ldr r1, =PMC_MOR_Val str r1, [r0, #PMC_MOR] @ switch to MAIN OSC _pmc_wait_main: ldr r2, [r0, #PMC_SR] ands r2, r2, #PMC_MOSCS beq _pmc_wait_main ldr r1, =PMC_PLLR_Val str r1, [r0, #PMC_PLLR] _pmc_wait_pll: ldr r2, [r0, #PMC_SR] ands r2, r2, #PMC_LOCK beq _pmc_wait_pll ldr r1, =PMC_PRES str r1, [r0, #PMC_MCKR] _pmc_wait_pres: ldr r2, [r0, #PMC_SR] ands r2, r2, #PMC_MCKRDY beq _pmc_wait_pres ldr r1, =PMC_MCKR_Val str r1, [r0, #PMC_MCKR] _pmc_wait_css: ldr r2, [r0, #PMC_SR] ands r2, r2, #PMC_MCKRDY beq _pmc_wait_css _pmc_init_end: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться