Главная arrow Программирование arrow AVR arrow AVR Studio + avr-gcc: как в Makefile задавать и препроцессором проверять тип используемого AVR Tuesday, November 21 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

AVR Studio + avr-gcc: как в Makefile задавать и препроцессором проверять тип используемого AVR Версия для печати
Написал microsin   
09.02.2010

В проектах AVR Studio + AVR GCC (из пакета WinAVR) часто используют Makefile, в котором задается тип микроконтроллера AVR. В тексте программы бывает нужно с помощью препроцессора проверить, какой сейчас задан тип процессора, и в зависимости от этого выбрать нужный текст для компиляции.

Обычно тип процессора задается в Makefile таким способом:

#MCU = atmega8
MCU = atmega16
#MCU = atmega48
..
COMMON = -mmcu=$(MCU)
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -fsigned-char
..
## Compile
main.o: ../main.c
    $(CC) $(INCLUDES) $(CFLAGS) -c  $<

Чтобы задать тип процессора, раскомментируют одну из строчек "MCU = ..", и потом тип процессора передается компилятору через переменную мейк-файла CFLAGS и опцию -mmcu. В тексте программы необходимо включить файл <avr/io.h>, который проверяет тип процессора и в зависимости от него включает нужные заголовочные файлы.

Чтобы в программе самому проверить тип микроконтроллера с помощью препроцессора avr-gcc, нужно добавить код наподобие следующего:
#if defined (__AVR_ATmega8__)
    //тут код для ATmega8
    ..
#elif defined (__AVR_ATmega16__)
    //тут код для ATmega16
    ..
#elif defined (__AVR_ATmega48__)
    //тут код для ATmega48
    ..
#else
#  error "device type not defined"
#endif

Имена макросов типа __AVR_ATmega8__, __AVR_ATmega16__ и т. д. можно подсмотреть в файле c:\WinAVR-20090313\avr\include\avr\io.h. Имена макросов жестко вшиты в исполняемый файл avr-gcc (см. c:\WinAVR-20090313\libexec\gcc\avr\4.3.2\cc1.exe, cc1obj.exe, cc1plus.exe), прочитать про их использование можно в файле c:\WinAVR-20090313\doc\avr-libc\avr-libc-user-manual\using_tools.html.

Последнее обновление ( 09.02.2010 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017