Как считаете не слишком много кода чтобы изменить стояние вывода? По нормальному это требует пары асм инструкций.
много для чего? для кого? в каком случае? требует от кого? кто требует? для чего требует? по-нормальному - это как? кто устанавливает нормы? что будет за нарушение этих норм?
в винде, чтобы выключить компьютер, запускается 100500 процессов, которые жрут гигабайты памяти и работают больше 30 секунд - это нормально, хотя формально выключить питание можно в "пару ассемблерных команд".
Общаемся культурно и без лишних эмоций. Fakir.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
в винде, чтобы выключить компьютер, запускается 100500 процессов
Не нужно сравнивать простейший AVR и комп с гигагерцовыми многоядерными процами, с терабайтными винтами, гигабайтными оперативками.
ARV писал(а):
хотя формально выключить питание можно в "пару ассемблерных команд".
Напишите их. Учите, нужно корректно завершить все процессы (они могут сохранять настройки при завершении). При этом процесс может сообщить о невозможности завершения и отключение нужно отложить или остановить. Кроме этого нужно скинуть на диск кеш записи из оперативки, нужно перевести все устройства которые это поддерживают в режим пониженного потребления и много чего еще. Сможете это сделать несколькими асм командами?
Вообще-то меня не начинка ардуино IDE на данный момент интересовала, а потроха ассемблера.
Чего в IDE натыкано - меня вполне устраивает (в отличии от некоторых), а вот "особенности" директив avrasm2/c51asm от атмела как-то смуторно представляются... предложил прояснить вопрос... А в ответ... крупноформатный флуд...
Насчет "супербольшой и неоптимальной"... функция digitalWrite работает не только относительно порта ввода/вывода. Если целью является бит/флаг регистра управления (в том числе таймерами, сбросом флагов или еще чем) то там простым "... Для AVR примерно так PORTA |= 1<<4 ..." не удастся отделаться. Да и не все РСФ обрабатываются одними и теми же командами. В том числе включая и те, что доступны только как ОЗУ. А функция - ОДНА на все случаи.
Таки немного ошибся - смешал вместе и digitalWrite(pin, value) и bitWrite(x, n, b)... Хотя в принципе не дело пользователя копаться в устройстве функций компилятора...
Ну и прячьте уж те "портянки" под спойлер пожалуйста - собственно зачем так неаккуратно расходовать место... Понятно, что нервишки барахлят... Но надо уж как-то сдерживаться.
Последний раз редактировалось BOB51 Пт июн 05, 2020 18:09:25, всего редактировалось 1 раз.
Для AVR примерно так PORTA |= 1<<4 ..." не удастся отделаться. Да и не все РСФ обрабатываются одними и теми же командами. В том числе включая и те, что доступны только как ОЗУ.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
это ваша фамилия или он вас уполномочил от его имени выступать?
с чего вы взяли, что за вами последне слово в этом самом "здравом смысле"? почему мнение других вы сразу считаете не здравым? никогда не сталкивались с тем, что одному кажется наредкость неразумным, то другому представляется в высшей степени целесообразным? например, культурист качает мышцу, а шахматитс учит этюды - у кого здравый смысл преобладает?
как вы надоели со своими догмами!
Мурик писал(а):
Необоснованное увеличение объема прошивки
необоснованная трата государственных средств - это преступление. а необоснованная трата ресурсов МК - это какая статья какого кодекса, напомните? или снова ВАМ В ГОЛОВУ МОЧА ударила, и вы теперь называете "запретным" любое, что не под вашу дудку слпясано?!
Мурик писал(а):
Не нужно сравнивать простейший AVR и комп с гигагерцовыми многоядерными процами, с терабайтными винтами, гигабайтными оперативками.
а я сравниваю ПОДХОДЫ. а подходы всегда незыблемы: если удовлетворяет требованиям в работе, значит, сделано правильно. и не надо придумывать свои критерии правильнсти. это перед своим субподрядчиком будете умничать, а тут не надо, вам никто ничем не обязан.
Мурик писал(а):
Сможете это сделать несколькими асм командами?
а у нас соревнование на минимального объема код? вы не попутали ничего, уважаемый?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
VladislavS Это верно касательно ассемблера и только для записи фиксированного значения в фиксированный бит порта. Однако...
Порты в адуринке не только из "стандартного ряда" - использующие команду CBI $P,b/SBI $P,b В комплекте платформ имеются и экземпляры, где порт отображен в области ОЗУ (за пределами адресного поля 1-31)... Обращение к ним должно выполняться иначе. Второе digitalWrite(pin, value) выполняет как запись (1) так и сброс выбранного бита (0). Третье... Это порты с комбинированной настройкой выводов - цифровой обмен или "альтернатива" одновременно. А там уже дополнительные настройки необходимы и учет одновременно выполняемых функций. Это не говоря о том, что аналоговый ряд может использоваться и как цифровой. Так что "навороченность" функционала вполне объяснима. Но мне как пользователю, работающему с адуринкой под Си/С++ вникать в то, как устроены функции совершенно без надобности. Необходимо лишь знать что применить, чего правильно функции скормить и и что в результате получим.
Ежли захочется "садомазохизьму" - тогда гораздо приятнее под ассемблером поизвращаться.
ARV Мурик попытался втянуть пользователя в обсуждение тоонкостей построения компилятора... И... Чую... что-то не то вытащил... Ибо не может бысть digitalWrite(pin, value) при таймере - она обрабатывает только порты выводов, но не настройки других ресурсов - в случае доступа к ОЗУ рассматривается bitWrite(x, n, b)... А лезть в устройство IDE мне как-то уровень пока не позволяет...
Ибо не может бысть digitalWrite(pin, value) при таймере - она обрабатывает только порты выводов, но не настройки других ресурсов
Там еще есть analogWrite(), который обычно шимит. Если после него для того же пина вызывать digitalWrite, то придется сначала отключить PWM или DAС, смотря о каких мк идет речь.
Порты в адуринке не только из "стандартного ряда" - использующие команду CBI $P,b/SBI $P,b В комплекте платформ имеются и экземпляры, где порт отображен в области ОЗУ (за пределами адресного поля 1-31)...
Как раз доступ к такому регистру я вам и показал. Подставьте вместо UCSR1C ваш нестандартный PORTZ.
Можете посмотреть как устроена функция digitalWrite
зачем?!
вот тут в теме про stm32 упоминают какие-то кубы... вопрос: тому, кто пользуется этими кубами, зачем смотреть, как они устроены? разве вы не понимаете, что смысл использования этих кубов именно в том, чтобы не знать (или хотя бы как можно меньше знать), как они устроены?! если смотреть в их устройство, и тем паче вникать в его работу, отпадает сам смысл применять этот куб, т.е. вместо 3 кликов мышкой писать ручками небольшие простынки кода, сверяясь поминутно с даташитом и эратой...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Я им не пользуюсь как кодогенератором. Использую только чтобы быстро определить какая периферия с какими выводами связана или какие должны без значения умножителей и делителей системы тактирования. Это проще и быстрее чем смотреть даташит.
Порты в адуринке не только из "стандартного ряда" - использующие команду CBI $P,b/SBI $P,b В комплекте платформ имеются и экземпляры, где порт отображен в области ОЗУ (за пределами адресного поля 1-31)...
Как раз доступ к такому регистру я вам и показал. Подставьте вместо UCSR1C ваш нестандартный PORTZ.
BOB51 писал(а):
Обращение к ним должно выполняться иначе.
Только на асм. На C/C++ одинаково.
Это с учетом того, что корректное обращение должно быть name_port+0x20 ?? Ежли уж публиковать, то хоть в соответствии с правилами ассемблера... Ежли пример Сишный - там только УСТАНОВКА бита в 1. Следовательно еще и установку в 0 добавляем, затем анализ условия и....
Мурик писал(а):
BOB51 писал(а):
Ибо не может бысть digitalWrite(pin, value) при таймере - она обрабатывает только порты
У вас есть ArduinoIDE? Можете посмотреть как устроена функция digitalWrite.
Я ж уже говорил - не имею достаточной подготовки дабы аргументированно чего перепроверить на уровне анализа функционала компилятора. Тем более, что содержимое материала по "скрытому каталогу" к анализированию превышает 3,98 гигабайта (моя 1.8.9 с установленными дополнениями). Да и мне собственно все равно - чего там и как обрабатывается.
А вот на мои вопросы по компилятору ассемблера (avrasm2) Вы так и не ответили прикрываясь тем, что меня вобщем-то и не интересует на данный момент, хотя и заявляли, что ассемблер для АВР превосходно знаете!
Вы так и не ответили... хотя и заявляли, что ассемблер для АВР превосходно знаете!
В романе Марка Твена "Янки при дворе короля Артура" волшебник Мерлин предсказывал, какая погода будет в этот же день, ровно через 100 лет. Когда янки попросил Мерлина сказать, какая погода будет не через 100 лет, а завтра, тот ответил, что такими мелочами он не занимается.
Экскурс в историю. (Что бы не было недоуменных вопросов: "Почему у кого то пропала кнопка?")
Лет 20 - 25 назад, как и сейчас на форуме было три группы программистов. Первые хвалили AVR, вторые PIC. Из них некоторые делали что то на этих AVR и PIC, а третья группа ничего не делала, (вероятно виду своей неспособности), а только спорила, что лучше, AVR или PIC. Прошло 20 лет. Семейство МК увеличилось, но количество тех, кто что то делает и применяет то, что или им доступно, или то, что они считают оптимальным для конкретной задачи, осталось прежним, а количество тех, кто способен только рассуждать, на каком МК лучше мигать светодиодом, разрослось в геометрической прогрессии из за этого увеличения семейства МК. При этом третья группа превратились просто в какую то стаю троллей с повышенным самомнением считающих, что они тут самые важные, а модераторы должны следовать их указаниям, поэтому жмут на кнопку "жалоба" указывая, кого конкретно нужно убрать из темы, что бы не мешали им троллить, а когда модератор посчитав, что жалоба необоснованна и закрывает её, решают уже потролллить модератора, нажимая на жалобу по несколько десятков раз.
У некоторых, из этой третьей группы я временно в этом разделе кнопку "жалоба" отключил. Вероятно, для сохранения баланса, ряды этой третьей группы придется еще и прореживать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения