Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

книжи как по компиляторам, так и по железу не особо нужны - достаточно родной документации. В линуксе например набираешь в терминале "man gcc" и получаешь информацию и не надо даже интернета.
Насчет библиотек - прошли те времена, когда не было интернета и когда только появились авр пик и были только примеры от производителя на CD и то ассеблер. Сейчас есть GitHub - крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Полно готовых хороших документированых библиотек и производители микроконтроллеров иногда не остают и выкладывают качесвенные сниппеты. Типа FatFs от Чена сейчас врядли кто-то с нуля писать будет. Иногда подсматривал и ардуиновые библиотеки и переделывал на чистый Си. Сейчас, благодаря дискусии - вижу можно задействовать компилятор С++ и напрямую использовать исходники без переделок. Сделал мэйкфайл (на основе скопированного с гитхаба), который автоматом перемалывает все исходники ассемблера Си С++ в папке проекта и с этого всего получается единый elf а из эльфа уже хекс. Да еще этот мэйкфайл может прошивать, форматировать исходник, отправлять прошивку по почте...
з.ы. велосипеды изобретать скучно :))
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Воть и хорошо, что имеется альтернативный вариант представления информации - однако по возникающим к оному вопросам придется таки Вам ответы добавлять - я ни линуксом ни мэйкфайлами не пользуюсь - посему ничего ни прокомментировать ни проверить/ответить не смогу (в отличии от того, что сам выкладываю). В принципе вполне нормальный вариант предоставления материала получиться может...
:beer:
Насчет оффлайнового хэлпа...
Не всегда полный вариант изготовитель выкладывает - у той же ардуиноIDE часть описания библиотек встроена в оффлайн, а часть уже на сайт посылает. И такое довольно часто встречается ибо чем позднее редакция, тем больший упор на то, что пользователь непрерывно в инете сидит...
А это не есть хорошо... Может сегодня и привычно для молодежи - но я предпочитаю "хкардкор" в виде распечатанной книжи/листочков где можно карандашиком и иными "палками-писалками" отметки сделать.
Чего подправить, чего добавить по мере необходимости (у каждого по своему)...
Да и сидеть за компом не одно и то же, что развалившись (во кресле или на диване или еще где) размышлять (возможно с пивасиком или чем повкуснее)... И ГЛАЗКИ меньше напрягаются...
:wink:
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

вот ответ - этот мэйкфайл, он будет работать и в виндовс причем любом, даже древнем, в принципе и даже в дос, если есть компилятор
https://gist.github.com/rynr/72734da4b8c7b962aa65
он простой - легко переделывается под другие микроконтроллеры, я теперь, например, могу ардуиновые библиотеки и для пилюльки и пр. стмовых без переделок использовать в обычном проекте
з.ы. бывают очень удобные компьютерные кресла и хорошие мониторы 8), а заметки удобнее (имхо) в файлик и на гитхаб - для будущих поколений - это вам не залитые пивасом и закапаные рыбьим жиром бумажки :)
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Все хорошо в меру и во взаимодополнении.
8)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

тут не дождался, но часики на ардуино таки появились 8)
https://www.radiokot.ru/forum/viewtopic ... 3#p3922993
автор не стесняется подключать и не рефересные библиотеки,причем с того тревожного сайта, куда виндовс ХР не ходит:

Код: Выделить всё

