Jump to content

    

Andron77

Участник
  • Content Count

    28
  • Joined

  • Last visited

Everything posted by Andron77


  1. Здравствуйте. Изучаю ADSP BF-532 и столкнулся с вопросом. К внешней 16-битной шине данных, которая предназначена для внешней памяти, подключены DIP-переключатели. Необходимо считать их значение. Подскажите, какой регистр связан с этой шиной данных и как переключить ее на вход?
  2. Проверил. На электролитах нет напряжения, вообщем сгорел выпрямительный мост и тормозной транзистор, но все это встроено в IGBT-модуль FB10R06KL4G_B1 600v 15a. А его цена почти 70% от стоимости самого ATV312. :(
  3. Спасибо, изучаю. Значит реле которое срабатывает при включении, перемыкает зарядный резистор?
  4. Всем доброго времени суток. ЧП Altivar 312-0.55kw, "перепутал электрик провода по запарке", входное напряжение 220в подключил на клеммы тормозного резистора PA, PB, PC. Сработал входной автомат, через который подключен ЧП. В дальнейшем, при правильном подключении, ЧП внешних признаков жизни не подает, индикатор не горит, рэле не щелкает. При разоборе внешних повреждений элементов не обнаружено. Что предположительно может выйти из строя? Может есть у кого схемы, хотябы функциональные?
  5. Таблица векторов прерываний на адреса памяти программ 0h,2h,4h,6h и так далее, аппаратно прошита в МК, и уже с этих адресов командой rjmp, осуществляется переход на любую пользовательскую подпрограмму обработки прерывания, и без разницы как она называется, только выход из нее происходит по reti, а не по ret.
  6. Нашел понятное обьяснение про volatile переменные с примерами. volatile_for_chainiks.pdf
  7. K-Volodja Спасибо, проверяю. Кроме транзисторов пробило еще и тиристор MCD 162-16 на одной из фаз, не реагирует на сигнал с управляющего электрода. Кроме этого еще и дуга прошла в блоке электролитов, между шинами + и - находящимися на расстоянии 5мм, хорошо что конденсаторы живые. Непонятно, что же все таки явилось первопричиной всего этого? Это же не китайский блок питания, а швейцарский Baumuller, надежность на высоте.
  8. День добрый, помогите разобраться с частотным преобразователем шагового двигателя, с силовой электроникой такой мощности не знаком, а делать нужно. Взорвался ЧП 3х-фазный, 3х210A, первый раз выбило автомат, второй раз уже сам ЧП. Разлетелось одно плечо собранное на двух IGBT модулях FZ600R12KE3, 600А 1200В, пострадали обе платы управления IGBT модулями. Определил большинство деталей, но остался ряд вопросов. 1. Может ли выбить другие плечи или всегда выбивает одно? Визуально остальные IGBT модули целые, в этом ЧП один IGBT стоит половину моей зарплаты, не хотелось бы ошибиться :) 2. Если проверять IGBT, обязательно ли нагружать его номинальным током, или будет достаточно лампочки в качестве нагрузки? 3. В плате управления IGBT обязательно ли ставить MELF резисторы или их можно заменить обычным чипами? 4. Какой тип чип-конденсаторов применен в плате управления, по виду взорвавшегося, конденсатор состоит из пачки тонких пластинок, явно не керамика? На фото платы это С1, С2, С3, С4 емкость живых 1.5мкф, чем можно заменить?
  9. Огромное спасибо! Скачал, CCS 3.3 соединяется с XDS100V2, только при попытке прошить ругается на распределение памяти memory map, похоже ошибка в файле cmd?
  10. Да, точно, это оно и есть, EEPROM через неё реализуется. Кстати интересный момент, в доках к ней написано, что при обращении к функциям API автоматически отключаются глобальное прерывание и сторожевой таймер, хотя реально это не так, пока принудительно командой это не сделал, перед вызовом функций API, редко, но были зависания.
  11. А что вы имеете ввиду под Flash API от TI? Эмуляцию EEPROM в области одного сектора флэш памяти? Для загрузки кода во флэш-память, вам нужно два cmd файла в каталоге проекта - DSP280x_Headers_nonBIOS.cmd и F28335.cmd. Cmd-файл с именем RAM удалите, он указывает линкеру, что код нужно загружать в область озу, при передергивании питания данные теряются. Для примера выложу свой тренировочный проект под F2808 в CCS4, посмотрите. В проекте нет обращений на файлы запутанных примеров "DSP280x_Examples.h", все данные используемые при компиляции находятся в проекте, ничего лишнего, то есть все предельно прозрачно, как на авр :) Начиная с ассемблерного кода по адресу резета при переходе от Jump to Flash (111), создание векторов прерываний и заканчивая распределением памяти в cmd-файле. Проект компилится и работает без ошибок и зависаний. Control.rar
  12. Подскажите, как заставить работать эмулятор XDS100v2 в CCS 3.3 SR12, последний доступный апдейт установлен. Читал, что официально XDS100v2 не поддерживается в CCS 3.3, только XDS100v1, но вроде бы в последнем релизе SR12 неофициально внедрена поддержка XDS100v2. Поиском нашел, что нужно переписать какой-то xml-файл и jioserdesusb.dll из CCS 4 в CCS3.3. Сам работаю с CCS4 без DSP/BIOS с F2808, а прошлые старые проекты были написаны до меня в CCS3.3 с DSP\BIOS и импортируются в CCS 4 с конфликтами версий.
  13. На вход порта TMS320F2808 случайно попало 5в, вместо 3.3в, в результате контроллер греется так, что срабатывает защита у стабилизатора двойного питания, естественно проц не откликается, только замена.
  14. Подскажите, как и чем через XDS100V2 прочитать прошивку из F2808 , с учетом того, что она не зашифрована. В CCS4 такой функции не нашел.
  15. Ну так пишите, что непонятно, будем вместе разбираться. Написал второй тестовый проект, делает тоже самое, но полностью через обработчик прерываний таймера Т0. На сей раз задержки соответствуют расчетным, оно и понятно, таймер все-таки. Но есть пара вопросов в основном по Си, в файле DSP280x_Default_Isr.c пустой выход из всех неиспользуемых обработчиков прерываний сделал через return, это обязательно или можно оставить функции пустые? И второй вопрос, в подпрограмме таймера T0 объявил переменные (файл Led2.c) как static, соответственно эти переменные не видны в функции main(), как бы их так объявить, чтобы ими можно было пользоваться вне подпрограммы прерываний? Led2.rar
  16. А должен ли? Если в свойствах CCS выбрана модель 28027, а cmd файл в проекте под 2808?
  17. Так он и не должен так сразу компилится при копировании всего проекта, так как он рассчитан на F2808. Надо создать новый проект под ваш Piccolo 28027 контроллер и изменить следующее. 1. заменить хидеры в .с, кроме DSP280x_GlobalVariableDefs.c, его заменить своим из примеров, он не менялся. 2. DSP280x_CodeStartBranch.asm, в нем только отключается сторожевой таймер, думаю что его регистры в 28027 аналогичные. 3. DSP280x_Headers_nonBIOS.cmd заменить своим, не менялся 4. F2808.cmd по аналогии, обращая внимание на название областей, изменить свой, так как некоторых областей памяти в Piccolo нет. Разобрался таки с созданием и копированием таблицы прерываний PIE, кстати вот здесь есть кое-что по русски.
  18. Генератор я не настраивал, он работает на установках по умолчанию 10Мгц, половина частоты кварца, без синтезатора. Кстати в примерах как раз и делается много лишней работы по установке регистров значениями умолчанию. Зачем, если они после сброса и так находятся в этом состоянии. Файлы заголовков находятся в примерах DSP280x_common\include и DSP280x_headers\include. К ним нужно прописать путь в настройках CCS4 ( project/properties/C2000 compiler/include options/иконка add), тогда они появятся в директории Includes проекта. Оператор goto в данном случае делает банальный безусловный переход [sB (метка), UNC] можно и бесконечный for сделать, но в асме все равно будет тот же безусловный переход. Вообщем-то это моя первая программа на Си для контроллеров вообще, до этого на 51-ых и avr обходился ассемблером, так что за некоторую кривость програмки простите. Вообще заметил, что компилятор не воспринимает некоторые классические конструкции си, нельзя допустим объявлять переменную в цикле, например на такую конструкцию выдает ошибку, for(int i=0;i<10;i++).
  19. Ну вот я делал тестовый проект на F2808, загрузка с флэш, запись в RAM пользовательского кода, выход в GPIO. Только нужно поправить cmd-файл распределения памяти под свой ЦСП. Программа пока без прерываний, не разобрался с ними. Примерами не пользуюсь, а вытаскиваю из них нужный код, слишком много там лишнего мусора. По Piccolo есть интересные материалы для начинающих. Мой проект в CCS4 Led.zip
  20. Конечно учитываю, 4 цикла на условный переход sbf (метка), NEQ (4 такта) Конвейер выборки из флэш отключен, если вы про это, но так как программка работает из RAM, может быть так, что конвейер там свой и не отключается? В доках по этому поводу ничего не сказано.
  21. Так я и измеряю на больших задержках на ножке порта, я в курсе, что порт не сможет отработать микросекунды. Но отработать несколько герц порт явно сможет. :) Вопрос в другом, почему проц не выполняет команды за те такты, что написаны в даташите?
  22. Всем доброго времени суток. Осваиваю TMS320F2808 всего пару недель, есть несколько вопросов по тактам и по реализации точных временных задержек. ЦСП установлен на планке, заводском контрольном модуле под DIMM100, отладочной плате кто-то приделал ноги, поэтому сделал свою, программирование и отладка в CCS4.1.3 через XDS100V2 USB JTAG, DSP/BIOSа нету. Тестовая небольшая программка моргает парой светодиодов в разных режимах. В ней реализована обычная программная задержка, прерывания все отключены. Частота кварца 20МГц, SYSCLKOUT проца 10МГц, выход внешнего такта 10/4=2.5МГЦ (точно измерено), то есть все по умолчанию. В автономке JTAG отключен, общая программа записана во флэш (конвейер отключен), но подпрограмма задержки при инициализации копируется один раз в RAM L0 и там выполняется все время (проверено дизассемблером). Подпрограмка задержки на С простая. ------------------------------------------------ void delay_loop(Uint32 tmp) { do{ tmp--;} while (tmp>0); } ----------------------------------------------- Соответствующий asm дизассемблера, цикл который крутится, от него в основном и зависит длительность задержки отрабатывает за 7 тактов, то есть по идеи за 0.7мкс на 10_МГц, цикл крутится 428571 раз (расчет 0.3сек) m1: movb acc,#1 (1 такт) subl *-sp[2],acc (1 такт) movl acc,*-sp[2] (1 такт) sbf m1, NEQ (4 такта) Но реально измеренная задержка больше расчетной на 30%, 0.4с вместо 0.3с. Почему? Выходит, что доступ к RAM L0 работает с циклами ожидания? хотя в даташите написано 0-wait? Либо какая-то команда выполняется больше, чем 1 такт?