Главная О сайте Контакты

Справка по работе с программой

ATmegaConfig 3.06

Программа ATMegaConfig предназначена для генерации кода настроек аппаратных модулей процессоров AVR фирмы Atmel. Файлы, генерируемые программой, предназначены для использования в среде «IAR Embedded Workbench for Atmel AVR». Для успешной генерации требуемого кода необходимо выбрать используемый процессор, а так же его тактовую частоту. Далее можно генерировать заготовки файлов для каждого из поддерживаемых аппаратных модулей на соответствующих вкладках основного окна программы.

Работа с программой

  1. Создайте основные файлы проекта. Для этого на вкладке «Опции» выберите тип процессора, частоту кварца и название проекта. Далее нажмите «Ctrl+G» для создания главного фала проекта и сохраните получившийся код нажав «Ctrl+S». Нажмите «Ctrl+H» для создания фала конфигурации config.h и сохраните получившийся код нажав «Ctrl+S». Создайте проект в среде «IAR Embedded Workbench for Atmel AVR», настройте его и подключите созданные файлы — основа будущего проекта готова.
  2. Зайдите на вкладки аппаратных модулей, необходимых для вашего проекта, задайте нужные вам настройки. Создайте и сохраните C и H файлы этих модулей с помощью комбинаций «Ctrl+G» и «Ctrl+H». Подключите файлы к проекту в среде разработки. Рыба вашего проекта готова!
    Более подробное описание вкладок программы смотрите ниже.

Вкладка «Опции»

«Процессор/Тип» - выбор типа процессора. Раскрывающийся список содержит все процессоры известные программе. Дополнить этот список Вы сможете самостоятельно, инструкцию по добавлению процессоров можно прочитать ниже.

«Процессор/Частота (МГц)» - выбор тактовой частоты работы процессора. Раскрывающийся список содержит предопределенные значения частот в мегагерцах. Дополнить этот список Вы сможете, отредактировав файл «frequencies.txt» в каталоге с программой. Этот файл создается после первого запуска программы.Так же возможен ввод частоты вручную. Для чисел с десятичной дробью используйте точку в качестве разделителя.

«Проект/Имя файла проекта» - имя главного файла проекта, содержащего функцию main. Это имя будет использовано при сохранении файла «main.c».

Вкладка «Таймер»

«Таймер/Номер» - содержит номера таймеров, доступных для выбранного процессора.

«Настройки/Предделитель» - выбор предделителя для выбранного таймера.

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

«Настройки/Прерывание» - выставьте галочку, чтобы использовать прерывания по переполнению таймера.

«Выходы» - к каждому таймеру можно аппаратно подключить некоторое количество выводов процессора. По умолчанию все выходы отключены.

Вкладка «UART»

«UART/Номер» - содержит номера модулей, доступных для выбранного процессора.

«Настройки/Скорость передачи (bps)» - содержит список стандартных частот работы модуля. Дополнить этот список Вы сможете, отредактировав файл «baudrates.txt» в каталоге с программой. Этот файл создается после первого запуска программы. Так же возможен ввод скорости передачи вручную, для этого введите скорость (в bps) в виде целого числа.

«Настройки/Удвоение скорости» - выставьте галочку, чтобы модуль работал на удвоенной скорости. Этот параметр может повлиять на точность частоты работы модуля — внимательно следите за сообщениями программы в окне генерации кода.

«Настройка/Проверка на четность» - управление аппаратной проверкой четности модуля.

«Настройка/К-во бит данных» - определяет количество бит данных в передаваемом пакете, возможные значения от 5 до 9.

«Настройка/К-во стоп бит» - определяет длину стопового бита в пакете.

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

«Прием» - разрешение работы модуля на прием данных. Возможна генерация прерывания по окончанию приема байта.

Вкладка «SPI»

«Режим» - возможны два режима работы модуля Master и Slave. В соответствии с выбранным режимом изменятся направления линий интерфейса в группе «Линии».

«Лини» - в этой группе содержится описание линий модуля SPI выбранного процессора. Существует возможность не использовать выходные линии модуля, для этого снимите галочки «исп.» напротив них.

«Настройки/Порядок бит» - определяет порядок следования бит (младшим или старшим битом вперед).

«Настройки/Частота» - содержит список возможных частот работы модуля, в зависимости от выбранного тактовой частоты процессора.

«Настройки/Скорость х2» - удвоение частоты работы модуля. При выборе этой опции изменится список возможных частот.

«Настройка/Прерывание» - выставьте галочку, чтобы использовать прерывания модуля.

«Начальный уровень SCK» - уровень сигнала SCK в отсутствии сигнала.

«Фаза захвата данных SCK» - задает фронт, по которому осуществляется захват сигнала приемником.

Вкладка «TWI»

