Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR AVR Как в програме определить камень
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
_yura_
Доброго времени суток

В настройке проекта есть опция
Processor configuration --cpu= xxxx

Как внутри проекта определить, что стоит вместо хххх

Вроде нашел --cpu=m32a (--cpu=m16a)

Как это привязать к #ifdef

(Достало при смене камня комментировать
#include <iom32a.h>
//#include <iom16a.h>)

Большое спасибо.

dxp
QUOTE (_yura_ @ Jun 27 2012, 13:28) *
В настройке проекта есть опция
Processor configuration --cpu= xxxx

Как внутри проекта определить, что стоит вместо хххх

Вроде нашел --cpu=m32a (--cpu=m16a)

Как это привязать к #ifdef

Задать явно с помощью макроса: -DCPU=xxx, макрос CPU будет доступен в директивах препроцессора точно также, как будто он был определён с помощью #define.

QUOTE (_yura_ @ Jun 27 2012, 13:28) *
(Достало при смене камня комментировать
#include <iom32a.h>
//#include <iom16a.h>)

В составе EWAVR есть файлик ioavr.h, в котором все эти вещи уже определены, достаточно указать только процессор.
_yura_
Спасибо
SasaVitebsk
Цитата(_yura_ @ Jun 27 2012, 15:10) *
Спасибо

Код
#if __ATmega88__
#include    "iom88.h"
#define    CPUID                Mega88
#define    FLASHSIZE            8
#define    __PORT88__
#elif __ATmega48__
#include "iom48.h"
#define    CPUID                Mega48
#define    FLASHSIZE            4
#define    __PORT88__
#elif __ATmega8__
#include "iom8.h"
#define    CPUID                Mega8
#define    FLASHSIZE            8
#define    TCCR2A                TCCR2
#define    TCCR2B                TCCR2
#define    TCCR0B                TCCR0
#define    OCR2A                OCR2
#define    TIFR2                TIFR
#define    OCIE2A                OCIE2
#elif __ATmega48P__
#include "iom48p.h"
#define    CPUID                Mega48PA
#define    FLASHSIZE            4
#define    __PORT88__
#elif __ATmega88P__
#include "iom88p.h"
#define    CPUID                Mega88PA
#define    FLASHSIZE            8
#define    USART_RXC_vector    USART_RX_vect
#define    __PORT88__
#endif
_Артём_
Цитата(SasaVitebsk @ Jul 3 2012, 19:33) *
Код
#if __ATmega88__
#include    "iom88.h"

Не хватает WDTCR/WDTSCR и EEPROM-а, может ещё чего...
А вообще жаль что в IAR подобного хидера не входит.
SasaVitebsk
Цитата(_Артём_ @ Jul 3 2012, 20:18) *
Не хватает WDTCR/WDTSCR и EEPROM-а, может ещё чего...
А вообще жаль что в IAR подобного хидера не входит.

Не понял в смысле EEPROMа, а вообще-то у меня всё хватает. biggrin.gif
Я писал хидер так, что любой камень компилировался и грамотно работал, кстати. Самое смешное, что при правильном написании проги работает несмотря на то, что у atmega8 объединённый регистр флагов таймеров, а у atmega88 на каждый таймер свой. Ну и так далее.
Это какая-то стартовая версия по бутлоадеру ... biggrin.gif В последствие я её привёл в порядок. Она обеспечивала совместимость там, где это принципиально возможно ...
_Артём_
Цитата(SasaVitebsk @ Jul 4 2012, 23:20) *
Не понял в смысле EEPROMа, а вообще-то у меня всё хватает. biggrin.gif

Ну еепром у мег8 и мегх8 тоже одинаково работает, только флаги называются по-разному.
Но эта проблема возникает если не использовать встроенные функции для чтения/записи от IAR (я не использую).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.