/--------градусник-----------
#include <microDS18B20.h>                               // подключаем библиотеку градусника
//---------дисплей----------
#include "GyverTM1637.h"                                // подключаем библиотеку дисплея
//---------память-------------
#include <EEPROM.h>                                     // библиотека ПЗУ
//---------- часов------
#include <DS3231.h>                                     // подключаем библиотеку часов
//----------- шина------------
#include <Wire.h>                                       // шина I2C
//------------кнопки----------
#include "GyverButton.h"    
:write: написано - работают
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Просто мне очередные часеи "в стол" плодить ЛЕНЬ.
:sleep:
Если уж протестить на сравнение адуринку... более удачным было бы сравнение конструкции подобной тому, что в начале https://radiokot.ru/forum/viewtopic.php?f=62&t=94201
взято для тестов было (ассемблер и AT89S52/AtMega8515)...
https://radiokot.ru/forum/viewtopic.php ... 8#p1830978
и там далее....
Программа позволяла добавлять любые желаемые модули - главное, чтоб правила обращения соблюдались, да подключить платку с аппаратным расширением свободных выводов хватило.
Но там двустрочник на основе WH 1602 с подобием "окошек" - кноподжойстиком перемещаем курсор по экранным пиктограммам и соответственно "выполнить/пропустить"... и "интерактив" со строчкой подсказки/указанием режима работы...
Это ж не семисегментник дополнительной задачей.
Да и насчет библиотек...
EEPROM.h
Wire.h
это штатные ардуиньи, для далласа достаточно базовой OneWire (к сожалению без нее не обойтись - протокол весьма жесткий по времени)
Обработка кноп, часеев и данных с термодатчика - это уж кому как удобнее...[
:tea:
У меня от того проекта уже мало чего осталось - воть к примеру набросок схемки:
T8.pdf
(195.29 КБ) 148 скачиваний
Да чего-то от исходника:
at89s52prj_oldsys.zip
(686.25 КБ) 202 скачивания
За содержимое не уверен - взято из архива...
Все касательно той Т8 в свое время в "винной" дотошно обгрызли.
:wink:
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3923070#p3923070"]Просто мне очередные часеи "в стол" плодить[/uquote]
а все начиналось - "как появилось поползновение попробовать соорудить подобное устройство", был интересен конечный результат
[uquote="BOB51",url="/forum/viewtopic.php?p=3923070#p3923070"]Да и насчет библиотек...
Wire.h
это штатные ардуиньи[/uquote]
не всегда, там на тревожном сайте полно форков стандартных библиотек. Да, например тот же Wire.h, есть форк тут:
https://github.com/SodaqMoja/Wire
Эта библиотека начиналась как копия стандартной библиотеки Wire, поставляемой с Arduino 1.5.8.
Причина создания этой копии была в основном по следующим причинам:
нам потребовались некоторые модификации
исходный код Arduino не поддерживается отдельно (как обычная библиотека)
мы хотим иметь возможность работать с контролем версий (GIT)
характеристики оригинального дизайна неясны и нигде не встречаются
В Arduino TwoWire есть несколько сомнительных функций.

почему класс TwoWire является производным от Stream?
почему исходный код разделен на Wire.cpp и twi.h
И теперь, когда мы решили создать нашу собственную «вилку», мы также можем переформатировать код по своему усмотрению.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Насчет I2C как уже говорилось - можно и софтовый использовать.
Интерес насчет возможности сделать динамическую индикацию с совмещенной клавиатурой исчерпан проведенными тестами.
Куда этот вариант с пользой приткнуть - другое дело. Там где прикладной вариант мог пользу привнести - уже интерес потребителя исчез давно.
А в вопросах софтостроения у меня упор на проработку самостоятельного написания прожек на основе предоставляемого изготовителем IDE базового минимума.
8)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

было интересно как библиотеки (разные) совместно работают, с этим, видел, бывают у ардуинщиков бывают проблемы. Индикация и клавиатура и даже часы - это в ардуине оказывается очень примитивно (из посл. исходника):

Код: Выделить всё

dt = clock.getDateTime();                             // опрос часов
disp.displayClock(dt.hour, dt.minute);          // показ времени
if (butt1.isClick()) ...
if (butt2.isHolded()) ...
там еще и вывод °C и фоторезистор для яркости часов и контроль за питанием. И никаких таймеров по совпадению и весь код в loop, как и завещал король Ардуин (король Италии) :)
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Вот потому и надо учиться САМОМУ те библиотеки составлять.
Ведь по сути библиотека в ардуино это вариант многофайловика.
А каково качество того "внешнего класса" в другом проекте автор обычно оценить не всегда может.
Вот и тренируюсь помаленьку.
8)
Насчет совместной работы нескольких библиотек - этот вопрос ранее уже попадался.
Только в данном случае это уже доступ из одного метода внешнего класса к другому методу внешнего класса.
Действительно задача порой весьма пакостная.
:roll:
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

