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

klesin

Участник
  • Постов

    10
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о klesin

  • День рождения 01.04.1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. board setup SAM9

    Никак не получается проинитить память, чтобы программа копировалась из дебагера в SDRAM. Размер кода растет и очень неудобно каждый раз разбивать программу на части для отладки. Использую AT91SAM9263 и SAM-ICE(J-Link), хотя это и не так важно. Вот что я делаю: 1. remap (не влияет , просто так) 2. запускаю PLL на 200МГц 3. Подключаю такт PLL/2 4. Отключаю watchdog (на всякий случай) 5. Иничю SDRAM на EBI0 (процедурка для памяти используется в основной программе и SDRAM работает, если программа запускается из внутренней памяти) Вот код с установками: /* Remap internal SRAM to 0x00000000 */ memwrite 4 0xFFFFED00 0x3 //**************************************************************** // Watchdog Disable // AT91C_BASE_WDTC->WDTC_WDMR= AT91C_SYSC_WDDIS; memwrite 4 0xFFFFFD44 0x00008000 //*********************************************************************** //Initialize main oscillator //#define BOARD_OSCOUNT (AT91C_CKGR_OSCOUNT & (64 << 8)) //AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN; memwrite 4 0xFFFFFC20 0x00003F01 //while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS)); __sleep -m 500 /* Initialize PLLA at 200MHz (198.656) */ // AT91C_BASE_CKGR->CKGR_PLLAR = BOARD_CKGR_PLLA // | BOARD_PLLACOUNT // | BOARD_MULA // | BOARD_DIVA; //(AT91C_CKGR_SRCA | AT91C_CKGR_OUTA_2)| (63 << 8) | (0x6D << 16) | 9 memwrite 4 0xFFFFFC28 0x206DBF09 //while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKA)); __sleep -m 500 ///* Switch to main oscillator + prescaler */ // AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_MDIV_2; memwrite 4 0xFFFFFC30 0x00000100 //while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY)); __sleep -m 500 /* Switch to PLL + prescaler */ // AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_MDIV_2 | AT91C_PMC_CSS_PLLA_CLK; memwrite 4 0xFFFFFC30 0x00000102 //while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY)); __sleep -m 500 //********************************************************************* //Set SDRAM for works at 100 MHz //Enable clock PIOA- PIOE //pPMC->PMC_PCDR = periphIds; memwrite 4 0xFFFFFC10 0x0000001C //Configure PIOD as peripheral (D16/D31) // pPio->PIO_ASR = periphAEnable; memwrite 4 0xfffff870 0xffff0000 // pPio->PIO_BSR = periphBEnable; memwrite 4 0xfffff874 0x00000000 // pPio->PIO_PDR = (periphAEnable | periphBEnable); memwrite 4 0xfffff804 0xffff0000 // Init MATRIX to support EBI0 CS1 for SDRAM //AT91C_BASE_CCFG->CCFG_EBI0CSA |= AT91C_EBI_CS1A_SDRAMC; memwrite 4 0xFFFFED20 0x00000001 //Init SDRAM A minimum pause of 200us is provided to precede any signal toggle // AT91C_BASE_SDRAMC0->SDRAMC_CR = (AT91C_SDRAMC_TXSR_8 | AT91C_SDRAMC_TRAS_5 |\ // AT91C_SDRAMC_TRCD_2 | AT91C_SDRAMC_TRP_2 |\ // AT91C_SDRAMC_TRC_7 | AT91C_SDRAMC_TWR_2 |\ // AT91C_SDRAMC_NC_9 | AT91C_SDRAMC_NR_13 |\ // AT91C_SDRAMC_NB_4_BANKS | AT91C_SDRAMC_CAS_2 |\ // AT91C_SDRAMC_DBW_32_BITS); memwrite 4 0xFFFFE208 0x85227259 __sleep -m 200 //A Precharge All command is issued to the SDRAM // AT91C_BASE_SDRAMC0->SDRAMC_MR = AT91C_SDRAMC_MODE_PRCGALL_CMD; memwrite 4 0xFFFFE200 0x00000002 //* *AT91C_SDRAM = 0x00000000 memwrite 4 0x20000000 0x00000000 //Eight Auto-refresh are provided //AT91C_BASE_SDRAMC0->SDRAMC_MR = AT91C_SDRAMC_MODE_RFSH_CMD; memwrite 4 0xFFFFE200 0x00000004 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 memwrite 4 0x20000000 0x00000000 //A mode register cycle is issued to program the SDRAM parameters // AT91C_BASE_SDRAMC0->SDRAMC_MR = AT91C_SDRAMC_MODE_LMR_CMD; memwrite 4 0xFFFFE200 0x00000003 //*(pSDRAM+0x20) = 0; memwrite 4 0x20000020 0xCAFEDEDE //Write refresh rate into SDRAMC refresh timer COUNT register //AT91C_BASE_SDRAMC0->SDRAMC_TR = AT91C_SDRAMC_COUNT & 0x65B; memwrite 4 0xFFFFE204 0x65B // A Normal Mode Command is provided, 3 clocks after tMRD is set" //AT91C_BASE_SDRAMC0->SDRAMC_MR = AT91C_SDRAMC_MODE_NORMAL_CMD; memwrite 4 0xFFFFE200 0x00000000 // *pSDRAM = 0 memwrite 4 0x20000000 0x00000000
  2. AT91SAM9263 2DGC

    Подскажите, люди добрые, как настроить 2DGC у SAM9263. Никак не хочет нормально работать. Точнее не пойму откуда он берет размер экрана, на котором рисует черточки. В итоге вместо одной сплошной линии я вижу множество мелких. Добавлю, что контроллер путает Х и У при рисовании линий. Вручную при изменении в памяти данных, все работает как надо.
  3. Благодарю всех за ресурсы, в принципе - это то, что я и хотел найти
  4. У меня возникла проблема: необходимо создать генератор, который бы выдавал пачки импульсов длительностью 10нс амплитуда 10В для передачи по кабелю на соседний блок. Хотелось бы иметь минимально возможные фронты. думаю поставить компаратор , что то типа ADCMP580, а за ним шустрый ключик (на лавинном транзисторе???). Отсюда вопрос: можно ли использовать только один из выходов ЭСЛ для управления ключом и вообще рабочая ли это будет система?
  5. Хочу присоединться к просьбе Hiver. Очень хочется посмотреть как нужно писать на VHDL. Теория - это конечно, хорошо, но лучше бы посмотреть на реальный проект строк на 500-1000 с комментариями. Может у кого завалялся подобный проект? После того как увидел перевод Evita на этом сайте, больше ничего не хочется оттуда брать.
  6. Я не рекомендую читать перевод этой обучалки. Такое впечатление создалось, будто переводили студенты-экономисты с помощью электронного переводчика (к незнанию терминологии прибавилось еще и нежелание граммотно составить предложения из дословного перевода)
  7. SAM7Sxx flash write

    Сравнивал свой текст с тем что был предложен. Все сходится. Единственное отличие в отключении прерываний (ну не знаю я как написать процедуру на asm в MULTI, а IARом не хочу пользоваться). Вместо AT91F_disable_interrupt() я просто сбрасывал биты разрешения IRQ и FIQ на С. Скорее всего в этом и есть проблема.
  8. MULTI и asm

    Простите за глупый вопрос, но может кто знает как описывать процедуры на ассемблере в MULTI? Директивка __asm не устраивает; хотелось бы иметь отдельный файл, в котором бы они и находились.
  9. SAM7Sxx flash write

    Вопрос к sapID. У Вас конкретно это работает при запуске программы во флэше? Не при отладке, а с отключенным программатором? Дело в том, что очень давно начал пытаться переписать флэш при работающей программе, но нет данных, что кто-то это сделал. При попытке снять блокировку с флэши (включены ли прерывания или выключены) - контроллер вываливается в какие-то дебри, делее - не работает ничего. Ну хоть программа при этом не стирается. У меня немного другая задача: переписать полностью программу через уарт. По тому, что нашел я переписываю полностью код из флэши в память. Надо лишь как-то передать управление не на флэш, а на память. Если у кого-то есть решение - хотелось бы посмотреть. Забыл дописать. При исполнении программы из памяти (RAM), пишется что угодно куда угодно. Но если из флэши, то только можно считывать данные без возможности записи. Так вот вопрос, вообще есть возможность записи-то?
×
×
  • Создать...