+2
На самом деле здесь намешаны в кучу две разных проблемы и решать их будем по порядку.
Проблема номер раз — не создается .bin — открываем CCS, в нем открываем любой проект, из имеющихся в StellarisWare, заходим в свойства проекта, build->Steps->Post build steps. Там мы видим волшебную строчку, которая генерит .bin из .out, который создаст компилятор. У меня эта строчка выглядит так:
"${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd470" "${CG_TOOL_ROOT}/bin/hex470" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"

Возможно, она будет слегка разниться в зависимости от версии CCS. Строчку надо скопировать и вставить в аналогичное поле своего проекта.
Проблема номер два — написанная программа выполняется только под дебагером и не выживает после ребута.
Насколько я понял дело в том, что функцию main мы, конечно создали, но как туда МК будет попадать? Когда мы запускаем программу из-под дебагера, об этом заботится ICDI. Но после ресета МК идет по адресу, который лежит в векторе прерывания ресета, а мы туда ничего не написали и что там находится — ведомо только ТиАю.
Для того, чтобы вектора прерываний были прописаны правильно, надо найти файлик startup_css.c (в любом из проектов, имеющихся в Ware) и скопировать его в директорию со своим проектом. CCS должен подхватить этот файл автоматически и добавить в проект (не знаю, потребуется ли его перезапустить, я просто закрыл его, скопировал файл, после чего открыл CCS обратно).
Все, теперь после компиляции у нас будет файл .bin, который можно заливать через LMFlashProgrammer, а можно просто запустить дебаг в CCS, после ресета весь код останется во флеше и запустится на исполнение.
За подробностями можно посмотреть собственно в сам файл startup_ccs.c — там ничего сложного — объявляются четыре функции, которые привязываются к различным прерываниям — по прерыванию ресета функция прыгает на _c_int00 (входная точка нашей программы), три остальных (non-masked interrupt, fault interrupt и дефолтное прерывания для всей периферии) просто висят в бесконечном цикле.
  • avatar
  • tsostik
  • 26 марта 2013, 22:10
0
Ну, во первых, в интернетах все-таки обычно обращаются на «ты». Во вторых, лучше всего от БП компа и взять. Заодно первичка готовая, если ее при разборке не испортить.
Количество витков определяется весьма просто:
1) Наматываем обмотку с известным количеством витков N
2) Измеряем ее индуктивность L
3) Считаем индуктивность витка L0=L/N2
4) Меряем индуктивность первички Lpri
5) Считаем количество витков в ней Npri=sqrt(Lpri/L0)
Ну и кроме того, как правило, 12В обмотка транса АТХ выдает 24В амплитудного. Т.е. если загнать D в максимум (1-deadtime), поставить двухполярный выпрямитель и выкинуть трансель, то на выходе будет двухполярка +-24В. Можно собрать источник на 2153 (тока частоту нужно сделать такой же, как в блоке, откуда транс выдран). Также мона собрать такой источник, померить сколь на выходе, и если не устраивает — перемотать вторичку. При сматывании старой вторички можно определить сколько у транса вольт на виток и перемотать как обычный 50-герцовый.
Опять же, поскольку фабричный транс — это хорошо, то недостаток напряжения можно компенсировать не перемоткой, а повышением напряжения первичной цепи. Для этого достаточно поставить перед питальником ККМ с выходом вольт на 400. Заодно КМ питальника улучшится. Тут мона применить TEA1713 вместо IR2153.
  • avatar
  • Vga
  • 16 июля 2011, 00:27