если библиотеки работают, зачем их "составлять". А чтоб самому "составлять" надо C++ изучать. А если изучить С++, то и среда ардуино не нужна - можно в любом иде или блокноте, свои, чисто С++ библиотеки и проекты написать и также использовать опыт человечества. Вот например библиотечки готовые человек уже написал для AVR ардуиной не поддерживаемых и готовый мэйкфайл c++17 есть:
https://github.com/srfilipek/savr
SAVR разработан как cross-micro C++ library для 8-битного семейства Atmel AVR. Он в основном разработан на Arduino, но модифицирован для кроссплатформенности (кросс-микро) для других AVR, которые у меня есть.
Это постоянно растущая коллекция кода. Достигнув значительного размера и обнаружив, что он (по крайней мере, в некоторой степени) полезен для других, которых я знал, я решил, что лучше всего разместить код публично для всех.
з.ы. на тревожном сайте и обучалки есть:
*Пишем свою библиотеку для Arduino
*Объекты и классы в Arduino
и т.д.
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1328
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

Re: Котуинко

Сообщение главный колбасист »

Полно готовых хороших документированых библиотек и производители микроконтроллеров иногда не остают и выкладывают качесвенные сниппеты.
http://we.easyelectronics.ru/AVR/matema ... v-avr.html
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

oleg110592
Драть только готовое - сапсем думать разучиться можно.
Другое дело - разумный минимум.
:tea:
С++ по "стандартным" книгам рассчитан на ПК, а не на МК - это достаточно РАЗНАЯ идеология в отношении аппаратных ресурсов.
Посему достаточно часто "трудности перевода"(в смысле того, что на ПК отрабатывается ОС, а на МК - иными приемами).
А в отношении конкретной прикладной самоделки таки удобнее самому думать чего и куда впихнуть.
8)
главный колбасист
Гораздо более полезным было бы выкладывание АЛГОРИТМОВ соответствующего математического минимума.
А уж как их реализовать в конкретном проекте и под конкретным компилятором (ессно и набором команд/ресурсов) это задача автора проекта.
8)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3923631#p3923631"]Драть только готовое - сапсем думать разучиться можно.[/uquote]
дык в ардуино на это ж главный принцип "не думать" - там готовый бутлоадер, сразу готовая настройка таймера0 для тех же милисов, готовые команды для работы с портами и периферией и т.д.
[uquote="BOB51",url="/forum/viewtopic.php?p=3923631#p3923631"]С++ по "стандартным" книгам рассчитан на ПК, а не на МК - это достаточно РАЗНАЯ идеология в отношении аппаратных ресурсов.[/uquote]
в ардуино вообще то на С++ пишут (из вики):
Язык программирования Arduino называется Arduino C и представляет собой язык C++ с фреймворком Wiring, Он имеет некоторые отличия по части написания кода, который компилируется и собирается с помощью avr-gcc, с особенностями, облегчающими написание работающей программы — имеется набор библиотек, включающий в себя функции и объекты. При компиляции программы IDE создает временный файл с расширением *.cpp.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Некоторое упрощение процесса прошивки в принципе не помеха.
Относительно добавленных функций и уменьшения содержимого базового заголовка также упрощает работу.
Значительно больше внимания самой программе, чем освоению "нюансов компилятора".
Относительно С++ - наконец-то хоть ктой-то мое древнее исходное замечание подтвердил.
:wink:
Я речь не о том, что у адуринки С++ применяется, а о том, что все учебные материалы по С++ сделаны в отношении ПК.
Ессно часть вопросов применения имеет отличия.
А вот на те вопросы (по мере их возникновения) мне обычно ответы практически ни от кого и не поступали (за редким исключением)... Приходится самому все опытным путем разбирать.
8)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3923731#p3923731"]все учебные материалы по С++ сделаны в отношении ПК.[/uquote]
C++ он и в Африке С++. Если глянуть книгу отца-основателя языка, Страуструпа - там речь про сам язык
Книга Б. Страуструпа "Язык программирования С++" дает описание языка, его ключевых понятий и
основных приемов программирования на нем. Это завершенное руководство, написанное создателем
языка, которое содержит описание всех средств С++, в том числе управление исключительными
ситуациями, шаблоны типа (параметризованные типы данных) и множественное наследование.
Применять С++ для микроконтроллеров начали относительно недавно (ардуинщики наверное одни из первых) - там особых отличий от ПК вроде как и нет. Смотрим тот же digitalWrite:
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *out;
out = portOutputRegister(port);
cli();
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
}
все в рамках обычного С++ и даже обычный Си справится
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Может и "в Африке"... Только ВСЕ примеры в литературе описаны относительно систем ввода/вывода полноценного ПК.
А в случае с МК имеем весьма жесткие отличия обусловленные самой структурой МК.
Первое - все содержимое программы в ПК загружается и отрабатывается в ОЗУ.
Для МК и ОЗУ и ПЗУ имеют значение.
Второе - подсистема ввода-вывода МК отнюдь не универсальна - индикаторы разных систем отображения и разных интерфейсов по управлению, прямое управление выводами и аппаратными средствами, включая прерывания. Для полноформатных ПК в подавляющем большинстве случаев это решается средствами ОС. Да и конфигурация в ПК практически ОДНООБРАЗНА отличия парируются за счет средств БИОС и дополнительных драйверов о коих пишущий прожку под ЯВУ может совершенно не беспокоится - оные УЖЕ работают "по умолчанию".
Вот та разница и представляет дополнительные трудности.
Второе (проистекает частично из первого) - жесткое разграничение прав доступа в рамках классов.
Не совсем удачное планирование распределения задач/доступа к ресурсам/данным и при росте проекта под МК возникают "затыки" приводящие к необходимости переписывать ВСЕ заново.
Собственно - это обычные вопросы изучения/освоения.
Воть даже в ассемблере и то попалась нештатная ситуация по порядку размещения и применения данных - у С++ таких точек гораздо больше.
8)
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Котуинко

