Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с IARом
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Karl
Следующий код:

#include <iom16.h>

int main( void )
{
PORTD = 1<<PD0;
return 0;
}

Компилятор выдает ошибку:
Error[Pe020]: identifier "PD0" is undefined D:\Projects\avr_c\IAR_projekts\test1\main.c 5
andrvisht
Цитата(Karl @ Nov 1 2005, 08:15)
Следующий код:

#include <iom16.h>

int main( void )
{
    PORTD = 1<<PD0;
    return 0;
}

Компилятор выдает ошибку:
Error[Pe020]: identifier "PD0" is undefined D:\Projects\avr_c\IAR_projekts\test1\main.c 5
*


General Options/system/Enable bit definitions in I/O include files

По крайней мере в 4.11 здесь находится.
Karl
Цитата(&-rey @ Nov 1 2005, 11:07)
Цитата(Karl @ Nov 1 2005, 08:15)
Следующий код:

#include <iom16.h>

int main( void )
{
    PORTD = 1<<PD0;
    return 0;
}

Компилятор выдает ошибку:
Error[Pe020]: identifier "PD0" is undefined D:\Projects\avr_c\IAR_projekts\test1\main.c 5
*


General Options/system/Enable bit definitions in I/O include files

По крайней мере в 4.11 здесь находится.
*



Спасибо.
Karl
Необходимо поместить функцию по конкретному адресу в памяти.
Делаю это следующим образом:
void boot_test(void) @0x1c00;
...
void boot_test(void) @0x1c00
{
...
}

Компилятор ругается:
Error[Be011]: location address not allowed for functions

В чем проблема? Вроде раньше пробовал - работало?
Old1
Цитата(Karl @ Feb 15 2006, 08:21) *
Необходимо поместить функцию по конкретному адресу в памяти.
Делаю это следующим образом:
void boot_test(void) @0x1c00;
...
void boot_test(void) @0x1c00
{
...
}

Компилятор ругается:
Error[Be011]: location address not allowed for functions

В чем проблема? Вроде раньше пробовал - работало?

Таким образом по заданному адресу можно разместить переменную или строку.
С функцией можно сделать так. Сначала создать свой сегмент памяти, размещаемый в диапазоне адресов который вам нужен. Затем в него поместить функцию. Если функция в этом сегменте будет одна, то ее тело фактически будет начинаться с адреса начала сегмента.
1.Создем сегмент. В настройках проекта в разделе linker, в закладке extra options вставляем строку (например):
Цитата
-Z(CODE)MYSEGMENT=1C00-1CFF

1C00-1CFF - это диапазон адресов под создаваемый сегмент.
2.Определяем функцию (например так):
Код
#pragma location="MYSEGMENT"
void Funk (void)
{
  //.......
}

или так:
Код
void Funk (void) @"MYSEGMENT"
{
  //.......
}
Karl
Благодарю, все заработало w00t.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.