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

 
 
> Как ПРАВИЛЬНО программировать на С++, Вопросы по программированию на С++ для микроконтроллеров.
Serega Doc
сообщение Jul 26 2010, 14:25
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



Добрый день. Учусь программировать на С++.
И иногда возникают вопросы в правильном проектировании классов.
Сейчас описываю класс для работы с последовательными регистрами 74HC595.
Уже есть класс для работы с SPI.
Где инициализировать SPI блок AT Mega 168 в классе работы с регистром или же глобально во всей программе.
Сейчас SPI будет использоваться только в регистрах.
Но в будущем планирую параллельно регистрам подключить еще и FLASH память (еще один класс по работе с памятью FLASH) на SPI.

Что посоветуете?

Вдогонку PS
И как правильно писать классы для регистров и FLASH наследовать от SPI или же внутри классов объявлять член класса SPI?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
neiver
сообщение Aug 19 2010, 14:40
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Примеры есть у меня, есть и свой подход к программированию для систем с сильно ограниченными ресурсами на С++(на примере AVR).
Будет свободное время - напишу статейку по этой теме (если будут желающие её читать smile.gif ).
А так вкратце могу сказать, что программы на С++ получаются компактнее, быстрее и легче читаются аналогичных программ на Си.
Go to the top of the page
 
+Quote Post
777777
сообщение Aug 20 2010, 08:32
Сообщение #3


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(neiver @ Aug 19 2010, 18:40) *
А так вкратце могу сказать, что программы на С++ получаются компактнее, быстрее и легче читаются аналогичных программ на Си.

Я, в принципе, охотно верю, но тем не менее не могу придумать, какие понятия в микроконтроллерных системах можно сделать классами. Слишком уж они отличаются от обычных программ.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 20 2010, 08:37
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(777777 @ Aug 20 2010, 12:32) *
Я, в принципе, охотно верю, но тем не менее не могу придумать, какие понятия в микроконтроллерных системах можно сделать классами.

Да хоть какие угодно.
Порт, например, чем вам не класс?
УАРТ?
АЦП?
Таймеры?
Есть физические данные, есть объекты в адресном пространстве, есть методы, работающие с этими данными и объектами.
Почему бы не соединить вместе?

Adc->Init();
Adc->StartConversion();
...
Uadc = Adc->GetResult();


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
777777
сообщение Aug 20 2010, 11:15
Сообщение #5


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(MrYuran @ Aug 20 2010, 12:37) *
Да хоть какие угодно.
Порт, например, чем вам не класс?
УАРТ?
АЦП?
Таймеры?

Нет, это не классы. Это объекты, существующие в одном экземпляре. (Правда, в программировании есть понятие синглтона, но это все-таки экзотика). А класс - это в некий тип данных, как int или char. Можно создавать объекты таких типов в любом колчестве, они обладают некими свойствами. Примером класса может быть окно - можно создавать множество объектов такого класаа - окон с разными свойствами - размером, типом, - вызывать их методы с целью поменять их, выполнить какое-то действие - нарисовать на нем что-то и т.п. Можно например, как я писал в соседнем посте, создать класс кнопки и использовать его для обработки нажатий на кнопки, отличать длительное и короткое нажатие, выполнять полиморфно их обработку.
Цитата(MrYuran @ Aug 20 2010, 12:37) *
Есть физические данные, есть объекты в адресном пространстве, есть методы, работающие с этими данными и объектами.
Почему бы не соединить вместе?

Adc->Init();
Adc->StartConversion();
...
Uadc = Adc->GetResult();

Это лишь видимость С++, в реальности это ничем не лучше вызова обычных функций. А от объектно-ориентированного программирования польза будет только если пользоваться всеми его особенностями - инкапсуляцией, наследованием, полиморфизмом. А для этого нужно весь проект рассматривать как поле для взаимодействия объектов, а не просто переделать проект на С++ потому что это модная фича.

Сообщение отредактировал 777777 - Aug 20 2010, 11:18
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 20 2010, 12:43
Сообщение #6


Adept
******

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



Цитата(777777 @ Aug 20 2010, 18:15) *
Нет, это не классы. Это объекты, существующие в одном экземпляре.

