Warlord
Свой-
Постов
124 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Warlord
-
Звание
Частый гость
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
Посетители профиля
1 729 просмотров профиля
-
Alex11, Да, похоже ничего не остаётся как применять ЦОС, благодарствую.
-
Каскад уже внутри, на выходе напряжение. Ничего общего, просто близко. Есть подозрение, что величина зависит от экземпляра микрофона, но, к сожалению, второго устройства нет рядом, проверить не получится.
-
Здравствуйте! Есть кодек TLV320AIC3204, к нему через коммутатор подключен микрофон. Схема: В оцифровываемом потоке ось симметрии смещена в сторону отрицательных значений: Из-за чего может быть такой крен?? Блоки ЦОС в кодеке не используются, активен один левый АЦП, к которому через входы IN2L и IN2R подключен микрофон.
-
Приветствую! История началась с того, что на целевом устройстве на базе 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), но не смог найти объяснения такому поведению...
-
Можно ли заставить toolchain приписать разным прерываниям один и тот же обработчик?? С таким кодом в таблице прерываний заполняется только INT0_vect. Второй вектор игнорируется. #pragma vector=INT0_vect #pragma vector=INT1_vect __interrupt void irq_handler(void) { ... }
-
TMS320VC5509A idle mode
Warlord опубликовал тема в Сигнальные процессоры и их программирование - DSP
Здравствуйте! Есть 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 нули. -
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 из эмулятора работает, но после выполнения одной инструкции значение обнуляется. Никто не сталкивался??
-
Спасибо огромное :) Как всегда путаница с этими словами..
-
Приветствую! Ситуация следующая: 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. Опять странный промежуток.
-
Поиск по форуму вроде работает... http://electronix.ru/forum/index.php?showtopic=31982
-
PCI карта расширения LPT
Warlord ответил a1ex тема в RS232/LPT/USB/PCMCIA/FireWire
Один из вариантов - довольно грубый - объяснить незадачливому софту, что железо надо искать не по, например, по 0x278, а именно по 0х1030. -
"Быстрый" USB <=> SPI
Warlord ответил COMA тема в RS232/LPT/USB/PCMCIA/FireWire
Fast Opto-Isolated Serial Interface правильно работает на частоте до 6МГц, выше идут сбои. К тому же в SPI еще преобразовывать надо. -
Подобная ситуация, но IAR не виснет, а просто сжирает 99% процессорного времени независимо от того, делает ли он что или нет. На компе установлено 2 IAR для CR16C и один для Atmel, так вот первые два работают как надо, а для Atmel - коряво. Тоже стоит Outpost, но его снос на ситуацию никак не повлиял... Если запускается какая-то программа, то IAR послушно отдает ей до 90% процессорного времени. Но как только программа перестает потреблять производительность, IAR снова откусывает все 99%.
-
Спасибо, проект собрал, но железо не цепляется. Выбираю C2xx XDS510 Emulator. Эмулятор у меня InSys Corporation - EMU-510PCI. Использовал его в CCS3.1 на С55xx - работает отлично. А здесь композер выводит вот такое окно Может я что не так делаю??