Перейти к содержанию
    

AT91SAM7S256 не запускается MainClock

Сделал плату на SAM7S256, при запуске MainClock входит в вечный цикл. Вот этот фрагмент:

    // ---------------------------------
    // Включаем главный генератор
    pmc->PMC_MOR = (AT91C_CKGR_OSCOUNT & (0xFF <<8)) | AT91C_CKGR_MOSCEN;
    while(!(pmc->PMC_SR & AT91C_PMC_MOSCS));

Задержку на всякий случай поставил максимальную.

Что это? Не исправен кварц или номиналы неправильные в PLL? Или PLL не влияет на запуск кварца?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

номиналы pll влияют на pll, смотрите на кварц, есть ли генерация.. кондеры какие стоят?

Кварц сразу ж не запускается, только после включения, посмотреть нечем. кондеры по 10пф. Наверно кварц неиспавен. Попробую поменять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверно кварц неиспавен.
Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая частота у кварца? Для кварцев частотой меньше 4 МГц надо последовательно с кварцем включать резистор (см. даташит)

частота 18,342Mhz, резистор не нужен. К тому же эта схема у меня работала на SAM7X256.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то размер кода маловат :).

Я включаю так: (кварц 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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...