«Настройки/Прерывание» - выставьте галочку, чтобы использовать прерывания модуля.

«Настройки/Частота» - здесь можно выставить требуемую частоту работы модуля в режиме ведущего. Частота должна находиться в пределах между максимально и минимально возможными значениями. Минимум и максимум можно увидеть, нажимая соответствующие кнопки рядом с окошком ввода частоты.

«Настройки/подтяжка линий SCL и SDA» - выставляя данные галочки, можно подключить внутренние подтягивающие резисторы на соответствующие линии. В ряде случаев это может позволить обойтись без внешних резисторов.

«Режим приёмника/Адрес» - адрес устройства в режиме приёмника может находиться в диапазоне от 1 до 127. Нулевой адрес зарезервирован под широковещательные пакеты.

«Режим приёмника/Приём широковещательных пакетов» - выставьте галочку для приёма пакетов, адресованных всем устройствам на линии (адрес пакета равен нулю).

«Режим приёмника/Выставлять бит подтверждения» - устройство будет автоматически подтверждать приём, адресованных ему пакетов.

«Код/Создать набор функций» - при выставленной галочки, будет сгенерирован набор функций упрощающий работу с модулем в режимах ведущего приёмника и передатчика.

Вкладка «АЦП»

«АЦП/Вход» - содержит список входных каналов модуля, доступный для данного процессора.

«Настройки/Запуск преобразования» - содержит список событий по которым будет запущено однократное преобразование. Здесь же можно выбрать режим непрерывного преобразования.

«Настройки/Выравнивание результата» - большинство модулей имеют разрядность 10 бит. Результат их преобразования заносится в 16-ти битный регистр с выравниванием вправо или влево.

«Настройки/Опорное напряжение» - содержит список возможных источников опорного напряжения для модуля.

«Настройки/Отключить цифровые буферы» - опция доступна для более новых процессоров, позволяет уменьшить шумы на входе модуля.

«Настройки/Прерывание» - выставьте галочку, чтобы использовать прерывания модуля.

«Преобразование/Частота» - содержит список возможных частот работы модуля, в зависимости от выбранного тактовой частоты процессора. Atmel рекомендует выбирать частоту работы модуля в пределах 50-200кГц. Программа по возможности сама выберет оптимальное значение.

Вкладка «Компаратор»

«Линии» - в этой группе содержится описание линий модуля для выбранного процессора, а так же значение опорного напряжения, которое можно подключить к входу AIN0 прямо внутри процессора.

«Настройки/Режим» - содержит список событий срабатывания модуля:

  • Возрастающий фронт — состояние выхода компаратора изменилось с нуля на единицу;
  • Спадающий фронт — состояние выхода компаратора изменилось с единицы на ноль;
  • Переключение — любое изменение состояния выхода компаратора.

«Настройки/Подключить Vref к AIN0» - вместо входной линии ко входу компаратора будет подключен внутренний источник напряжения.

«Настройки/Подключить к таймеру Т1» - таймер счетчик Т1 будет принимать выходной сигнал компаратора.

«Настройки/Отключить цифровые буферы» - опция доступна для более новых процессоров, позволяет уменьшить шумы на входе модуля.

«Настройки/Прерывание» - выставьте галочку, чтобы использовать прерывания модуля.

Вкладка "Прерывания"

Вкладка предназначена для генерации обработчиков внешних прерываний. Для каждого прерывания INTn генерируется своя пара .c .h файлов. Для прерываний PCI генерируются обработчики для каждой группы.

Вкладка «Порты»

Вкладка предназначена для генерации кода настройки портов ввода/вывода. На данной вкладке возможно генерировать только заголовочные файлы, содержащие набор команд для работы с портами. Такой файл удобно создавать для различных модулей программы, таких как UART или АЦП, и описывать в нем линии используемые модулем. Далее при переносе модуля в другой проект, Вам не придется искать названия портов по всем файлам модуля – достаточно будет поправить названия регистров и номер бита всего в одном месте.

«Имя раздела» - Задайте имя раздела для создания уникального имени заголовочного файла.

«Настройка/Имя линии ввода/вывода» - имя линии может содержать пробелы, они будут заменены на знак подчеркивания.

«Настройка/добавить имя бита» - к имени линии будет добавлено имя бита заданного в настройках.

«Настройка/Порт», «Настройка/Бит» - для каждого процессора доступен строго определенный набор линий ввода/вывода.

«Настройка/Добавить» - добавляет описание следующей линии ввода/вывода в уже сгенерированный заголовочный файл. При этом имя линии и номер бита будут увеличены для удобства введения описаний шин данных.

«Настройка/Сменить порядок при добавлении бита» - определяет обратный (декрементный) порядок следования бит в шине.

