Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.01.2010, 00:35
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Class в IAR
Здравствуйте! Пытаюсь создать класс в IAR (конкретно для MSP430)
листинг класса I2C_.h
Код:
|
class I2C_
{
public:
char port_SDA,
port_SCL,
pause_SDA,
pause_SCL,
pause_get;
unsigned char volatile SCL_DIR,
SDA_DIR,
SDA_IN;
void start_i2c (void);
void stop_i2c (void);
bool get_i2c (void);
void IND_write_byte(char);
void return_a (void);
private:
}; |
листинг main
Код:
|
#include "msp430x16x.h"
#include "I2C_.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
I2C_ fff;
fff.port_SDA = 1;
fff.&SDA_DIR = &P1DIR;
return 0;
} |
Проблема собственно говоря в присвоении адреса переменной fff.SDA_DIR адреса регистра P1DIR.
Пишет вот что:
Error[Pe133]: expected a member name
И показывает на строчку fff.&SDA_DIR = &P1DIR;
|
|
|
|
26.01.2010, 06:31
|
|
Временная регистрация
Регистрация: 25.11.2009
Сообщений: 61
Сказал спасибо: 1
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Class в IAR
Наверное ты хотел сделать так:
unsigned char volatile *pSCL_DIR, *pSDA_DIR, *pSDA_IN;
и
fff.pSDA_DIR = &P1DIR;
Потом внутри класса обращайся так: *pSDA_DIR.
|
|
|
|
26.01.2010, 09:14
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: Class в IAR
roxfan, Спасибо за быстрый ответ. Ошибок теперь нет. Но пока контроллер не прошивал. Как прошью отпишусь. Наверное будет работать))))))
|
|
|
|
26.01.2010, 14:42
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: Class в IAR
Попробовал описать конструктор. Неполучилось.
Листинг класса:
Код:
|
class I2C_
{
public:
char port_SDA,
port_SCL,
pause_SDA,
pause_SCL,
pause_get;
unsigned char volatile *SCL_DIR,
*SDA_DIR,
*SDA_IN;
void start_i2c (void);
void stop_i2c (void);
bool get_i2c (void);
void IND_write_byte(char);
void return_a (void);
private:
};
///--------------------------------------------------------------------------
// конструктор
I2C_::I2C_()
{
pause_SDA = 10;
pause_SCL = 10;
port_SDA = 0;
port_SCL = 0;
pause_get = 40;
} |
Ошибка на конструктор:
Error[Pe135]: class "I2C_" has no member "I2C_"
|
|
|
|
26.01.2010, 14:57
|
|
Временная регистрация
Регистрация: 25.11.2009
Сообщений: 61
Сказал спасибо: 1
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Class в IAR
Так надо ж его сначала объявить перед тем, как описывать. Где-нибудь в секции public: добавь I2C_();
А вообще лучше почитай какую-нибудь книжку по С++. Или хотя бы тутор по классам.
|
|
|
|
26.01.2010, 16:04
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: Class в IAR
Да как всегда я не внимательный)) В книге и правда был прототип конструктора, только правда в самомом начале после public:. Теперь всё нормально.
Спасибо.
|
|
|
|
26.01.2010, 17:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Class в IAR
-------------------------------
Покажите, плиз, весь проект. Я отказываюсь от осей - мне вечно таймеров не хватает - а здесь классы, все дела...
При вечном голоде на оперативку - неужели всего хватает ???
Ну очень прошу...
Последний раз редактировалось urry; 27.01.2010 в 09:23.
|
|
|
|
26.01.2010, 17:56
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
|
Re: Class в IAR
Сообщение от urry
|
При вечном голоде на оперативку - неужели всего хватает ???
|
За этим будущее. Компиляторы постоянно совершенствуются и пожалуй не далек тот день когда классы будут развертываться в набор статических функций при наличии соответствующих предпосылок в программе.
А вот гибкость класса функциями трудно сэмитировать. Всё обычно заканчивается на уровне динозавроподобных #define... Ну пока один LCD, одна I2C и всего по одному с этим, конечно, можно жить. А вот если несколько... То тут начинают в голову приходить "плохие" мысли
Поэтому не стоит разводить святых войн, время в глобальном смысле работает против.
|
|
|
Сказали "Спасибо" alexgap
|
|
|
26.01.2010, 21:12
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: Class в IAR
Сообщение от alexgap
|
А вот гибкость класса функциями трудно сэмитировать. Всё обычно заканчивается на уровне динозавроподобных #define... Ну пока один LCD, одна I2C и всего по одному с этим, конечно, можно жить. А вот если несколько... То тут начинают в голову приходить "плохие" мысли
|
Обычно я пишу на С, но тут и правда оценил всю мощь классов когда стало несколько интерфейсов I2C. Вот и попёрло на "плохие мысли".
Сообщение от urry
|
Покажите, плиз, весь проект.
|
Как только сделаю проект выложу. Только это будет не совсем скоро (неделя - две)
Последний раз редактировалось innovator_king; 26.01.2010 в 21:17.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:01.
|
|