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

 
 
> C++ и ООП для микроконтроллеров AVR
koluna
сообщение May 10 2009, 06:21
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Здравствуйте!

Что вы думаете по поводу ООП для микроконтроллеров AVR на языке C++?

Благодарю заранее!


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yanvasiij
сообщение May 19 2014, 04:05
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(andrewlekar @ May 19 2014, 13:00) *
В С++ вы пишете в module.h:
Код
class Module { private: int data;};


И эта переменная у вас инициализирована не будет.


Ну я так понимаю на то конструкторы и есть. Мне вот только не совсем понятно: можно ли объявлять объект - не создавать его динамически. То есть в приведенном Вами примере создание объекта вот так:
Код
class Module { private: int data;};

Module myModule;

int main (void)
{
    myModule.data=100500;
    while(1)
...
}


Цитата(doom13 @ May 19 2014, 13:22) *
Можно так:
...

Не совсем понял: Вы передали указатель на функцию обработчик прерывания в метод InitIsr?
Go to the top of the page
 
+Quote Post
doom13
сообщение May 19 2014, 04:58
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(yanvasiij @ May 19 2014, 11:15) *
Не совсем понял: Вы передали указатель на функцию обработчик прерывания в метод InitIsr?

Теперь для каждого объекта можно задать свой обработчик прерывания, Ваши предложения...
Моя практика показала, что если обработчик прерывания - член класса, то он должен быть статик, или не работает. Т.о. это выбрано для реализации возможности задать собственный обработчик прерывания для каждого объекта.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 19 2014, 05:09
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(doom13 @ May 19 2014, 12:08) *
Ваши предложения...
Код
class driver
{
public:
    void isr_handler();
    ....
};

driver Device1;

ISR(XXXX_vect)
{
    Device1.isr_handler();
};



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
doom13
сообщение May 19 2014, 06:03
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Сергей Борщ @ May 19 2014, 12:19) *
Код
class driver
{
public:
    void isr_handler();
    ....
};

driver Device1;

ISR(XXXX_vect)
{
    Device1.isr_handler();
};