Пример использования — описание линии опроса кнопки, подключенной по схеме «ключ на корпус». Описание возможных вариантов использования линии в заголовочном файле (создано генератором кода):


//========  key  ========
//Установка регистров порта
#define KEY_DDR  DDRB
#define KEY_PORT PORTB
#define KEY_PIN  PINB
#define KEY_BIT  4


//инициализация линии (бита)
#define key_output()  (KEY_DDR  |=   (1 << KEY_BIT))
#define key_input()   (KEY_DDR  &= (~(1 << KEY_BIT)))
#define key_pullup()  (KEY_PORT |=   (1 << KEY_BIT))
//использование линии (бита)
#define key_hi()      (KEY_PORT |=   (1 << KEY_BIT))
#define key_low()     (KEY_PORT &= (~(1 << KEY_BIT)))
#define key_invert()  (KEY_PORT ^=   (1 << KEY_BIT))
#define key_state()   (KEY_PORT  &   (1 << KEY_BIT))
#define key_in()      (KEY_PIN   &   (1 << KEY_BIT))
#define key_pressed() ((~KEY_PIN)&   (1 << KEY_BIT))

Использование в коде:

void main(void) {
  
//Секция инициализации
  key_input();  //Описание линии, как входной
  key_pullup(); //Подключение подтягивающего резистора к линии


//Работа программы
  for(;;) {
    
    if (key_pressed()) {

    //… действие по нажатию на кнопку

    }
  }
}

Правила добавления новых процессоров для ATMegaConfig:

  1. Добавьте пустой файл «newproc.proc» в директорию /proc. Теперь процессор «newproc» будет доступен для выбора в ATMegaConfig. Вы сможете генерировать код для этого процессора с параметрами по умолчанию.
  2. Для изменения параметров процессора, добавьте в созданный файл строки вида:

#parameter_name(parameter_number) [parameter_value] some_comments

«parameter_name» ключевое слово параметра (список возможных слов приведен ниже);

«parameter_number» номер параметра, используется только для некоторых ключевых слов;

«parameter_value» слово, цифра, список разделенный запятой или что-либо еще - см. описание ниже;

«some_comments» любой текст - комментарий.

Примеры:


#iom_h [iousb1287.h] 
  //определяет заголовочный файл для AT90USB1287 
  //в среде IAR Embedded Workbench
#timers_specific_prescaler_list(1) [1,8,64,256,1024] 
  //определяет специфический набор делителей 
  //общего предделителя для таймера 1
  

Ниже перечислены доступные параметры с значениями по умолчанию. Используйте их только если значения по умолчанию нужно изменить.


«Таймеры»
#timer_numbers [4]
  //определяет количество таймеров процессора;
#timers_with_common_prescaler [0,1]
  //определяет список таймеров с общим предделителем;
#timers_common_prescaler_list [1,8,64,256,1024]
  //определяет набор делителей общего предделителя;
#timers_specific_prescaler_list(n) []
  //определяет специфический набор делителей общего 
  //предделителя для таймера n;
#timer_register_set [std]
  //используйте «extended» для новых процессоров,
  //будут использованы шаблоны регистров 
  //'TCCRnB' и 'TIMSKn';
#T02_prescaler_CS_register [TCCRB]
  //используйте «TCCRA» если биты CSn0 — CSn2
  //находятся в регистре TCCRnA;
#use_int01_tN_ovfN_pattrn [no]
  //установите «yes» для использования шаблона
  // вектора прерывания 'TIMERn_OVFn_vect' для T0, T1
#timer_OC_name_A(n) [B0]
  //установите имя порта и номер бита
  //вывода 'A' ('B','C') таймера n. 
  //Этот параметр следует описывать 
  //для всех существующих в процессоре выводов таймеров.
  //Значений по умолчанию не существует!

«UART»
#UARTs_available [0]
  //определяет список доступных UART
  //(номера через запятую);
#use_number_in_UART_registers [no]
  //установите «yes», чтобы использовать номер UART
  //в именах регистров (например UDR0),
  //или установите «yes except interrupts» 
  //для использования номеров только в регистрах
  //(вектора прерываний без номера);
#UCSRC_UBRRH_address [differ]
  //установите «match» для регистров UCSRC и UBRRH,
  //расположенных по одному адресу;
#UBRRHI_pattern [no]
  //установите «yes», чтобы использовать шаблон 'UBRRHI+UBRRn'
  //для 16-битного регистра UBRR 
  //(стандартный шаблон 'UBRRnH+UBRRnL');
#UART_interrupt_prefix_C [yes]
  //установите «no» для использования 
  //имен векторов прерываний UART без префикса 'C';
#UART_parity_and_stop [available]
  //установите «fixed» для процессоров,
  //не имеющих регистра 'UCSRnC' 
  //(такие процессора всегда используют
  //только один стоп бит, а 8ой 
  //бит в качестве бита четности);
