|
Как ПРАВИЛЬНО программировать на С++, Вопросы по программированию на С++ для микроконтроллеров. |
|
|
|
 |
Ответов
|
Aug 21 2010, 18:24
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Ну вот как раз сегодняшний пример. ATmega48. Программа сравнительно древняя на С (и нет желания её переписывать начисто, но что-то новое даже такого объёма будет сразу писаться на С++). Дописывается кусочек функционала, понадобилось при входе в некоторый режим сохранить состояние некоторых выходов, выключаемых в этом режиме, а при выходе из режима восстановить. Ну всё понятно, заводится флаг нахождения в этом режиме (в режим может быть повторный вход, который теперь отличается тем, что сохраняь уже отключенные ножки не нужно) и буферная переменная для сохранения состояния выходов. Т.е. появляются две глобальных переменных файловой области видимости и связь между функциями через них. На С++ все эти функции изначально объединяются в класс-«драйвер режима» и потом хоть обдобавляйся в этом классе приватных полей. Казалось бы, между Код SomeModeOn(); SomeModeOff(); Код someMode.On(); someMode.Off(); разницы не видно, «а она есть»© Кстати, классы, изначально предназначенные для того, чтобы иметь только один экземпляр - вполне нормальное явление.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 24 2010, 11:21
|

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

|
Цитата(ReAl @ Aug 21 2010, 22:24)  Кстати, классы, изначально предназначенные для того, чтобы иметь только один экземпляр - вполне нормальное явление. Да это явление может и нормальное, я не спорю. Хуже когда этот класс в принципе не может иметь несколько экземпляров - это уже архитектурная проблема, говорящая о том, что классу тут делать нечего. Можно например написать класс CIdle, который будет инкапсулировать в себе бесконечный цикл, имеющийся в любом контроллере: Код class CIdle { CIdle() { sei(); while(1) {} } } Применение Код main() { // инициализация периферии ... // дальше работают только прерывания CIdle idle; } Но этот пример попахивает онанизмом, не находите? Даже если в него навтыкать указателей на функции и заставить их вызывать по кругу, пользы от него не прибавится. Цитата(MrYuran @ Aug 23 2010, 11:33)  "С++ в микроконтроллерах. Почему бы и нет?" Экспортный вариант: "С++ for microcontrollers. Why no?" По-английски это не звучит, надо по-французски: pourquoi pas?  Цитата(MrYuran @ Aug 23 2010, 11:33)  У "плюсов" есть ещё один несомненный плюс. Прежде чем сломя голову что-то писать, надо сначала продумать структуру. То есть, дополнительный организующий момент. Да, это действительно полезно...
|
|
|
|
|
Aug 24 2010, 15:15
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(777777 @ Aug 24 2010, 14:21)  Да это явление может и нормальное, я не спорю. Хуже когда этот класс в принципе не может иметь несколько экземпляров - это уже архитектурная проблема, говорящая о том, что классу тут делать нечего. Можно например написать класс CIdle, который будет инкапсулировать в себе бесконечный цикл, имеющийся в любом контроллере Во-первых, если я хорошо высплюсь, то я и "чисто-С-шных" маразмов в ответ смогу придумать как доказательство того, что С в микроконтроллрах делать нечего. Во вторых, в этой теме уже говорили - и в С несколько переменных, относящихся к одной и той же логической сущности, имеет смысл объединить в структуру даже если эта структра используется в программе в принципе один единственный раз. Это будет "архитектурной проблемой" ? Лучше пусть будет несколько на вид независимых переменных?
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
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 neiver Примеры есть у меня, есть и свой подход к программ... Aug 19 2010, 14:40 777777 Цитата(neiver @ Aug 19 2010, 18:40) А так... Aug 20 2010, 08:32  MrYuran Цитата(777777 @ Aug 20 2010, 12:32) Я, в ... Aug 20 2010, 08:37   777777 Цитата(MrYuran @ Aug 20 2010, 12:37) Да х... Aug 20 2010, 11:15    MrYuran Цитата(777777 @ Aug 20 2010, 15:15) Это л... Aug 20 2010, 11:39    dxp Цитата(777777 @ Aug 20 2010, 18:15) Нет, ... Aug 20 2010, 12:43     MrYuran Цитата(dxp @ Aug 20 2010, 16:43) Кстати, ... Aug 21 2010, 16:37 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 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|