koljakh
Участник-
Постов
110 -
Зарегистрирован
-
Посещение
Весь контент koljakh
-
А у Вас ексепшены висят? Этот проц довольно таки сложно повесить наглухо. а в ексепшене можно посмотреть код ошибки. section("L1_data") unsigned long var_SEQSTAT; section("L1_data") unsigned char var_EXCAUSE; section("L1_data") unsigned long var_RETX; EX_EXCEPTION_HANDLER(section("L1_code") ExeptionRoutine) { asm("R0 = SEQSTAT;"); asm("P0.H=_var_SEQSTAT;"); asm("P0.L=_var_SEQSTAT;"); asm("[P0]=R0;"); asm("R0 <<= 26;"); asm("R0 >>= 26;"); asm("P0.H=_var_EXCAUSE;"); asm("P0.L=_var_EXCAUSE;"); asm("[P0]=R0;"); asm("R0 = RETX;"); asm("P0.H=_var_RETX;"); asm("P0.L=_var_RETX;"); asm("[P0]=R0;"); PrintExeption(); for(;;) { } }
-
MAX II свойства пина
koljakh опубликовал тема в Работаем с ПЛИС, области применения, выбор
Добрый день! Есть проблема. Программирование в системе XMEGA с помощью BLACKFIN происходит по PDI интерфейсу. Все бы ничего, но PDI со стороны XMEGA если не меняется уровень, на следующий клок уходит в tri-state. Поэтому параллельно этой цепи подключена Altera MAX II. Этот пин внутри альтеры подключен на ALT_IN_BUF со свойством ENABLE_BUS_HOLD. Проблема возникает когда параллельно всему этому подключается внешний программатор, который тоже имеет функцию BUS_HOLD. Вопрос, можно как-то отключать эту функцию в альтере не меняя ее прошивки? -
Все я это видел :) Там в основном продают. Но есть и схемы. Но меня момент маленький его смутил, поэтому и спросил. Он пальцами легко останавливается.
-
привод двигателя РД-09
koljakh опубликовал тема в Электрические машины, Электропривод и Управление
а то он на 110 В, а трансформатор ставить не хочется. Пробовали обмотки включать последовательно + конденсатор и параллельно одной обмотке фазосдвигающий кондер. Движок вращается, но легко останавливается рукой. Или так должно быть? Там все-таки редуктор стоит не хилый. Момент должен быть большим. Да, и еще вопрос. На сколько должны быть сдвинуты фазы на обмотках относительно друг друга? А слона то я и не заметил. :) Только что увидел подобную тему внизу. Там все расписано. Хотя поиск ничего не выдал :( Закройте тему. -
1. Так счетчик можете хранить где угодно, хоть L1, или L2, или L3. Для вашего случая нужно только создать секцию c атрибутом NO_INIT, чтобы бут лоадер ее не инициализировал, и программно обнулять при аппаратном сбросе, а при программном инкрементировать. 2. Да нефиг делать :) прочитайте слово по невыровненому адресу, а в обработчике исключения сделайте тоже самое.
-
Попробуйте пересобрать либы с помощью утилиты elfar.exe: то что хотите в L1 в одну либу, что в L2 в другую. У нее и свой хелп есть, и я думаю, что в хелпе ВДСП она подробно описана.
-
$USER_LIBRARIES_L1 = Lib1.dlb; $USER_LIBRARIES_L2 = Lib2.dlb; L1_code { INPUT_SECTION_ALIGN(4) INPUT_SECTIONS($USER_LIBRARIES_L1(program)) } > MEM_L1_CODE L2_sram { INPUT_SECTION_ALIGN(4) INPUT_SECTIONS($USER_LIBRARIES_L2(program)) } > MEM_L2_SRAM C данными по образу и подобию
-
Что-то мне помнится, что подчеркивание нужно ставить перед переменной на асме, чтобы она была в С видна, ну и глобал соответственно.
-
Это радует :) И почитайте еще главу 18 в мануале BLACKFIN PROCESSOR DEBUG Там тоже много чего интересного
-
Да есть баги новые, если сравнить аномали лист, то видно что новые есть, хотя конечно новых гораздо меньше, чем исправленных старых. Сам недавно столкнулся с багой PPI-порта, которой в старых ревизиях не было, а в 0.4 появилась это касательно 532. Для 561 появилась проблема при работе с памятью в рев 0.5, а в 0.3 ее не было. Так что несоответствие ревизий может стать основной проблемой.
-
Да, но прога слинкована под 532, и BOOT будет грузить ее по адресам которые есть и 532 и 533. Да я и не спорю. Я про то, что ВООТ грузит по тем адресам, которые прописаны в LDR файле. И выполняет переход по адресу, определяемому битом RESVECT. Т.е. если код для 532 загрузить в 533, то работать будет, а наоборот нет. Я писал наоборот :) "Мы случайно запаяли 533 вместо 532, все работало. "
-
Ну программа грузится туда, куда линкер скажет. После ресета проц уходит, в зависимости от BMODE[1..0], или на прямое выполнение из внешней памяти, или на BOOT ROM. далее BOOT ROM грузит LDR, в котором есть бит Bit 1: RESVECT и после загрузки происходит переход на адрес, который зависит от этого бита. Кто сказал что 533 жестко переходит по 0xFFA00000? Я так понял это от этого бит в прошивке зависит. А бут ром там один для 531(2,3), вот он и выбирает куда прыгать. After booting is complete, the on-chip Boot ROM uses this bit to jump to address 0xFFA0 0000 for the ADSP-BF533 or to address 0xFFA0 8000 for the ADSPBF531/ BF532. Другое дело, что надо посмотреть на ревизию чипа. Вот здесь могут быть проблемы. Старые баги уходят, новые приходят :)
-
Да должно работать. Ну не будет часть памяти использоваться. Вот наоборот не будет. Мы случайно запаяли 533 вместо 532, все работало. Случайно заметил, начал копаться. Там так распределение памяти и boot сделаны, что все работать должно. А вот если прошиву поменять, то работать не будет. Загрузка пройдет как 532, а старт будет как в 533.
-
Да я понял что Вы хотите сделать:) нужно причину найти почему этого не происходит. Вот я и предлагаю исключить idle из кода. Ядро B ждет перенастройки PLL, а ядро A этого не делает. Выход и этого состояния заблокирован по другим событиям. Может в этом проблема. У меня нет кита, к сожалению экспериментировать не могу. А на плате JTAG не разведен. Так что могу только фантазировать :) Сейчас одну штуку посмотрю, если чего отпишу. А сделайте так. В ядре B включите прерывание от ядра A. Поставьте breakpoint на это прерывание, а по завершении работы ядра A вызывайте это прерывание. Прерывание должно быть с наивысшим приоритетом. Код ядра А вызов прерывания *pSICB_SYSCR = (1<<7) ; ssync(); Код ядра В инит *pSICB_IAR7 = 0xF0FFFFFF; register_handler(ik_ivg7, core_a_int); *pSICB_IMASK1 = (1UL<<30); само прерывание EX_REENTRANT_HANDLER(core_a_int); { чего нибудь, и на это чего нибудь breakpoint } только не блокируйте wakeup от этого источника. у Вас в примере это заблокировано
-
а нахрена вам этот код в ядре В? Не проще ли настроить PLL до запуска ядра B? Попробуйте сделать там просто вечный цикл Я вообще настройку PLL в инит коде делаю, первым делом, чтобы потом с сдрам проблем не было. Да, и вот в чем вопрос, idle, случаем, доступ к ядру по JTAG не ограничивает ли?
-
А Вы можете загрузить этот же проект в симулятор, и посмотреть что в ядре В находится по этому адресу 0xFF600BB4 в окне дизассемблера?
-
Еще раз огромное спасибо, все понятно.
-
Да хрен его знает. Могу предположить что в Emulation Mode. Т.е. в состоянии с наивысшим приоритетом. Но это только догадки.
-
Огромное спасибо, то что надо. Только вроде бы как они (ЭПУ2-2) снимаются с производства, но им есть замена (БОТ). У меня еще один вопрос, а нафига к нему еще сглаживающий реактор? Выбросы в сеть уменьшить?
-
Добрый день, всем! Тут меня попросили ребята подобрать привод к двигателю, а так как я этим никогда не сталкивался спрошу у вас. Вот тип двигателя: двигатель 2ПБ112LГУХЛ4 . 220В, 10.5А . Возбуждение независимое 220В 0.45А. 3150/4000об.мин. Вот схема двигателя И еще пару ссылок на приводы 4q2_rev0.pdf http://www.eurotherm.co.uk/products/drives...i/?locale=en_GB Подойдут ли эти приводы? Может еще чего подскажите. А то я на другие смотрел, так у них цена космическая. Двигатель используется для привода шпинделя токарного станка.
-
А если так *pSICA_SYSCR|=0x10; ssync(); asm("RAISE 1;"); asm("NOP;"); asm("NOP;"); asm("NOP;"); asm("NOP;"); asm("NOP;");
-
а printf прерываний более низкого уровня не использует? Может лучше ножкой подергать, так надежнее :)
-
Да, ВДК это зло :):) 100 нс... Да должен войти. А попробуйте raise 2. Если проблема внутри проца, то ничего не изменится, если извне, то заработает. Хотя может быть и там и там :) А проц не входит туда или не выходит. Ничего не виснет? Инкрементируемая переменная volatile ?
-
Да должно получиться, только смотрите это прерывание по уровню, и если не снять запрос на прерывание то проц там и останется. Посмотрите на длительность этого сигнала. А с уровнем все нормально. VIH High Level Input Voltage 2.0 ... 3.6V VIL Low Level Input Voltage –0.3 ... +0.6V
-
Только так вот EX_NMI_HANDLER(NMI_Routine)