Вы не вошли.
Наконец решился заняться МК. Начал с Си, но потом понял, что пишу тупо повторяя кем-то уже наработанные алгоритмы без ПОЛНОГО понимания работы МК.
Забросил Си, сейчас разбираюсь в Ассемблере.
Вне форума
Народ, недавно стал вопрос: Как в AVRStudio собрать проект из нескольких файлов? В хелпе по поводу директивы #include "file" написано до обидного мало. Интересует больше сам формат подключаемых файлов. Необходимы ли в них директивы .DSEG и .CSEG? Я пробовал брать простые програмки типа мигалки светодиодом и, допустим, подпрограмму переключения светодиода выносить в отдельный файл. Однако при компиляции выскакивают ошибки на конфликт адресов.
Какие особенности сборки проектов??
......There is someone in my head, but it's not me.......
Вне форума
В МПЛАБ для ПИК-ов было два прикола
- Можно начинать включаемый модуль директивой "org", которая задает адрес, с которого модуль будет расположен в памяти программ.
- С другой стороны, делал так - в осн. листине делал строки "include" в самом конце. При таком раскладе компилятор вначала складывал в память программ код основного листинга, а потом уже код инклюдов. Единственное, если я определял какие-то переменные в инклюдах, а использовал их в основном листинге, приходилось их определять в отдельном файде определений, а его "инклюдить" в самом начале основного листинга, аналогично файлу определений мнемоники от микрочипа...
Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....
Вне форума
Я тоже так пробовал. В принципе, что-то получалось, но...
Допустим есть у меня процедурка работы с LCD. Я эту прогу так посторил. Есть подпрограмма выдачи байта на LCD и подпрограммка проверки BF. И есть макросы, типа Put_char 'A', в которых устанавливается адресация к регистру данных или команд ЖК, нужный байт (код символа или команда) кладется в регистр и вызывается подпрограмма передачи. Т.е. в этой процедуре есть макросы и подпрограммы. Если #include поставить в начало, после файла описания регистров вылетают конфликты адресов. Если в конец, все компилиться, но выскакивают ошибки "unknown instructions or macro" (Я пытаюсь макросы из модуля LCD юзать в основной проге). Написал Liv'у, но он что-то молчит, видимо не получил письмо.
Попробую с директивой .org
......There is someone in my head, but it's not me.......
Вне форума
Вот. Прямо сразу и пишу. Попробовал директиву .org. После описания макросов в подключаемом файле написал
.org 0xFF
и дальше пошел ассемблерный код.
В самом начале основного листинга поставил инклуде
Все заработало, и макросы и подпрограммы из подключенного файла.
Теперь бы разобраться, с каких адресов начинать модули (FF я от балды написал )
......There is someone in my head, but it's not me.......
Вне форума
... выскакивают ошибки "unknown instructions or macro" (Я пытаюсь макросы из модуля LCD юзать в основной проге).
У меня тоже так было, когда пытался вызывать определения и флаги из вложенных модулей. Я ж пишу - отдельный файл ОПРЕДЕЛЕНИЙ и его инклюдить вначале. А то ведь получается, что компиятор в Вашем "основном" листинге находит вызов параметра "ВАСЯ", а параметр "ВАСЯ" определяется в инклюде "КОЛЯ", который "аж где-то там". Вот и ошибка.
А по уму (мой метод - по колхозному) вообще-то нужно разобраться с такой штукой как GLOBAL (это в МП ЛАБе такой переменной в иклдах пределяют "понятия", используемые во всем проекте, не только внутри инклюда). Думаю у АВР тоже должно быть что-то аналогичное.
Теперь бы разобраться, с каких адресов начинать модули (FF я от балды написал )
Когда я пытался этим методом решать, то в принципе смотрел выходной листинг, на предмет, где "пошел порожняк" и выбирал адрес чуток поболее. В принципе, можно пытаться его уменьшать и ждать сообщений об ошибках от компилятора. Нет матков - снова уменьшаем адрес, есть - значит перестарались, возвращаем тот что был поболее.
Правда, то ли ЛИВ, толи Торрес меня поругал за такое - и правильно. Поменяешь две строки в одном из файлов - потом заново всему проекту адреса подбирать..
Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....
Вне форума
Да, все-таки подход довольно колхозный получается с этими адресами, а бить модуль на части, чтоб вынести макросы вверх, не хочется. Он представляет собой логически завершенную прогу. Написал Liv'у еще раз, но что-то у меня с почтой, при отправке крякозябры лезут.
......There is someone in my head, but it's not me.......
Вне форума
Вне форума
Пару вопросов возникло:
1) Наконец то выяснил, что значит эвалюэйшн у ChipBlaster AVR - программатор из состава Code Vision, но идущий отдельно. Когда код переваливает через пол/кристалла, он отказывается его программировать.
Никто не знает, как его вылечить? (CV устанавливать не хочу)
2) Строит ли кто блок-схемы алгоритмов? Если да, то какими критериями пользуется. Или, ( у мня в основном так) что видится, то и поется? Начало всегда почти как у Баха, а потом на кан-кан переходит .
Отредактировано Vasil (21.01.2008 21:19:14)
Вне форума
я не строю...
что вижу то пою...
сильно сложных прог пока нет.., мож поэтому ?
хватает все в голове держать
Вне форума
[ Сгенерировано за 0.206 сек, 9 запросов выполнено - Использовано памяти: 617.65 Кбайт (Пик: 668.02 Кбайт) ]