Сообщение VladislavS »

BOB51, ваш бред про С++ не имеет ничего общего с действительностью ни по одному из пунктов.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3924029#p3924029"]примеры в литературе описаны относительно систем ввода/вывода полноценного ПК.[/uquote]
В С++, как и в С, нет встроенных в язык средств ввода-вывода.
В С для этих целей используется библиотека stdio.h.
В С++ разработана новая библиотека ввода-вывода iostream, использующая концепцию объектно-ориентированного программирования
Никто не мешает iostream на АВР, тем более что уже сделано:
Форматный вывод для МК на Си++
http://we.easyelectronics.ru/Soft/forma ... na-si.html
еще часики на ардуино
https://habr.com/ru/post/527818/
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Эти часики с электромагнитной индикацией я уже видел. Неплохо для украшения какой выставки...
:sleep:
Со stdio.h в принципе особо ничего нового - функционал типовой обработки ввода-вывода для того, чтоб не морочиться с самодельной упаковкой.
Однако это минимальный примитив - для того же матричного индикатора уже придется промежуточный драйверок сделать - с учетом соответствующей документации. Причем в каждом конкретном случае средства индикации и ввода данных так же потребуют "прокладки" составленной с учетом их документации и требований проекта (не говоря уже о прочихСБИС, применяемых в проекте). Ессно оные будут использовать часть stdio.h, но также не обойдутся и без конкретно дописанной части согласно технических особенностей конкретных устройств. А в случае работы с ПК - подобное уже "интегрировано по умолчанию" и соответственно примеры часто довольно сложно воспринимать, ежли ранее не изучался Си в приложении к ПК.
8)
Относительно iostream - собственно пока не могу себе представление о "потоке" построить...
Как абстракция обобщенного ввода-вывода понятно... Но это не то, чтобы "ключ" к восприятию получить.
Т.е. что оный в примитиве представляет... как тот "поток" пощупать...
Вроде как работа через кольцевой буфер...
Вобщем пока восприятия нету... (ибо всюду "...это вы уже знаете...")...
:dont_know:
Придется ждать когда "ключик" попадется.
:roll:
И уж ёжли копаться - то предпочтение в первую очередь
http://www.cplusplus.com/reference/
а уж потом источникам с разными вариантам трактовки.
8)
Ответить

Вернуться в «Разные вопросы по МК»