В таком исполнении ISR() нельзя сделать членом какого-то класса.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 19 2014, 07:48
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(doom13 @ May 19 2014, 13:13) *
В таком исполнении ISR() нельзя сделать членом какого-то класса.
А зачем ему быть членом класса? Оно даже логически слабо в класс просится. Членом класса является isr_handler(). Допустим у вас 4 UARTa: класс - один, объектов - 4, вектора прерываний для каждого объекта свои и каждый вектор вызывает один и тот же обработчик но для своего, конкретного объекта. С натяжкой можно было бы согласиться спрятать ISR внутрь класса для периферии, которая на кристалле одна. Но где гарантия, что завтра не придется переносить этот код на кристалл, у которого этой периферии две или три?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- n_bogoyavlensky   C++ и ООП для микроконтроллеров AVR   May 10 2009, 06:21
- - Tcom   Нравиться пишите на С++ для AVR.   May 10 2009, 07:06
- - tAmega   Смотря какой AVR, если 8 битные модели, то ООП это...   May 10 2009, 07:11
- - Rst7   Цитатаи программировать на нем конечно можно, но п...   May 10 2009, 07:44
- - tAmega   Видел код на C++ для AVR, нашел единственное объя...   May 10 2009, 09:01
- - Rst7   Цитатанашел единственное объяснение, для чего там ...   May 10 2009, 09:10
- - DpInRock   Программирование в ООП обычно требует динамическог...   May 10 2009, 10:56
|- - SasaVitebsk   Цитата(DpInRock @ May 10 2009, 13:56) Про...   May 11 2009, 21:38
- - Rst7   ЦитатаПрограммирование в ООП обычно требует динами...   May 10 2009, 11:13
- - kurtis   ЦитатаНикакого отношения динамическое выделение па...   May 10 2009, 11:29
|- - _Pasha   Цитата(kurtis @ May 10 2009, 14:29)  С++ ...   May 10 2009, 12:29
- - Rst7   ЦитатаДык если взять STL STL - это всего лишь удо...   May 10 2009, 11:46
- - researcher   Об ООП хорошо думаю , но в AVR ООП тесно. Какая не...   May 10 2009, 12:45
- - DpInRock   ОП имеет смысл когда есть что наследовать и есть к...   May 10 2009, 13:07
|- - haker_fox   Цитата(DpInRock @ May 10 2009, 22:07) ОП ...   May 11 2009, 00:04
|- - demiurg_spb   Цитата(DpInRock @ May 10 2009, 17:07) А т...   May 11 2009, 11:13
- - Rst7   ЦитатаВообще, как Вы можете говорить после этого о...   May 11 2009, 07:23
- - dxp   Мущщины! Вы бы сначала определились в терминах...   May 11 2009, 09:29
|- - Herz   Цитата(dxp @ May 11 2009, 11:29) Мущщины...   May 11 2009, 10:47
|- - n_bogoyavlensky   Цитата(dxp @ May 11 2009, 13:29) Мущщины...   May 12 2009, 18:24
|- - _Pasha   Цитата(n_bogoyavlensky @ May 12 2009, 21...   May 12 2009, 18:34
|- - 777777   Цитата(_Pasha @ May 12 2009, 22:34) Приех...   May 13 2009, 04:00
- - Rst7   Цитатаклассы С++ как таковые - не ООП; Как это? К...   May 11 2009, 09:35
|- - Непомнящий Евгений   Цитата(Rst7 @ May 11 2009, 13:35) Как это...   May 11 2009, 10:35
|- - dxp   Цитата(Rst7 @ May 11 2009, 16:35) Как это...   May 11 2009, 11:12
|- - megajohn   Цитата(dxp @ May 11 2009, 19:22) ... кото...   May 19 2014, 05:02
|- - msalov   Цитата(megajohn @ May 19 2014, 12:12) и п...   May 19 2014, 05:12
|- - Сергей Борщ   Цитата(megajohn @ May 19 2014, 12:12) и п...   May 19 2014, 05:14
- - Rst7   ЦитатаООП - это программирование, когда программа ...   May 11 2009, 10:57
- - Rst7   ЦитатаКласс - это тип, определяемый пользователем....   May 11 2009, 11:52
|- - dxp   Цитата(Rst7 @ May 11 2009, 18:52) Я утвер...   May 11 2009, 13:58
- - Rst7   ЦитатаОбъектно-ориентированные программы можно пис...   May 11 2009, 14:46
|- - dxp   Цитата(Rst7 @ May 11 2009, 21:46) И вообщ...   May 12 2009, 04:03
|- - VladimirYU   Цитата(dxp @ May 12 2009, 08:03) За ООП, ...   May 12 2009, 06:54
|- - dxp   Цитата(VladimirYU @ May 12 2009, 13:54) А...   May 12 2009, 11:31
|- - VladimirYU   Цитата(dxp @ May 12 2009, 15:31) Возможно...   May 12 2009, 11:45
|- - dxp   Цитата(VladimirYU @ May 12 2009, 18:45) Я...   May 12 2009, 13:40
|- - singlskv   Цитата(dxp @ May 12 2009, 17:40) Хм, инте...   May 12 2009, 18:53
|- - dxp   Цитата(singlskv @ May 13 2009, 01:53) У м...   May 13 2009, 03:24
|- - singlskv   Цитата(dxp @ May 13 2009, 07:24) SendMess...   May 13 2009, 04:32
|- - dxp   Цитата(singlskv @ May 13 2009, 10:32) Опр...   May 13 2009, 05:11
|- - singlskv   Цитата(dxp @ May 13 2009, 09:11) Ну да, в...   May 13 2009, 05:39
|- - dxp   Цитата(singlskv @ May 13 2009, 12:39) А ч...   May 13 2009, 06:26
|- - singlskv   Цитата(dxp @ May 13 2009, 10:26) Еще забы...   May 13 2009, 15:41
- - Rst7   Цитатав условиях корпоративной разработки проектов...   May 12 2009, 07:00
- - yanvasiij   Люди, поднял тему в связи с глубокой заинтересован...   May 19 2014, 00:34
- - andrewlekar   Во-первых, ООП вы напрасно определяете через терми...   May 19 2014, 01:22
- - yanvasiij   Цитата(andrewlekar @ May 19 2014, 11:32) ...   May 19 2014, 02:23
|- - doom13   Цитата(yanvasiij @ May 19 2014, 09:33) А ...   May 19 2014, 03:12
|- - kolobok0   Цитата(yanvasiij @ May 19 2014, 10:33) Сп...   May 19 2014, 14:23
- - andrewlekar   В scmRTOS посмотрите как обработчики сделаны. У ме...   May 19 2014, 02:50
|- - doom13   Цитата(Сергей Борщ @ May 19 2014, 14:58) ...   May 19 2014, 08:36
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 15:46) Допус...   May 19 2014, 09:01
|- - doom13   Цитата(Сергей Борщ @ May 19 2014, 16:11) ...   May 19 2014, 09:17
|- - megajohn   Цитата(doom13 @ May 19 2014, 17:27) Все п...   May 19 2014, 09:25
|- - Сергей Борщ   Цитата(doom13 @ May 19 2014, 16:27) Все п...   May 19 2014, 11:08
- - andrewlekar   Цитатаможно ли объявлять объект - не создавать его...   May 19 2014, 04:25
- - A. Fig Lee   На маленьких задачах преимущества C++ не очевидны....   May 19 2014, 17:19
- - yanvasiij   megajohn doom13 andrewlekar Сергей Борщ msalov Спа...   May 20 2014, 00:22
- - yanvasiij   -   May 20 2014, 00:22
- - juvf   смешали всё. Ну во первых в avr-gcc от winavr не...   May 21 2014, 23:22
- - andrewlekar   В C99 тоже можно переменную непосредственно перед ...   May 21 2014, 23:45
- - juvf   ЦитатаСсылки полностью перекрываются указателямине...   May 21 2014, 23:52


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

 


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


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