Студопедия — Теоретические сведения. Работа с компилятором Code Vision AVR C Compiler вполне типична для средств разработки
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Теоретические сведения. Работа с компилятором Code Vision AVR C Compiler вполне типична для средств разработки






Работа с компилятором Code Vision AVR C Compiler вполне типична для средств разработки. Для создания нового проекта необходимо выбрать File-New-Project и ответить Yes на вопрос о том, использовать ли CodeWizard.

В результате на экране появится окошко CodeWizard-а.

CodeWizard представляет собой очень удобное средство для генерации начального кода программы и предварительной настройки устройств МК – компаратора, АЦП, таймеров и др.

Выберите на закладке Chip микроконтроллер Atmega8, тактовую частоту оставьте без изменений.

Перейдите на закладку Ports и сконфигурируйте все ножки порта В, как высокоомные входы (In в состоянии Т), все ножки порта С – как входы с подтяжкой (In в состоянии Р), ножки 0-3 порта D – как выходы с низким уровнем, а ножки 4-7 порта D – как выходы с высоким уровнем.

Перейдите на закладку External IRQ и включите прерывание 0.

Перейдите на закладку Timers и включите таймер 0, выбрав частоту 500кГц. Включите прерывание по переполнению таймера.

Выберите File-Generate, save and exit, выберите папку для сохранения проекта и, введя имена для сохраняемых файлов, сохраните проект. Обратите внимание, что CodeWizad можно повторно запустить, выбрать нужные настройки и не сохраняя просмотреть текст программы (File-Program preview) и скопировать интересующий участок кода. Это может оказаться полезным при отладке программы.

После сохранения в окне навигатора в списке файлов проекта появится имя файла программы, а сам текст программы будет представлен в окне рабочего поля. Внимательно изучите текст программы, обращая внимание на комментарии и сравнивая установленные настройки устройств с указанными Вами в CodeWizad-е.

Существенно, что для работы с каждым 8-и битным портом ввода-вывода используется 3 регистра:

DDR x - регистр направления работы - вход или выход х - означает букву A, B, C, D, E... порта, по числу портов в конкретном МК.

PIN х - регистр содержит значения физических (т.е. реальных) уровней сигнала на соответствующих ножках МК, которые можно измерить вольтметром и преобразовать до 1 или 0.

PORT х - регистр в который записываются значения " 1" или " 0" - которые программист хочет получить на соответствующих ножках МК при назначении их выходом. Т.е. если соответствующий бит в регистре DDR x установлен (значит равен " 1"). Если бит в регистре DDR x равен " 0", а в такой же бит PORT х записана " 1" то " ножка" МК будет " входом с подтяжкой" т.е. к ней как бы подключен резистор примерно 40 кОм от питания МК.

Пока программа бесполезна, она ничего, кроме конфигурации контроллера, не делает, но ее можно скомпилировать нажав кнопку - выполнить полную компиляцию проекта. После компиляции появится информационное окно, в котором будет указано, что программа уже занимает некоторое количество флэш-памяти.

Загляните в папку проекта - в результате компиляции, там появилось много новых файлов, очень важные из которых: *.hex - файл-прошивка для загрузки в МК, *__.с - копия файла *.c для симуляторов и *.cof - информация связывающая содержимое файлов *__.с и *.hex.

Эти три файла удобно использовать в симуляторах VMLAB, PROTEUS и в других, чтобы наблюдать движение программы прямо по коду на языке Си.

Необходимым для реального МК является лишь файл прошивки - *.hex

Файлы *.asm, *.lst, *.vec, *.inc содержат программу, написанную на стандартном ассемблере для AVR, с привязкой к тексту на Си.

По мере написания текста программы можно выполнять проверку набранного текста нажимая кнопку , чтобы компилятор выявлял ошибки сразу и в малом количестве. В противном случае к концу написания программы может быть выдана гора сообщений об ошибках и хотя компилятор показывает место программы, где ошибка, может быть трудно вспомнить что этот участок делает и как исправить ошибку.

Добавьте в тело функции main операцию с двумя не объявленными переменными:

while (1)

{

// Place your code here

t=p+2

};

Нажмите кнопку компиляции проекта.

Внизу экрана в окне сообщений - Messages - появится сообщение только об одной ошибке. Сообщение содержит название файла и номер строки в которой обнаружена ошибка, а так же краткое описание ошибки.

Аналогичное сообщение появилось и в окне навигатора по проекту:

Если щелкнуть по сообщению, то будет подсвечена строка в тексте программы, содержащая ошибку.

Прим. 1. Подробно о переменных и тапах данных вы можете прочитать в help'е компилятора - раздел Variables и Data Types.

Прим. 2. Если переменная х была, например, объявлена так

unsigned char х;

и х имела значение 254 то после строки х = х + 3; ее значение станет 1 (десятичная единица), так как если прибавлять 3 раза по единице то значение х будет меняться так: вначале 255, затем 0, и наконец 1

Так меняются значения в регистре 8-ми битного таймера МК когда он " тикает" - т.е. считает. Итак, при " переполнении" диапазона допустимых для переменной значений происходит переход от максимального значения к минимальному и затем значение увеличивается далее. т.е. 255 затем 0 затем 1 затем 2 и так далее, по кругу. В обратную сторону - аналогично!

Если в свойствах проекта не убирать галочку:

 

то можете писать просто: char

Итак опишем переменную добавив:

char t;

перед главной функцией main()

Обратите внимание, что переменная объявлена, как глобальная.

Нажмите кнопку компиляции. Появится сообщение о том, что не описана переменная р.

Опишите её, и инициализируйте - т.е. присвойте ей значение при объявлении - число 0xFE - это 16-ричное представление десятичного числа 254:

char p = 0xFE, t;

В одну строку можно записать объявление нескольких переменных одного типа через запятую. После последней не забудьте поставить точку с запятой.

Если при объявлении глобальной переменной не присвоить ей значение, то она будет содержать 0.

Теперь обе переменные, будут беззнаковыми символьными, при этом:

t содержит число 0

p содержит (хранит) значение 254.

 

Нажмите кнопку для проверки синтаксиса. Компилятор сообщит нам о пропущенном символе;

Теперь проверка программы не выдает сообщений об ошибках и можно выполнить полную компиляцию программы.

Важно, что цикл

while (1)

{

// Place your code here

t=p+2;

};

будет выполняться до тех пор, пока на МК будет подано напряжение питания и пока будет отсутствовать сигнал сброса reset, т.к. условие выполнения цикла всегда истинно, т.е. переменной t каждый раз при выполнении цикла будет присваиваться значение р+2.

Прошивка файла с расширением hex в МК может быть осуществлена с помощью встроенного прошивальщика по нажатию кнопки . Необходимо только предварительно выбрать тип программатора Settings Programmer.







Дата добавления: 2014-11-10; просмотров: 634. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия