Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22

Классы взаимодействия с пинами микроконтроллера

22.05.2014, 17:18. Показов 4609. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возвращаюсь в програмирование микроконтроллеров после 5 лет работы с ПЛИС. Спрос на рынке труда на микроконтроллеры преобладает. Теперь за 5 лет рессурсы выросли многократно и теснота по памяти, быстродействию и регистрам больше не тревожит. Стало модным и, главное, важным для создания надежных проектов писать на С++.
Основательно засел за учебники(уж который раз!) .. и вспомнил простые мучения с распределением портов на внешние микросхемы. Естественно с прикидкой,- как я буду потом писать код.

Пока по приоритетности возник вопрос и , надеюсь, тут мне местные гуру и корифеи ткнут(я не нашел примеры) как красиво создать универсальный класс\шаблон, где бы я мог собирать побитно оставшийся ресурс для пользователя чтения\ записи. Чтобы все эти сборки пинов (разные регистры), запоминание не тронутых были спрятаны для пользователя.
Если у кого есть примеры,-буду рад. Понимаю, что для разных контроллеров это будет по разному. Но главное - идея! Остальное я сам сделаю...

Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2014, 17:18
Ответы с готовыми решениями:

Комп работает только с 20 пинами
Всем привет. Вкратце опишу проблемку. Оставил комп на ночь, утром встал и обнаружил, что он повис, перезагруз и не включался монитор. Все...

Как правильно работать с пинами портаG
Здравствуйте! Подскажите пожалуйста,как мне корректно взвести(сбросить) нужный пин портаG в Atmega128?

Можно управлять отдельно пинами ide-разъема?
Скажем мне надо получить raw поток, или надо с такой-то частотой узнать логический уровень на таком-то пине ide разъема. или наоборот...

51
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 16:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Мурман Посмотреть сообщение
C++ как раз и есть тот самый ...строго типизированный язык!
серьезно

C++
1
2
int i;
char * a=(char*)&i;

Цитата Сообщение от Мурман Посмотреть сообщение
польователю дают доступ только к строго определенным местам и все прячут!
C++
1
2
3
int *i=new int;
for(int j=0;j<100;j++)
   i[j]=0;
схавает и не поморщится
C++
1
2
int a[10];
a[10]=0;
в обоих случаях выход за пределы массива,т.е память которую не разрешали трогать
как только появляется указатель, все можешь лезть в памяти куда хочешь, даже если её нет
компилятор слова не скажет
C++
1
2
3
{
 int i=new int;
}
утечка памяти
кто контролирует? где "сборщик мусора"

а знаменитое
C++
1
i=i++;

почитай знаменитое "Верёвка достаточной длины, чтобы... выстрелить себе в ногу. Правила программирования на С и C++" Ален И. Голуб
или
"Скользкие места C++" Стефан К. Дьюхэрст

Добавлено через 1 минуту
Цитата Сообщение от Мурман Посмотреть сообщение
.Есть, кстати, такой метод поиска ошибок в С. Пропускать, через С++ компилятор...
дурацкий способ

есть веши которые поддерживает Си но не поддерживают плюсы, например рекурсивный вызов Майн
3
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 17:24  [ТС]
Странно, что вы приводите примеры далекие от ООП...
Брюс Эккель Философия С++ (наш случай,- он из С-железячников) как раз акцентирует внимание на строгой типизации самого С++. Сама идея ООП без возможности сокрытия вряд ли устроил бизнес... Корни оттуда!
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 18:23
Цитата Сообщение от Мурман Посмотреть сообщение
как раз акцентирует внимание на строгой типизации самого С++.
строгая типизация это когда к типу int ты и обратишься как к int никакими ухишрениями в char не превратишь
Цитата Сообщение от Мурман Посмотреть сообщение
Странно, что вы приводите примеры далекие от ООП...
это разве не С++?
да и ООП в плюсах не совсем ООП
у шарпа он гораздо сильнее

это не хорошо и не плохо, это данность
где то хорош Си( высокоуровневый ассемблер) где то плюсы, а где то Лисп нужен

периодически наблюдаю как в ветке "С++ для начинающих" появляются задачи для баз данных
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 19:05  [ТС]
Тут речь не о встроенных типах, а о пользовательских, где эта хитрость предусмотрена.
В конце концов, если взять IAR среду, там есть, и уже давно,-опция С++ даже для AVR!!!
Это мода или веление времени, ...возможность нового стиля проектирования?

Кстати, у компилятора С++ есть куча настроек, где уровень контроля типизации можно менять. В пределе,- явное преобразование типов!
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
23.05.2014, 19:17
...вот только не надо кучи восклицательных знаков, на форуме это приравнивается к крику. Эту опцию вообще кто-то использует при ограниченных ресурсах? Не припомню такого.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 19:53  [ТС]
Да легко... Это уже механически после политических баталий...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 19:54
Цитата Сообщение от Мурман Посмотреть сообщение
Тут речь не о встроенных типах, а о пользовательских, где эта хитрость предусмотрена.
что предусмотрено?
где это указано в стандарте?
Цитата Сообщение от Мурман Посмотреть сообщение
В конце концов, если взять IAR среду, там есть, и уже давно,-опция С++ даже для AVR!!!
и что?
Как это влияет на приведение типов?
Цитата Сообщение от Мурман Посмотреть сообщение
Кстати, у компилятора С++ есть куча настроек, где уровень контроля типизации можно менять.
и что?
Как это влияет на приведение типов?

знаешь ты слишком много приписываешь языку
вспоминается чеховское "Дуэль есть дуэль, и не следует делать ее глупее и фальшивее, чем она есть на самом деле."
ты недавно узнал про язык?
я как то за пятнадцать лет, подрастерял этакий восторг

или пишем по всем канонам ООП, тогда "фиг вам богатства и счастья", в смысле быстродействия и эффективного использования внутренней памяти

или вылизываем код, долбимся на низком уровне, тогда забываем об универсальности и красоте ООП
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 20:31  [ТС]
Управление доступом-краеугольный камень при создании классов.

Возможность написания проекта на С++ для AVR смущает. Там же тесно!.. Тем не менее..

Приведение типов char в int и наоборот, при некоторых настройках обязательно.

Язык С++ я знаю уже 10 лет. Познакомился еще в прошлом веке. Но по-новому глянул на него только недавно, когда выслушивал ругань между собой программистов в курилке. Страуструпа прочел уже с другим настроем...
Коллективная работа в ООП более осмысленная и её проще подхватить постороннему.
Мне конечно же привычней работать по-старинке. Сам себе хозяин. Трюки всякие, не утруждать себя комментами =).
..А теперь во мне нет вот этой самой красоты и универсальности, благодаря этому открытому вопросу в старт-топике.. Моя задача как раз и состоит,- усвоить метод решения задачи методом ООП. Вот почему я тут!
Парить в академических задачах - одно,- привязать к привычным ресурсам контроллера - другое. Кажется,- переболеешь немного и дальше пойдет легче...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 20:54
Цитата Сообщение от Мурман Посмотреть сообщение
Коллективная работа в ООП более осмысленная и её проще подхватить постороннему.
разве с этим кто то спорит?
Цитата Сообщение от Мурман Посмотреть сообщение
Трюки всякие,
трюки для понтов или для эффективности кода?
Цитата Сообщение от Мурман Посмотреть сообщение
усвоить метод решения задачи методом ООП.
не все задачи решаются ООП
иначе не было бы целой тучи языков. все бы перешли на плюсы

под задачу выбирается инструмент, но никак не наоборот
есть задачи которые например решаются на том же Лиспе элементарно, а на плюсах через одно место
или например работа с массивами( матрицами) как решается на Фортране, а как на Си
Цитата Сообщение от Мурман Посмотреть сообщение
Управление доступом-краеугольный камень при создании классов.
На Си это тоже делается элементарно
в заголовочном файле пара функций ввод/вывод а в Си файле вся реализация
1
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
23.05.2014, 20:56
Цитата Сообщение от Мурман
Да легко... Это уже механически после политических баталий...
никаких баталий тут не будет. Тема будет просто закрыта.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 21:15  [ТС]
Да это ведь прописано в правилах... Тут не то место.
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.05.2014, 21:17
Не по теме: Ну вот опять обломали, а я специально пиво и чипсы купил.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 21:21  [ТС]
ValeryS вам вопрос. Вы пробовали для себя ООП?
По сути ведь организовать абстрактный порт их обрывков регистров, оставшихся от распределения более приоритетными внешними системами не должно быть сложно. Универсально не получится. Это понятно теперь. Может не там я ищу учебный вариант?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 21:24

