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

    

Warlord

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва
  1. STM32F429 discovery, USB OTG_FS

    Приветствую! История началась с того, что на целевом устройстве на базе STM32F429 через определённое время перестаёт работать BULK OUT. Раскопки привели к тому, что после программного сброса модуля OTG_FS и его инициализации, содержимое некоторых установленных регистров оказыватся испорченным. Теперь конкретика. Я взял STM32F429 discovery, IDE IAR. Из STM32Cube_FW_F4_V1.13.0 пример UART_TwoBoards_ComPolling. В main.c после установки системной частоты SystemClock_Config() я добавил такие строки: Код  __HAL_RCC_USB_OTG_FS_CLK_ENABLE();      USB_OTG_FS->GRSTCTL |= USB_OTG_GRSTCTL_CSRST;   while (USB_OTG_FS->GRSTCTL & USB_OTG_GRSTCTL_CSRST);   {     volatile unsigned int i;     for (i = 0; i < 50000; i++); // ~2.8 ms delay (datasheet: at least 3 PHY clocks delay)   }   USB_OTG_FS->DIEPTXF0_HNPTXFSIZ = 0x03FF03FF;   BSP_LED_On(LED3);   while (USB_OTG_FS->DIEPTXF0_HNPTXFSIZ == 0x03FF03FF);   BSP_LED_Off(LED3);   while (1); Записываю в Host non-periodic transmit FIFO size register значение 0x03FF03FF Между BSP_LED_On(LED3); и BSP_LED_Off(LED3); проходит 58.4 мс, регистр оказывается наполовину сброшенным, т.е. поле RAM start address остаётся 0x3FF, а поле TxFIFO depth сбрасывается в 0x200. Перечитал 34 главу скудного Reference manual (DM00031020), но не смог найти объяснения такому поведению...
  2. IAR AVR

    Xenia, премного благодарен!
  3. IAR AVR

    Можно ли заставить toolchain приписать разным прерываниям один и тот же обработчик?? С таким кодом в таблице прерываний заполняется только INT0_vect. Второй вектор игнорируется. Код#pragma vector=INT0_vect #pragma vector=INT1_vect __interrupt void irq_handler(void) {   ... }
  4. Здравствуйте! Есть DSP 5509A, c внешним кварцем на 12МГц. Пытаюсь загнать его в режим IDLE, с выключением всех доменов, и получить заветные микроамперы, сулимые даташитом spra078d.pdf. Код отрабатывает, ядро засыпает - видно по снижению потребления и, собственно, по коду. Но кварец продолжает стучать. Камень грузится из флэша по spi. Перед засыпанием никакие прерывания не разрешаю. Приведу код, вдруг что-нибудь упустил. Прошу прощение за "magic nubmers". CSL не использую, чтобы ничего не упустить. Код  volatile int i;   _disable_interrupts();      *EBSR = 0x8000; // Clockout disable in External Bus Selection Register   *USBDPLL = 0x0200; // set USB PLL to x4 in USB PLL register   *USBDPLL = 0x0210; // set lock bit   *USBIDLECTL = 0x0004; // activate USB (USB Reset = 1) in USB IDLE Control register   *USBCTL |= 0x0080; // pull DP high in USB CTL   *USBIDLECTL = 0x0005; // activate USB and enable USB idle (USB Reset =1, USB Idle = 1)   *EBSR = 0xc000; // Clockout & osc disable in External Bus Selection Register      *I2CMDR2 = 0x0001; // IDLE IIC   *ADCCLKCTL = 0x0100; // IDLE ADC      *(ioport volatile unsigned int *)0x2812 |= 0x4000; // IDLE McBSP0 with PCR0   *(ioport volatile unsigned int *)0x2C12 |= 0x4000; // IDLE McBSP1 with PCR1   *(ioport volatile unsigned int *)0x3012 |= 0x4000; // IDLE McBSP2 with PCR2   *(ioport volatile unsigned int *)0x1002 |= 0x8000; // IDLE Timer0 with TCR0   *(ioport volatile unsigned int *)0x2402 |= 0x8000; // IDLE Timer1 with TCR1   *IER0 = 0x0000;   *IER1 = 0x0000;   *IFR0 = 0xffff;   *IFR1 = 0xffff;         *ICR = 0x002E; // enable EMIF, Peripheral, and DMA idle   for (i=0; i<1000; i++);   asm(" IDLE");   *ICR = 0x003F; // enable all domens idle   // delay of at least 2.5 us needed between the two IDLE instructions   for (i=0; i<1000; i++);   asm(" IDLE"); Есть подозрение, что какой-то блок не даёт выключить домен CLKGEN. Если запустить код под эмулятором, то после нажатия Halt, регистр ISTR (Idle Status Register) содержит 0x003F. т.е. все блоки в неактивном состоянии. В регистрах IFR0 и IFR1 нули.
  5. ATMega164 регистры USART1

    IDE - IAR 5.50. Прошиваю атмегу, отладчик JTAGICE mkII останавливается на адресе 0x000000 (JMP ?C_STARTUP). В окошке Register выбираю USART0 I/0, регистр UCSR0A = 0x20, всё как по даташиту (reset values). В окошке Register выбираю USART1 I/0, регистр UCSR0A = 0x00, ровно как и все остальные регистры, относящиеся к этому модулю. Запись в регистры USART1 из эмулятора работает, но после выполнения одной инструкции значение обнуляется. Никто не сталкивался??
  6. ATMega: Bootloader & LOCKBITs

    Спасибо огромное Как всегда путаница с этими словами..
  7. ATMega: Bootloader & LOCKBITs

    Приветствую! Ситуация следующая: ATMega1281, Написал BootLoader. BOOTSZ=01, соотвесно код начинается с адреса 0x1F800. Прошиваю, ставлю LOCKBIT BLB1 Mode 3 - запрет SPM и LPM в BootSection. Далее BootLoader пишет рабочую программу с адреса 0x0000 скажем по адрес 0x48FF и потом пытается записать одну страницу с контрольной суммой по адресу 0x1F700, т.е. предыдущую началу BootSection. Результатом является запись на странице по адресу 0x4900, хотя адрес записи указываю как константу. Код    __AddrToZ24ByteToSPMCR_SPM((void __farflash *)0x1F700, 0x05); Максимальный адрес по которому страница пишется правильно - это 0x1EF00. Код    __AddrToZ24ByteToSPMCR_SPM((void __farflash *)0x1EF00, 0x05); // program Возникает странный промежуток c 0x1EF00 по 0x1F800 где SPM пишет страницу по неверному адресу. Если LOCKBIT - неактивны, т.е. защиты нет, то всё нормально. Пробовал сделать BOOTSZ=00, начало BootSection - 0x1F000 - ситуация повторяется. При LOCKBIT BLB1 Mode 3 максимальный адрес на который пишется страница - 0x1E700. Опять странный промежуток.
  8. Поиск по форуму вроде работает... http://electronix.ru/forum/index.php?showtopic=31982
  9. Один из вариантов - довольно грубый - объяснить незадачливому софту, что железо надо искать не по, например, по 0x278, а именно по 0х1030.
  10. "Быстрый" USB <=> SPI

    Цитата(COMA @ Feb 5 2008, 08:42) Если правильно понял у FT2232C/D есть режим "Fast Opto-Isolated Serial Interface". Стоит на него ориентироваться? Fast Opto-Isolated Serial Interface правильно работает на частоте до 6МГц, выше идут сбои. К тому же в SPI еще преобразовывать надо.
  11. Подобная ситуация, но IAR не виснет, а просто сжирает 99% процессорного времени независимо от того, делает ли он что или нет. На компе установлено 2 IAR для CR16C и один для Atmel, так вот первые два работают как надо, а для Atmel - коряво. Тоже стоит Outpost, но его снос на ситуацию никак не повлиял... Если запускается какая-то программа, то IAR послушно отдает ей до 90% процессорного времени. Но как только программа перестает потреблять производительность, IAR снова откусывает все 99%.
  12. Спасибо, проект собрал, но железо не цепляется. Выбираю C2xx XDS510 Emulator. Эмулятор у меня InSys Corporation - EMU-510PCI. Использовал его в CCS3.1 на С55xx - работает отлично. А здесь композер выводит вот такое окно Может я что не так делаю??
  13. Появилась задача поддержать старый проект на камне TMS320C203. Каким CCS можно его подцепить??
  14. USB

    Вероятнее всего проблема в драйвере. Запроси поддержку сайпреса на предмет нового драйвера или попробуй CyUSB.sys
  15. Глянь VID и PID самого железа. Они д.совпадать с теми, что в INF файле. Если они не совпадают, подправь INF файл.