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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> IAR меня игнорирует . :(, Причем , молча.... собака!
dimka76
сообщение Sep 17 2009, 12:02
Сообщение #16


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(Rst7 @ Sep 17 2009, 15:58) *
Например его.


А что есть еще варианты?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 17 2009, 12:05
Сообщение #17


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А что есть еще варианты?


Конкретно в IAR'е для AVR этот макрос разворачивает union со всякими собственными диалектическими словами типа __io и @. Можно реализовать и более стандартно, путем организации приведения типов.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
dimka76
сообщение Sep 17 2009, 12:10
Сообщение #18


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(Rst7 @ Sep 17 2009, 16:05) *
Конкретно в IAR'е для AVR этот макрос разворачивает union со всякими собственными диалектическими словами типа __io и @. Можно реализовать и более стандартно, путем организации приведения типов.


если Вы имеете ввиду это
Код
/*==========================*/
/* Predefined SFR Addresses */
/*==========================*/

/****************************************************************************
* An example showing the SFR_B() macro call,
* the expanded result and usage of this result:
*
* SFR_B(AVR,   0x1F) Expands to:
* __io union {
*             unsigned char AVR;                 // The sfrb as 1 byte
*             struct {                           // The sfrb as 8 bits
*                     unsigned char AVR_Bit0:1,
*                                   AVR_Bit1:1,
*                                   AVR_Bit2:1,
*                                   AVR_Bit3:1,
*                                   AVR_Bit4:1,
*                                   AVR_Bit5:1,
*                                   AVR_Bit6:1,
*                                   AVR_Bit7:1;
*                    };
*            } @ 0x1F;
* Examples of how to use the expanded result:
* AVR |= (1<<5);
* or like this:
* AVR_Bit5 = 1;
***************************************************************************/


То в моей версии IAR, как видите, это закоментировано и дано как образец. Т.е. это все самому прописывать надо


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 17 2009, 12:24
Сообщение #19


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
То в моей версии IAR, как видите, это закоментировано и дано как образец. Т.е. это все самому прописывать надо


Шутите? Это комментарий. На самом деле надо поставить в свойствах проекта галочку "Enable Bit Definition in I/O-Include files". Либо разместить то ли в предопределенных символах, то ли перед #include <ioavr.h> определение ENABLE_BIT_DEFINITIONS


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
dimka76
сообщение Sep 17 2009, 12:29
Сообщение #20


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Все разобрался.
В файле iom<номер контроллера>.h есть объявление SFR_B(PINC, 0x13), а также подключен зыголовочный файл iomacro.h, в котором SFR_B определено как

Код
#define SFR_B(_NAME, _ADDR) SFR_B_BITS(_NAME, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)



В свою очередь SFR_B_BITS определено как

Код
#define SFR_B_BITS(_NAME, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H) \
    __io union { \
      unsigned char   _NAME;           /* The sfrb as 1 byte */ \
      struct {                        /* The sfrb as 8 bits */ \
        __BYTEBITS(_NAME, _A,_B,_C,_D,_E,_F,_G,_H) \
      };  \
    } @ _ADDR;


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 17 2009, 12:40
Сообщение #21


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Ойц. Прошу прощения. Enable Bit Definition - это даже еще более веселее. Это можно типа так написать
Код
if (TIFR_TOV1) blablabla...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 17 2009, 16:34
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(dimka76 @ Sep 17 2009, 15:02) *
А что есть еще варианты?

Вариантов полно, главное проявить фантазию
Мне, из-за моей забывчивости и постоянного переключения между проектами , нравится типа так:
if (GetPin(ALARM_BUTTON)) SetPin(LOCK_THE_DOOR);
Ну а дальше работает оптимизация, приводящая все к нескольким командам.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
muravei
сообщение Sep 17 2009, 17:55
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Dog Pawlowa @ Sep 17 2009, 20:34) *
Вариантов полно, главное проявить фантазию

А почему так : if ((PIND & 0x04)==0)...
прокатывало , а уже вот так : if ((PIND & 0x02)==0) ..... нет ? sad.gif
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Sep 17 2009, 19:26
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Может дело не в IAR?
- не включена ли альтернативная функция (некоторые сажают вход на регистр PIND на 0)?
- где-то ошиблись с DDRD и в результате конфликт и считывание неправильного значения.
- ножка сгорела, наконец?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 17 2009, 20:01
Сообщение #25


Гуру
******

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



Кстати в IAR для ARM тоже можно кое чего. smile.gif
Например:
PINSEL1_bit.P0_27 = 1; // TRST
или
U0FCR_bit.FCRFE=1; // Разрешить фифо
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 20:18
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ Sep 17 2009, 22:01) *
Кстати в IAR ...

Баловство все эти фирменные навороты или навороченные (переболел в свое время) макросы. Портам имена и алиасы, биты/поля именовать и обыденных очевидных средств более чем достаточно, читабельно, портируемо, лаконично! и не заставляет вспоминать что это тут наворотил. Повторяющиеся вещи в разумные специализированные (а не "универсальные" макросы) или inline.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 17 2009, 20:49
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(SasaVitebsk @ Sep 18 2009, 02:01) *
PINSEL1_bit.P0_27 = 1; // TRST
или
U0FCR_bit.FCRFE=1; // Разрешить фифо

Не нравятся мне эти битовые поля и union-ы. sad.gif
ИМХО битовые маски рулят! smile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 17 2009, 21:00
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Sep 17 2009, 23:18) *
Баловство все эти фирменные навороты или навороченные (переболел в свое время) макросы....

Где все-таки грань навороченности макросов, не только для портов?
Я наоборот, от простых макросов описания конкретных портов перехожу к более универсальным.

Ниже - перебор? (много поскипано, но идея, думаю, понятна)

Код
  OUTPUT  (   PulseWdt        ,   P1  , 0x01    )
  INPUT   (   KeyStIn         ,   ~P1 , 0x10    )
...
#pragma inline=forced
unsigned char GetPin(unsigned int name);
#pragma inline=forced
void  OnPin(unsigned int name);
...
// generation of inputs functions
unsigned char GetPin( unsigned int name)
{ switch (name) {
#define INPUT( name, port, bit)  case name: return (port##IN & bit);
#include pins_file
default: return 0; } }


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 17 2009, 21:07
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Dog Pawlowa @ Sep 18 2009, 03:00) *
Где все-таки грань навороченности макросов, не только для портов?

Грань на границе HAL стоит.
Цитата(Dog Pawlowa @ Sep 18 2009, 03:00) *
Я наоборот, от простых макросов описания конкретных портов перехожу к более универсальным.
Зачем? Опишите функцию (имею в виду не программное понятие, а функциональную модель аппаратуры), которую выполняет hardware и работайте дальше с этой абстракцией. Все равно то, что в пределах HAL лежит аппаратнозависимо и некроссплатформенно. Нафига зачем какие-то универсальные порты описывать-то? wacko.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 17 2009, 21:29
Сообщение #30


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Dog Pawlowa @ Sep 18 2009, 03:00) *
Ниже - перебор? (много поскипано, но идея, думаю, понятна)


Так есть же макросы имени Волкова. Очень удобно.

Я так привык к ним, что для плюсов тоже соорудил аналог, правда для stm32 и msp430. smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:54
Рейтинг@Mail.ru


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