реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> IAR AVR Как в програме определить камень, Processor configuration --cpu= xxxx
_yura_
сообщение Jun 27 2012, 06:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 24-08-06
Из: Украина/Чернигов
Пользователь №: 19 811



Доброго времени суток

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

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

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

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

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

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

Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 27 2012, 08:43
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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, в котором все эти вещи уже определены, достаточно указать только процессор.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_yura_
сообщение Jun 27 2012, 12:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 24-08-06
Из: Украина/Чернигов
Пользователь №: 19 811



Спасибо
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 3 2012, 16:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(_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
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 3 2012, 17:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(SasaVitebsk @ Jul 3 2012, 19:33) *
Код
#if __ATmega88__
#include    "iom88.h"

Не хватает WDTCR/WDTSCR и EEPROM-а, может ещё чего...
А вообще жаль что в IAR подобного хидера не входит.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 4 2012, 20:20
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



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

Не понял в смысле EEPROMа, а вообще-то у меня всё хватает. biggrin.gif
Я писал хидер так, что любой камень компилировался и грамотно работал, кстати. Самое смешное, что при правильном написании проги работает несмотря на то, что у atmega8 объединённый регистр флагов таймеров, а у atmega88 на каждый таймер свой. Ну и так далее.
Это какая-то стартовая версия по бутлоадеру ... biggrin.gif В последствие я её привёл в порядок. Она обеспечивала совместимость там, где это принципиально возможно ...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 4 2012, 21:10
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(SasaVitebsk @ Jul 4 2012, 23:20) *
Не понял в смысле EEPROMа, а вообще-то у меня всё хватает. biggrin.gif

Ну еепром у мег8 и мегх8 тоже одинаково работает, только флаги называются по-разному.
Но эта проблема возникает если не использовать встроенные функции для чтения/записи от IAR (я не использую).
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016