Среда разработки Code VisionAVR
Программы для МК можно писать на различных языках программирования, начиная с ассемблера и Си и заканчивая такими высокоуровневыми языками, как Java или С#.
Соответственно, существует большое количество сред разработки ПО и компиляторов (AVR Studio, Atmel Studio, IAR, Win Avr, Arduino Studio и.т.д.).
CVAVR удобен тем, что не требует глубокого знания и понимания процесса компиляции программ и удобен для начального изучения принципов программирования МК.
Для создания нового проекта необходимо нажать иконку
шестерни в одной из верхних панелей.
В открывшемся диалоговом окне убедиться, что помечен радиобаттон AT90, ATtiny, ATmega и нажать OK.
Далее открывается, в котором можно выбрать тип МК, частоту его работы и задать желаемую конфигурацию используемого оборудования. Эта конфигурация позволит мастеру сразу сгенерировать программный код с заданными при конфигурации настройке .
Выбираем ATmega16, а частоту оставим без изменения.
Далее запускаем мастер генерации проекта. Для этого необходимо нажать иконку шестерни (Generate program, save and
exit) в верхней панели CodeWizardAVR. Лучше всего завести
отдельную папку для каждой группы студентов и для каждой
лабораторной, чтобы не смешивать файлы.
После настройки отдельных портов программа управления светодиодом может иметь вид:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 23.11.2016
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 4,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
// Declare your global variables here
void main(void)
{ int i;// объявляем локальную переменную
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
DDRC.0=1;// настраиваем выход РС0 на вывод информации;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
// Place your code here
for(i=0;i<2000;i++) ; // задержка
PORTC.0=0;// гасим диод
for(i=0;i<2000;i++);// задержка
PORTC.0=1; // зажигаем дид
}
}
После компиляции загрузочный модуль (в нашем случае Simple.hex) будет находится в папке проекта EXE. Файл необходимо в дальнейшем надо записать в флэш память МК.
Компания Atmel разработала эмулятор микропроцессоров AVRStudio, который удобно использовать для отладки.
Программу набранную, в CodeVision можно импортировать для отладки в AVRStudio.
Для этого после установки AVRStudio в среде CodeVision необходимо нажать кнопку "красного жука"
После этого запустится AVRStudio, в котором надо открыть файл с именем программы и расширением .cof из папки проекта CodeVision. После этого можно переходить к отладке программы. Пошаговый режим задается клавишей F11.
В AVRStudio можно пошагово выполнить программу, оценит значение изменяющихся переменных, состояние регистров и портов ввода-вывода МК.
Программа в AVRStudio будет обновляться каждый раз после компиляции в CodeVision.
3. Среда эмуляции Proteus и загрузка программы.
Программа Proteus по принципу работы напоминает программу Electronics Workbench Multisim.
Ниже приведено основное окно программы ISIS с пояснениями по назначению основных элементов интерфейса
Упрощенно, работа в среде моделирования Proteus состоит
из следующих пунктов:
1. Размещение на чертежном поле необходимых элементов электрической принципиальной схемы (ЭПС) и задание их параметров функционирования.
2. Выполнение соединений элементов ЭПС.
3. Размещение виртуальных приборов там, где это необходимо, выбор режимов их работы.
4. Загрузка программы
5.Симуляция или проведение специализированного анализа.
5. Выполнение отладки программ микроконтроллеров
Для выбора компонентов необходимо нажать кнопку Р в окне предосмотра. Кнопка L позволяет подгружать новые компоненты .
В категории Микроконтроллеры выбираем требуемый ATmega16.
Дополнительно размещаем на рабочем поле светодиод из раздела "Optoelectronics", а также резисторы и кнопку.
Для размещения клемм питания, необходимо в левой
боковой панели выбрать режим Terminals mode и в появившемся
справа списке поочередно выбрать Power и Ground, размещая их
щелчками мыши на чертежном поле. Подключаем необходимые приборы.
Соединяем элементы.
Программируем микроконтроллер.
Для этого два раза счелкаем по МК и в открывшемся окне выбираем папку, где находится наш файл с расширением hex Simple.hex.
Запускаем или останавливаем симуляцию.
йййцй