Страница 1 из 1

#ifdef и модель процессора и AtmelStudio

Добавлено: Пн ноя 27, 2017 06:55:05
pyatanov
Добрый день

Написал программу для (к примеру) attiny13. Прошло время. Та-же задача но надо больше ног. Изменяю код под новую микросхему. Естественно делаю примерно так

//#define TINY13
#define TINY24

#ifdef TINY13
#define RELE PORTB
#define RELE_1 0b00001000
#define RELE_2 0b00010000
#endif

#ifdef TINY24
#define RELE PORTA
#define RELE_1 0b00000001
#define RELE_2 0b00000010
#endif

ну и соответственно ниже так-же через #ifdef все инициализации.......
Перед компиляцией проекта я выбираю процессор для которого идет сборка. И комментирую/раскомментирую нужную строку с дефайном.
Внимание вопрос!
Создает - ли среда свой дефайн по которому можно определить для которого процессора идет компиляция, как это сделано с переменной режима debug - NDEBUG/DEBUG?

Re: #ifdef и модель процессора и AtmelStudio

Добавлено: Пн ноя 27, 2017 07:21:06
ARV
Вы бы уточнили, что за среда!
Разумеется, что-то есть. Например, AVR Studо всех версий определяют макрос типа __AVR_ATmega8__ или для вашего случая __AVR_ATtiny13__
только виден этот макрос не глобально, а через avr/io.h.

Re: #ifdef и модель процессора и AtmelStudio

Добавлено: Пт дек 01, 2017 08:25:14
pyatanov
Спасибо за подсказку

посмотрел строку компиляции. Обратил внимание на параметр -B
посмотрел файлы по указанному адресу.

в одном из файлов следующая строка

-D__AVR_ATtiny24A__ -D__AVR_DEVICE_NAME__=attiny24a -D__AVR_DEV_LIB_NAME__=tn24a


в программе пишем (я планирую использовать две микросхемы)

#ifdef __AVR_ATtiny24A__
#define F_CPU 8000000UL
#endif

#ifdef __AVR_ATtiny13A__
#define F_CPU 1200000UL
#endif

Для того что бы не пытаться откомпилировать программу для не правильного процессора пишем:

#if !defined(__AVR_ATtiny13A__) && !defined(__AVR_ATtiny24A__)
#error "UNSUPPORTED PROCESSOS. Select ATtiny13A or ATtiny24A"
#endif