#UART_interrupt_name [USART]
  //определяет первую часть имени вектора прерываний,
  //если отличается от USART.
  
«SPI»
#SPI_MISO_line [B3] //установите имя линий MISO, MOSI,
#SPI_MOSI_line [B2] //SS, SCK, если они отличаются от
#SPI_SCK_line [B1]  //значений по умолчанию.
#SPI_SS_line [B0]

“TWI”
#TWI_available [yes]
  //определяет наличие модуля TWI,
  //установите «no», если модуль отсутствует;
#TWI_SCL_line [C5]  //установите имя линий SCL, SDA, если
#TWI_SDA_line [C4]   //они отличаются от значений по умолчанию.

«АЦП»
#ADC_available [yes]
  //определяет наличие модуля АЦП,
  //установите «no», если модуль отсутствует;
#ADC_channels_set [std]
  //определяет набор каналов АЦП. 
  //Возможны следующие значения:
  // - «std» 8 несимметричных каналов
  //   + набор дифференциальных пар с различными
  //   коэффициентами усиления (значение по умолчанию);
  // - «extended» 16 несимметричных каналов
  //   + набор дифференциальных пар с различными
  //   коэффициентами усиления;
  // - «short» 8 несимметричных каналов;
  // - «short+» 8 несимметричных каналов
  //   с использованием 5-ти битового мультиплексора
  //   (постоянные напряжения расположены 
  //   так же как во варианте 'std');
#ADC_bandgap_reference_value [1.1]
  //определяет величину опорного напряжения,
  //используемого для тестирования модуля АЦП, в Вольтах;
#ADC_modes_set_limited [no]
  //установите «yes», если набор режимов работы АЦП
  //ограничен двумя режимами: 
  //непрерывного преобразования
  //и одиночного преобразования;
#ADC_internal_reference_value(0) [reserved]
  //определяет величину напряжения
  //нулевого источника опорного напряжения,
  //для большинства моделей зарезервирвано;
#ADC_internal_reference_value(1) [2.56]
  //определяет величину напряжения первого
  //источника опорного напряжения, 
  //для некоторых моделей используется напряжение 1.1В;
#ADC_digital_input_available [yes]
  //установите «no» для старых процессоров
  //без возможности отключать цифровые буфферы
  //от используемых входов АЦП;
#ADC_ADCSRA_register_name [ADCSRA]
  //установите имя этого регистра,
  //если оно отличается от ADCSRA;
#ADC_ADATE_bit_name [ADATE]
  //установите имя этого бита,
  //если оно отличается от ADATE;
#ADC_ADCSRB_register_name [ADCSRB]
  //установите имя этого регистра,
  //если оно отличается от ADCSRB;

«Компаратор»
#Comp_ain_pin(n) [E2]
  //укажите имена линий ввода 
  //для входов компаратора AIN0 AIN1. 
  //Значения по умолчанию E2, E3;
#Comp_Vref_value [1.1]
  //напряжение внутреннего источника напряжения в вольтах.
  //Носит чисто справочный характер.
#Comparator_digital_input_available [yes]
  //определят возможность отключения цифровых буфферов.
  //Отсутствует в более старых моделях процессоров.

«Прерывания»
#Ext_interrupts_value [8]
  //укажите количество линий внешних прерываний
#PCInt_groups_value [0]
  //укажите количество гупп внешних прерываний PCInt.
#Ext_interrupts_avail_register [EIMSK]
  //укажите имя регистра разрешения внешних прерываний
#PCInt_avail_register [PCICR]
  //укажите имя регистра разрешения внешних прерываний PCInt
#Ext_interrupts_condition_register [EICRA]
  //укажите имя регистра определения условия генерации прерывания
#Ext_int2_is_special [no]
  //прерывание INT2 является асинхронным
  //может быть сгенерировано только по изменению уровня сигнала
#Ext_int2_register [MCUCSR]
  //укажите имя регистра определения условия генерации прерывания INT2
#PCInt2_handler_available [yes]
  //в некоторых процессорах обработчик прерывания INT2 не доступно
#PCInt_bit_disable(n) [yes]
  //определите недоступные для использования линии прерываний PCInt
  //по одному биту в строке
  //по умолчанию все биты разрешены
  //например, в ATMega48 не доступен бит PCINT15 - n=15

«Порты»
#Ports_names [A,B,C,D]
  //укажите доступные для процессора порты через запятую;
#Bits_in_port(A) [8]
  //для каждого порта укажите количество бит,
  //если оно меньше восьми;
  

Лицензия Creative Commons
Содержимое сайта www.hawkit.ru созданное автором по имени Александр Матяш, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Разрешения, выходящие за рамки данной лицензии, могут быть доступны на странице: контакты.