|
ООП подход в программировании AVR на С++ (не Си!) |
|
|
|
Oct 29 2007, 13:54
|
Группа: Новичок
Сообщений: 11
Регистрация: 29-10-07
Пользователь №: 31 841

|
Народ! подскажите, дайте ссылку, или кто знает просто расскажите как правильно писать на С++ для AVR-ов, с учетом всех тонкостей контроллеров, например функции обработчиков прерываний, может ли обработчик быть мембером класса, или как правильно создать прог. инт-фейс для перефирийного устройства например УАРТа или др. какие нибуть примеры, личный опыт.... но только С++, не Си! непутать объектное со структурным.....
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Oct 29 2007, 14:48
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Дуглас Шеппард @ Oct 29 2007, 19:54)  Народ! подскажите, дайте ссылку, или кто знает просто расскажите как правильно писать на С++ для AVR-ов, с учетом всех тонкостей контроллеров, например функции обработчиков прерываний, может ли обработчик быть мембером класса, или как правильно создать прог. инт-фейс для перефирийного устройства например УАРТа или др. какие нибуть примеры, личный опыт.... но только С++, не Си! непутать объектное со структурным..... Что вы понимаете под ООП? Классы? Вообще, подобные темы уже обсуждались, поищите на форуме.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 29 2007, 14:57
|

Любитель Кошек
    
Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873

|
Цитата(Дуглас Шеппард @ Oct 29 2007, 16:54)  Народ! подскажите, дайте ссылку, или кто знает просто расскажите как правильно писать на С++ для AVR-ов, с учетом всех тонкостей контроллеров, например функции обработчиков прерываний, может ли обработчик быть мембером класса, или как правильно создать прог. инт-фейс для перефирийного устройства например УАРТа или др. какие нибуть примеры, личный опыт.... но только С++, не Си! непутать объектное со структурным..... Хорошое дело поиск, например http://www.google.ru/search?client=opera&a...vr&sourceid
--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
|
|
|
|
|
Oct 29 2007, 16:41
|
Группа: Новичок
Сообщений: 11
Регистрация: 29-10-07
Пользователь №: 31 841

|
Цитата(dxp @ Oct 29 2007, 19:18)  Что вы понимаете под ООП? Классы?
Вообще, подобные темы уже обсуждались, поищите на форуме. я имею ввиду как правильно организовать приложение, времена когда весь код был в main() уже прошли, нетак ли, возникает вопрос: как, например main() засунуть в класс? (плохой пример) или как обработчик прерывания сделать методом класса, наверняка он должен быть статическим, могу ли я допустим PORTB сделать членом класса? понимаете?
|
|
|
|
|
Oct 30 2007, 07:41
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Дуглас Шеппард @ Oct 29 2007, 19:41)  я имею ввиду как правильно организовать приложение, времена когда весь код был в main() уже прошли, нетак ли, Так. Цитата(Дуглас Шеппард @ Oct 29 2007, 19:41)  возникает вопрос: как, например main() засунуть в класс? (плохой пример) Вы поняли, что Вы сказали ? Цитата(Дуглас Шеппард @ Oct 29 2007, 19:41)  или как обработчик прерывания сделать методом класса, наверняка он должен быть статическим Зачем обработчик делать членом класса, лучше сделайте функцию в обработчике. Она будет находиться во flash. Цитата(Дуглас Шеппард @ Oct 29 2007, 19:41)  могу ли я допустим PORTB сделать членом класса? понимаете? Нет, не понимаю. Зачем такие выкрутасы, а сделать можно все. Вопрос зачем ?
|
|
|
|
|
Oct 30 2007, 08:30
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(IgorKossak @ Oct 30 2007, 11:13)  alexander55, оба Ваших последних "зачем" можно добавить третьим - "зачем ООП?". Игорь, про третье "зачем ООП" у меня вопросов нет. Я сам стою горой за ООП. Цитата(IgorKossak @ Oct 30 2007, 11:13)  Дело в том, что и обработчик прерывания и любой внутренний ресурс можно безболезненно сделать статическим членом класса. Я это делаю постоянно и мне лично это кажется удобным. Тут я что-то не в курсе. Объясните мне: -в чем Вы видите удобство использования обработчика прерывания, как члена класса (а не функции, в него входящей); -чем хуже макроопределение ресурса, чем определение его, как члена класса. О вкусах не спорят, но может, что-то я не улавливаю.
|
|
|
|
|
Oct 30 2007, 09:15
|

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

|
Цитата(alexander55 @ Oct 30 2007, 10:30)  -в чем Вы видите удобство использования обработчика прерывания, как члена класса (а не функции, в него входящей); Пробовал разные варианты. В случае применения функции в обработчике сохраняется и восстанавливается много лишнего контекста. А ведь обработчик может быть коротким и не всегда есть смысл его тело выделять в функцию. Тем более, что вызываться она будет только из одного места. Можно её, конечно, обьявить инлайновой, но на мой взгляд это лишние телодвижения. Цитата(alexander55 @ Oct 30 2007, 10:30)  -чем хуже макроопределение ресурса, чем определение его, как члена класса. Да ни чем не хуже. Всё зависит от конкретного случая и личных предпочтений. Вопрос ведь был: "Можно ли?". Ответ: "Да, можно". Я в своё время пробовал по всякому, и продолжаю решать вопросы разными методами. Например, если порт целиком используется для одной цели - управления LCD, то его целиком мне было удобно определить в классе, назначив пинам или группе пинов нужные функции. В другом проекте, где исходя из удобства трассировки, линии управления LCD оказались принадлежащими разным портам, я работал через макроопределения.
|
|
|
|
|
Oct 30 2007, 09:19
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(alexander55 @ Oct 30 2007, 14:30)  Тут я что-то не в курсе. Объясните мне: -в чем Вы видите удобство использования обработчика прерывания, как члена класса (а не функции, в него входящей); Удобство в том, что если, например, прерывание по замыслу непосредственно связано с каким-то объектом класса и больше ни с чем другим, то имеет смысл сокрыть обработчик этого прерывания внутри оного класса. Во-вторых, это дает возможность доступа к закрытым членам класса из этого обработчика прерываний.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Oct 30 2007, 10:18
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(IgorKossak @ Oct 30 2007, 12:15)  Спасибо, я понял мысль. Цитата(IgorKossak @ Oct 30 2007, 12:15)  Например, если порт целиком используется для одной цели - управления LCD, то его целиком мне было удобно определить в классе, назначив пинам или группе пинов нужные функции. Я для LCD поступал аналогично (так удобнее). Спасибо dxp за пояснение.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|