То, что классы нужно заводить только при возникновении необходимости во множественном (> 1) использовании объектов, - распространенный стереотип-заблуждение. Классы - это просто типы, определяемые пользователем, и использовать их имеет смысл во всех случаях, когда описание программных сущностей удобно воспринимать в виде законченных объектов, даже если такой объект в программе всего один. Классы, как типы, определяемые пользователем, позволяют программисту провести близкие аналогии между объектами реального мира и сущностями программы, что значительно облегчает процесс разработки, т.к. выводит логику программы на более высокий уровень абстракции (от низкоуровневого железа). К тому же, это обстоятельство позволяет в значительной мере формализовать процесс проектирования программы - т.е. составить проект ("рыбу") будущей программы из кубиков структурной схемы еще до написания первой строки кода.

Кстати, на том же С очень удобно заводить в структуру объекты, относящиеся к одному и тому же (по смыслу) месту программы, даже если таких структур нужна всего одна.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 21 2010, 16:37
Сообщение #7


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(dxp @ Aug 20 2010, 16:43) *
Кстати, на том же С очень удобно заводить в структуру объекты, относящиеся к одному и тому же (по смыслу) месту программы, даже если таких структур нужна всего одна.

Да, структура - частный случай класса.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serega Doc   Как ПРАВИЛЬНО программировать на С++   Jul 26 2010, 14:25
- - Serega Doc   Это глупый вопрос который обсуждали миллион раз?   Jul 27 2010, 06:43
- - Mahagam   нет. как-то це-крест-крест не сильно прижился у эм...   Jul 27 2010, 08:41
|- - Dima_G   Цитата(Mahagam @ Jul 27 2010, 15:41) нет....   Jul 27 2010, 08:48
- - AHTOXA   Цитата(Serega Doc @ Jul 26 2010, 20:25) Г...   Jul 27 2010, 08:53
|- - Ink   Цитата(AHTOXA @ Jul 27 2010, 12:53) Насле...   Jul 29 2010, 12:50
|- - Dima_G   Цитата(Ink @ Jul 29 2010, 19:50) А не пок...   Jul 29 2010, 13:15
- - Serega Doc   Спасибо все заработало. Что бы не плодить тем буду...   Jul 27 2010, 13:29
|- - ReAl   Ну оно "так и надо по теории". Сама флеш...   Jul 27 2010, 17:31
- - neiver   У меня есть некоторые интересные наработки на Си п...   Jul 29 2010, 15:03
|- - demiurg_spb   Приведите для интереса asm листинг того, во что э...   Jul 29 2010, 16:51
|- - Dima_G   Цитата(neiver @ Jul 29 2010, 22:03) У мен...   Jul 30 2010, 05:56
- - neiver   Для Кодtypedef PinList<Pa1, Pa2, Pa3, Pb3, Pb...   Jul 30 2010, 09:21
- - Ink   ЦитатаОбъекты от статических членов не будут дубли...   Aug 2 2010, 07:43
- - sergeeff   ЦитатаНифига не понял. Если вы посмотрите на sizeo...   Aug 2 2010, 08:03
- - Mahagam   программисты на Си обсуждают и решают проблемы кон...   Aug 2 2010, 09:51
|- - MrYuran   Цитата(Mahagam @ Aug 2 2010, 13:51) прогр...   Aug 2 2010, 09:57
|- - sergeeff   Цитата(Mahagam @ Aug 2 2010, 12:51) прогр...   Aug 3 2010, 10:03
- - Ink   ЦитатаЕсли вы посмотрите на sizeof(A) и наследуемы...   Aug 3 2010, 07:08
|- - Dima_G   Цитата(Ink @ Aug 3 2010, 14:08) Это как т...   Aug 3 2010, 13:16
|- - halfdoom   Цитата(Ink @ Aug 3 2010, 10:08) но когда ...   Sep 7 2010, 09:21
|- - Dima_G   Цитата(halfdoom @ Sep 7 2010, 16:21) Вот ...   Sep 7 2010, 09:40
|- - halfdoom   Цитата(Dima_G @ Sep 7 2010, 12:40) А в че...   Sep 7 2010, 11:39
- - Mahagam   я и смотрю широко. война с конструкциями языка (и ...   Aug 3 2010, 07:53
|- - sergeeff   Цитата(Mahagam @ Aug 3 2010, 10:53) я и с...   Aug 3 2010, 08:26
- - Mahagam   где вы ратование за ассемблер увидели????   Aug 3 2010, 09:59
- - Mahagam   и где я упоминал ассемблер??? поясняю - программер...   Aug 3 2010, 11:15
|- - sergeeff   Цитата(Mahagam @ Aug 3 2010, 14:15) и где...   Aug 3 2010, 11:48
|- - Ink   Цитата(Mahagam @ Aug 3 2010, 15:15) прогр...   Aug 3 2010, 12:24
- - neiver   Вы, видимо мало на С++ программировали... На С++ ...   Aug 3 2010, 11:29
- - Mahagam   во налетели. ещё раз. чисто наблюдения показывают...   Aug 3 2010, 12:50
|- - sergeeff   Цитата(Mahagam @ Aug 3 2010, 15:50) во на...   Aug 3 2010, 12:59
||- - Mahagam   QUOTE (sergeeff @ Aug 3 2010, 15:59) Учит...   Aug 3 2010, 14:51
|- - MrYuran   Цитата(Mahagam @ Aug 3 2010, 16:50) во на...   Aug 3 2010, 13:05
|- - ReAl   Цитата(Mahagam @ Aug 3 2010, 15:50) ещё р...   Aug 3 2010, 14:54
- - Mahagam   стандартов на языки понаделали давно. с появлением...   Aug 3 2010, 16:13
|- - MrYuran   Цитата(Mahagam @ Aug 3 2010, 20:13) на пл...   Aug 3 2010, 17:05
||- - sergeeff   Цитата(MrYuran @ Aug 3 2010, 20:05) Поэто...   Aug 3 2010, 17:44
||- - MrYuran   Цитата(sergeeff @ Aug 3 2010, 21:44) С ег...   Aug 3 2010, 18:12
||- - sergeeff   Цитата(MrYuran @ Aug 3 2010, 21:12) А что...   Aug 3 2010, 18:32
|- - ReAl   Цитата(Mahagam @ Aug 3 2010, 19:13) станд...   Aug 3 2010, 17:10
- - Savrik   Управляеймый код, конечно, хорошо в своей области,...   Aug 3 2010, 19:09
- - Mahagam   ReAl при чём тут ниша и контроллеры? если обсуждаю...   Aug 4 2010, 07:49
|- - sergeeff   Цитата(Mahagam @ Aug 4 2010, 10:49) ReAl ...   Aug 4 2010, 08:06
|- - XVR   Цитата(Mahagam @ Aug 4 2010, 11:49) ReAl ...   Aug 11 2010, 09:20
|- - alexvok   Посоветуйте пажалуйста книгу С++ с примерами для ...   Aug 19 2010, 10:32
|- - demiurg_spb   Цитата(alexvok @ Aug 19 2010, 14:32) Посо...   Aug 19 2010, 14:11
|- - MrYuran   Цитата(alexvok @ Aug 19 2010, 14:32) С++ ...   Aug 23 2010, 07:33
|- - xelax   Цитата(MrYuran @ Aug 23 2010, 11:33) У ...   Aug 25 2010, 08:38
|- - MrYuran   Цитата(xelax @ Aug 25 2010, 12:38) Я то н...   Aug 25 2010, 08:48
|- - DRUID3   Цитата(xelax @ Aug 25 2010, 11:38) Этап п...   Sep 5 2010, 18:11
|- - MrYuran   Цитата(DRUID3 @ Sep 5 2010, 22:11) Хороша...   Sep 6 2010, 11:34
- - Rst7   QUOTE (хотя я удивлялся — почему на "ДВК-2...   Aug 4 2010, 08:15
- - Serega Doc   Добрый день. Неожиданно был удивлен что здесь из-з...   Aug 5 2010, 04:10
|- - Ink   Цитата(Serega Doc @ Aug 5 2010, 08:10) Мо...   Aug 5 2010, 06:34
- - neiver   А чем собственно call не угодил? Хотите пару такто...   Aug 5 2010, 07:21
- - Serega Doc   Спасибо за рекомендации. inline я активно использ...   Aug 5 2010, 08:37
|- - MrYuran   Цитата(777777 @ Aug 20 2010, 15:15) Это л...   Aug 20 2010, 11:39
- - ReAl   Ну вот как раз сегодняшний пример. ATmega48. Прог...   Aug 21 2010, 18:24
|- - 777777   Цитата(ReAl @ Aug 21 2010, 22:24) Кстати,...   Aug 24 2010, 11:21
|- - ReAl   Цитата(777777 @ Aug 24 2010, 14:21) Да эт...   Aug 24 2010, 15:15
- - neiver   Идея интересная. Я статью по этой теме пишу - ника...   Aug 23 2010, 08:33
- - Andron_   по осени начал писать проект для сигнальника TI, р...   Aug 24 2010, 14:10
- - ReAl   Я бы сказал так — по сравнению с С язык С++ более ...   Aug 25 2010, 11:19
|- - dxp   Цитата(ReAl @ Aug 25 2010, 18:19) Я бы ск...   Aug 26 2010, 05:54
- - Waso   Цитата(neiver @ Aug 19 2010, 21:40) Приме...   Sep 3 2010, 05:35
|- - sergeeff   Цитата(Waso @ Sep 3 2010, 09:35) А как на...   Sep 3 2010, 14:58
- - Waso   В чем же она заключается, наивность-то?   Sep 3 2010, 15:07
|- - Harvester   Цитата(Waso @ Sep 3 2010, 19:07) В чем же...   Sep 7 2010, 11:27
|- - MrYuran   Цитата(Harvester @ Sep 7 2010, 15:27) А ...   Sep 7 2010, 11:44
- - sigmaN   ЦитатаХорошая статья что-бы задуматься - а туда ли...   Sep 6 2010, 20:52
|- - neiver   Цитата(sigmaN @ Sep 7 2010, 00:52) А вы н...   Sep 7 2010, 08:32
|- - DRUID3   offtop Цитата(sigmaN @ Sep 6 2010, 23:52...   Sep 7 2010, 14:57
- - SasaVitebsk   Мне кажется, всётаки, что сравнение переходов ASM...   Sep 7 2010, 10:20
- - one_man_show   В своей практике стараюсь сделать примеры применен...   Sep 7 2010, 10:54
- - sigmaN   Блни, а зря оффтоп прикрыли. Вот щас про Торвальд...   Sep 7 2010, 23:01
|- - Сергей Борщ   Цитата(sigmaN @ Sep 8 2010, 02:01) Один м...   Sep 8 2010, 06:16
|- - halfdoom   Цитата(sigmaN @ Sep 8 2010, 02:01) Прям 3...   Sep 8 2010, 14:50
- - sigmaN   Нет, точно пора завязывать, оффтоп же!   Sep 8 2010, 09:13
- - neiver   Господа/Товарищи/Эмбеддеры/Радио коты (нужное подч...   Sep 9 2010, 15:30
|- - MrYuran   Цитата(neiver @ Sep 9 2010, 19:30) Господ...   Sep 10 2010, 06:03
|- - Сергей Борщ   Цитата(neiver @ Sep 9 2010, 18:30) Констр...   Sep 10 2010, 08:32
|- - Сергей Борщ   Подход замечательный. Обязательно использую в ближ...   Sep 10 2010, 09:57
|- - ReAl   Цитата(Сергей Борщ @ Sep 10 2010, 12:57) ...   Sep 10 2010, 11:43
|- - halfdoom   Цитата(ReAl @ Sep 10 2010, 15:43) p.s[0] ...   Sep 11 2010, 05:54
|- - ReAl   Цитата(halfdoom @ Sep 11 2010, 08:54) Поз...   Sep 11 2010, 07:27
||- - halfdoom   Цитата(ReAl @ Sep 11 2010, 10:27) Если бы...   Sep 11 2010, 11:46
|- - MrYuran   Цитата(halfdoom @ Sep 11 2010, 09:54) Поз...   Sep 11 2010, 08:39
||- - halfdoom   Цитата(MrYuran @ Sep 11 2010, 11:39) Ну т...   Sep 11 2010, 12:11
|- - dxp   Цитата(halfdoom @ Sep 11 2010, 12:54) Поз...   Sep 11 2010, 11:49
- - WHALE   Кодvoid LCDwrite4(uint8_t value) { LDP ...   Sep 10 2010, 09:55
- - BSVi   Уже некоторое время пишу на плюсах в эмбеддед-прое...   Sep 12 2010, 06:58
- - neiver   Я исправил высказынные замечания и некоторые опеча...   Sep 12 2010, 08:14
- - sigmaN   Великолепная статья! Самому очень понравилась...   Sep 12 2010, 23:05
2 страниц V   1 2 >


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

 


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


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