AVR IAR

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

Доброго времени суток. программирую AVR на любительском уровне, в среде IAR. Вот понадобилось реализовать TWI интерфейс. Поскольку в МК уже есть данный модуль связи, решил делать аппаратно. С принципом протокола разобрался, суть как бы уловил. Но тут наткнулся на аппноут AVR 315, в котором есть "драйвер" для данной функции, и якобы написан под ИАР (Compiler: IAR EWAAVR 2.28a/3.10c). Так вот, закачанный мною драйвер был подключен в проект (.c и .h файлы), в мейне прописан инклюд... но вор при попытке компиляции я получаю ряд ругательств, что у меня не определены имена, или переменные, которые используются при установке битов. В подключенных файлах проекта есть некий iom8.inc где как я вижу это все определяется:

/* Timer/Counter Interrupt MaSK register */
#define OCIE2 7
#define TOIE2 6
#define TICIE1 5
#define OCIE1A 4
#define OCIE1B 3
#define TOIE1 2 и т.д.
но вот почему-то компиляция не проходит, и ИАР упорно не видит этих дефайнов, даже когда я копирую этот код непосредственно в мейн или файл драйвера...
Просьба не предлагать програмный вариант TWI или сменить среду програмирования. Кстати ИАР пробовал 5,5 и 6,1 версий, одинаковая ситуация.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Скопируйте текст ошибок из среды, возникающих при компиляции. Не понятно на что конкретно ругется ИАР.
Ставим плюсы: )
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

Вагон вот таких ошибок
Error[Pe020]: identifier "TWEN" is undefined M:\TWI\TWI_Master.c 421
Error[Pe020]: identifier "TWIE" is undefined M:\TWI\TWI_Master.c 422
Error[Pe020]: identifier "TWINT" is undefined M:\TWI\TWI_Master.c 422
Error[Pe020]: identifier "TWEA" is undefined M:\TWI\TWI_Master.c 423...
при клике по ошибке выводит на строчку где это имя встречается.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

вот код из драйвера
void TWI_Master_Initialise(void)
{
TWBR = TWI_TWBR; // Set bit rate register (Baudrate). Defined in header file.
// TWSR = TWI_TWPS; // Not used. Driver presumes prescaler to be 00.
TWDR = 0xFF; // Default content = SDA released.
TWCR = (1<<TWEN)| // Enable TWI-interface and release TWI pins.
(0<<TWIE)|(0<<TWINT)| // Disable Interupt.
(0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)| // No Signal requests.
(0<<TWWC); //
}

/****************************************************************************
Call this function to test if the TWI_ISR is busy transmitting.
****************************************************************************/
unsigned char TWI_Transceiver_Busy( void )
{
return ( TWCR & (1<<TWIE) ); // IF TWI Interrupt is enabled then the Transceiver is busy
}
как видно, эти дефайны заюзаны при настройке регистров...
Да, можно сесть, потратить минут 15 и заменить эти дефайны циферками вручную, но если менять камень - опять переделывать. Да и разобраться хочется))
Реклама
Эиком - электронные компоненты и радиодетали
uni
Встал на лапы
Аватара пользователя
Сообщения: 137
Зарегистрирован: Пт дек 07, 2007 11:17:40
Откуда: г. Екатеринбург

Сообщение uni »

Думается, дело в том, что в новых версиях IAR'а, не помню с какой начиная, эти константы были изменены для соответствия с AVR GCC компилятором. Теперь код на Си для этих двух компиляторов практически совместим, но в старом IAR коде нужно изменить все такие константы. Они отличаются несколькими буквами в каждом случае, нужно заглянуть в заголовочник мк и сделать замены.

Не нужно определять эти константы вручную или копировать из старого проекта, нужно подключить стандартный заголовочник и использовать их из него.

Можете прикрепить тестовый проект на iar6, исправим как надо.
Россия навсегда!
Контактная информация:
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

В настройке проекта необходимо поставить галку определения бит.
Изображение


Вот такой код

Код: Выделить всё

(0<<TWIE)
не всегда правильно работает.
Оно конечно быстро удобно,но потом люди начинают искать пути устранения внешних помех или клять компилятор,якобы он код кривой выдаёт.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

Последний совет помог. Большое спасибо!
Ответить

Вернуться в «AVR»