Среда разработки 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.

 

 

 

Запускаем или останавливаем симуляцию.

 

 

 

йййцй