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

 
 
> ООП подход в программировании AVR на С++ (не Си!)
Дуглас Шеппард
сообщение Oct 29 2007, 13:54
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 29-10-07
Пользователь №: 31 841



Народ!
подскажите, дайте ссылку, или кто знает просто расскажите
как правильно писать на С++ для AVR-ов, с учетом всех тонкостей
контроллеров, например функции обработчиков прерываний,
может ли обработчик быть мембером класса,
или как правильно создать прог. инт-фейс для перефирийного устройства
например УАРТа или др.
какие нибуть примеры, личный опыт....
но только С++, не Си! непутать объектное со структурным.....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Oct 30 2007, 08:13
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



alexander55, оба Ваших последних "зачем" можно добавить третьим - "зачем ООП?".
Дело в том, что и обработчик прерывания и любой внутренний ресурс можно безболезненно сделать статическим членом класса. Я это делаю постоянно и мне лично это кажется удобным.
Смысл?
Да всё тот же, что и в ООП как таковом: инкапсуляция, сокрытие, и т. д., и т. п.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 30 2007, 08:30
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(IgorKossak @ Oct 30 2007, 11:13) *
alexander55, оба Ваших последних "зачем" можно добавить третьим - "зачем ООП?".

Игорь, про третье "зачем ООП" у меня вопросов нет. Я сам стою горой за ООП. smile.gif

Цитата(IgorKossak @ Oct 30 2007, 11:13) *
Дело в том, что и обработчик прерывания и любой внутренний ресурс можно безболезненно сделать статическим членом класса. Я это делаю постоянно и мне лично это кажется удобным.

Тут я что-то не в курсе. Объясните мне:
-в чем Вы видите удобство использования обработчика прерывания, как члена класса (а не функции, в него входящей);
-чем хуже макроопределение ресурса, чем определение его, как члена класса.
О вкусах не спорят, но может, что-то я не улавливаю. 07.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 30 2007, 09:15
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(alexander55 @ Oct 30 2007, 10:30) *
-в чем Вы видите удобство использования обработчика прерывания, как члена класса (а не функции, в него входящей);

Пробовал разные варианты.
В случае применения функции в обработчике сохраняется и восстанавливается много лишнего контекста. А ведь обработчик может быть коротким и не всегда есть смысл его тело выделять в функцию. Тем более, что вызываться она будет только из одного места. Можно её, конечно, обьявить инлайновой, но на мой взгляд это лишние телодвижения.
Цитата(alexander55 @ Oct 30 2007, 10:30) *
-чем хуже макроопределение ресурса, чем определение его, как члена класса.

Да ни чем не хуже.
Всё зависит от конкретного случая и личных предпочтений.
Вопрос ведь был: "Можно ли?". Ответ: "Да, можно".
Я в своё время пробовал по всякому, и продолжаю решать вопросы разными методами.
Например, если порт целиком используется для одной цели - управления LCD, то его целиком мне было удобно определить в классе, назначив пинам или группе пинов нужные функции.
В другом проекте, где исходя из удобства трассировки, линии управления LCD оказались принадлежащими разным портам, я работал через макроопределения.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 30 2007, 10:18
Сообщение #5


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(IgorKossak @ Oct 30 2007, 12:15) *

Спасибо, я понял мысль.

Цитата(IgorKossak @ Oct 30 2007, 12:15) *
Например, если порт целиком используется для одной цели - управления LCD, то его целиком мне было удобно определить в классе, назначив пинам или группе пинов нужные функции.

Я для LCD поступал аналогично (так удобнее).

Спасибо dxp за пояснение.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:53
Рейтинг@Mail.ru


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