Не по теме:

Цитата Сообщение от Витальич Посмотреть сообщение
а я специально пиво и чипсы купил.
неужто выбросишь=-O



Добавлено через 3 минуты
Цитата Сообщение от Мурман Посмотреть сообщение
Вы пробовали для себя ООП?
а как думаешь под винду я на чем пишу?
Цитата Сообщение от Мурман Посмотреть сообщение
По сути ведь организовать абстрактный порт их обрывков регистров, оставшихся от распределения более приоритетными внешними системами не должно быть сложно.
попробуй
для начала опиши члены и методы класса
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 21:31  [ТС]
Да нет! Я не имел ввиду Винду..

Надо присесть. Получится через недельку...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 21:37
Цитата Сообщение от Мурман Посмотреть сообщение
Я не имел ввиду Винду..
а для маленьких компьютеров сиречь микроконтроллеров, я пока не вижу задач с ООП
мне как раз нужна не абстракция а конкретика
но может мне задачи такие не попадались
Цитата Сообщение от Мурман Посмотреть сообщение
Получится через недельку...
Дай бог
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
23.05.2014, 22:44  [ТС]
Вот набрел на энтузиаста AVR showthread.php?t=17357

Добавлено через 14 минут
http://habrahabr.ru/post/149683/
...Если кратко, то при грамотном использовании C++ позволяет писать столь же эффективные решения, что и решения на C, но при этом получать более читаемый и более безопасный за счет проверок компилятора код. А механизм шаблонов позволяет писать эффективные реализации обобщенных алгоритмов, что проблематично на C.
Добавлено через 2 минуты
Это вообще отсюда...
Шаблоны проектов на C++ для AVR [GCC, IAR]
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
23.05.2014, 23:22
Цитата Сообщение от Мурман Посмотреть сообщение
Если кратко, то при грамотном использовании C++ позволяет писать столь же эффективные решения,
ключевое слово грамотном
а вот цитата(точнее цитата цитаты) из твоей ссылки
IMHO главная проблема писателей подобных систем - чрезмерная универсальность, превышающая реальные потребности решаемых с помощью подобных инструментов задач.
подумай почему тот же STM который создает свои API это не реализует?
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
24.05.2014, 00:42
Мурман, что же вы прицепились со своим обектно орентированым программированием. Максимум что можно для программирования МК взять из ООП так это составление блок-схемы алгоритма.
На C++ пишите программы для МК лишь бы результат был положительный.

Добавлено через 3 минуты
Мурман, можно взять 1 МК 2 МК 10 МК и между ними распределить ресурся. Как бы язык программирование не главное. Схемотехнику тоже надо знать.
0
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 22
24.05.2014, 09:15  [ТС]
Вы не читали начало диалога, скорее всего...
Ноги растут от работодателей. Для программиста микроконтроллеров требуют знаний С++. Раньше такого не было.
В буквальном смысле,- серьезные фирмы создают себе базу для качественного тестирования своего продукта.

Я как раз из схемотехников... С большим опытом...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2014, 09:15

Материнка с 8 пиновым питанием для процессора а блок с 4 пинами
БП LC-B450ATX (P450A-C) дело в том что материнка с 8 пиновым питанием для процессора а блок с 4 пинами. подключаю 4пин и все...

Скрипт для генерации .h файла с пинами МК из схематика Eagle
Стало мне как-то лениво руками переписывать со схемы названия цепей и соответствие их пинам МК. Особенно когда поправишь что-то в схеме, а...

АЦП ATMEGA32. Непонятки с пинами AVCC и AREF. Тема закрыта.
С АЦП у меня небольшой опыт. Сейчас делаю проект, где АЦП использую второй раз. В первый раз я делал проект на ATTINY13. Там все просто...

Работа с файловой системой: классы Directory и Filе и классы DirectoryInfo и FileInfo
Уважаемые форумчане помогите пожалуйста с практической работой. Программным путем: В папке С:\temp создайте папки К1 и К2. В...

Реализовать классы различных профессий и классы фирм из разных отраслей производства
Помогите реализовать задачу Шаблон Строитель(Builder) Реализовать систему, которая будет нанимать различных работников на работы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru