Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM7S256 не запускается MainClock
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlexBoy
Сделал плату на SAM7S256, при запуске MainClock входит в вечный цикл. Вот этот фрагмент:
Код
    // ---------------------------------
    // Включаем главный генератор
    pmc->PMC_MOR = (AT91C_CKGR_OSCOUNT & (0xFF <<8)) | AT91C_CKGR_MOSCEN;
    while(!(pmc->PMC_SR & AT91C_PMC_MOSCS));

Задержку на всякий случай поставил максимальную.
Что это? Не исправен кварц или номиналы неправильные в PLL? Или PLL не влияет на запуск кварца?
IV_K
номиналы pll влияют на pll, смотрите на кварц, есть ли генерация.. кондеры какие стоят?
AlexBoy
Цитата(IV_K @ Jul 20 2007, 11:52) *
номиналы pll влияют на pll, смотрите на кварц, есть ли генерация.. кондеры какие стоят?

Кварц сразу ж не запускается, только после включения, посмотреть нечем. кондеры по 10пф. Наверно кварц неиспавен. Попробую поменять.
Сергей Борщ
Цитата(AlexBoy @ Jul 21 2007, 13:13) *
Наверно кварц неиспавен.
Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит)
AlexBoy
Цитата(Сергей Борщ @ Jul 21 2007, 15:33) *
Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит)

частота 18,342Mhz, резистор не нужен. К тому же эта схема у меня работала на SAM7X256.
amw
Что-то размер кода маловат smile.gif.
Я включаю так: (кварц 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:
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.