Easyelectronics.ru

Электроника для всех
Текущее время: 26 ноя 2020, 21:17

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 102 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 17:53 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
Snake писал(а):
ТС, видно что ты крутишься в своём мирке, считая что твой асм и твоя "система" самое то. Понятно хобби, понято любовь к асм, но заради чего? Ведь не от не.уй делать же люди (Денис Ритчи) придумали более высокоуровневый язык - что бы было меньше траху, согласися?! А так получается, да, красиво, но заради чего? Весь этот опрос ваших датчиков (в вашем примере) делается безо всяких надстроек, типа вашей ОС, просто и безболезненно. Но хобби - это да. Это как суходрочка.


Есть несколько очевидных моментов которые Вы почему-то не замечаете. Игнор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 17:56 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Окей, предлагаю всем присутствующим отправить топикстртера в глубокий игнор и пусть он сам с собой тут и беседует. Всё, отправляю ТС-а в глубокий игнор. Гудбай, не кашляй.

Цитата:
сть несколько очевидных моментов которые Вы почему-то не замечаете.

Да, мы не замечаем "сверхгениальности" топикстартера. Посему - ТС-а - в жоский игнор. Реально, давайте все отправим его в игнор. Тут ловить нечего. "Сверхгениальность" - она только для сверхгениальных.
А написанное топикстртером, если уж почестнаку, оно весьма посредственно, если не сказать более.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 18:06 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
Интересно, объяснить хамлу, что он хам, преходящий на лчиности, не имеющий никакого уважения к людям, не понимающий элементарного (например для чего нужно хобби) живущий со своими сомнительными идолами создавщих для таких как он шаблоны - это является хамством? Будет ли мой пост удален и/или его тоже?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 18:13 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
О, а игнор-то работает!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 20:43 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 2004
w5277c писал(а):
Да, согласен, но нужно прийти хотя бы к бетта, чтобы писать апи. Исходники разделены, обратите внимание на префиксы в виде подчерков.
И все процедуры снабжены заголовком с описанием процедуры и используемых на входе и выходе регистров.
Пока только на русском.
С GAS может быть проблема, с моей колокольни видно, что avra известен среди любителей лучше, чем GAS, а мое решение спецам незачем, оно расчитано на любителей.
Не уверен что GAS в этом случае будет плюсом.

Я посмотрел и гитхаб, и жж, и сайтик
Но большинство не будет разбираться если с первого взгляда непонятно
И я бы не рассчитывал на любителей асма, у них свои тараканы, скорее на ардуинщиков измученных делеями

_________________
mcu.goodboard.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 21:23 
Старожил

Зарегистрирован: 10 мар 2012, 11:11
Сообщения: 219
vt340 писал(а):
... на ардуинщиков измученных делеями

Красиво сказано.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 21:46 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Тысячи людей многие годы используют автоматное проектирование и прерывания - и всё прекрасно работает - и УАРТ, и контакты двери, и термометр, и дисплей. Просто трезво взгляните на проблему - проблемы то нету!
Распишите приоритеты по времени реакции. Датчику двери не нужна моментальная реакция - даже 100 мс задержки не будут существенно заметны. Значит, опрос датчика двери может происходить без жесткого выдерживания интервалов, в общем длинном цикле, не мешая более точному выдерживанию таймингов при опросе термометра на 1-wire. RTC так же имеет низкий приоритет, а обмен с ними может идти по прерываниям от I2C, причем в обработчике прерывания нужна лишь отправка и прием байтов. Хардварный УАРТ тоже производит прием и отправку по прерываниям. Остальное - аналогично.
Софтварный УАРТ - это злое наследие старого железа и ардуино-скетчей.
Так что, автоматы+прерывания хорошо работают уже многие годы в подобных условиях. Просто у некоторых людей возникают сложности именно с распределением этих приоритетов по времени реакции. А в остальном - никаких проблем для тех мелкопрожэктов, коротые может тянуть старая аврка.

Ардуинщики, как я уже писал, сидят на С++, и попытка внедрить С++ в ассемблер - это вообще будет жесть. Топикстартеру придется изучать С++, а он никогда этого не потянет :) А если потянет, то вскоре плюнет на ассемблер. :)

Ошибка топикстартера была в том, что он, изначально указывая, что это хоббийный прожэкт, но между строк надеялся (и высказался за это) на то, что люди тут же начнут использовать его чудо-писанину и топикстартер станет знаменит и почитаем, как гениальный талант из прошлого :))) Но вместо восторженных отзывов он получил "фи" и непонимаение. Несоответствие ожидаемого и действительного называется ФРУСТРАЦИЕЙ :) И фрустрация как раз и стала причиной неадекватного его поведения. Ничего личного, просто констатация фактов! Ничего личного! Просто взгляд со стороны!


Последний раз редактировалось Пельмень Мясной 24 сен 2020, 22:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 21:59 
Старожил

Зарегистрирован: 10 мар 2012, 11:11
Сообщения: 219
В том то и дело, что хоббийный не значит что сдуру нужно повторять. Ну если сам ебонутый, то что ж теперь, все должны быть такими? Извините.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 22:57 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 1443
w5277c писал(а):
Цель сего поста? Свое мнение о данном коде я оставлю при себе.

Цель - просвятительская! :)
Показать, что ассемблер не ограничивается в своём понимании типовым использованием команд переходов.

Show "Примерно как описано в сообщении 2003г."


P.S. Тем более, что раз кто то скачивает, то смысл и в этом был. :)

Кстати, есть целая полноценная ОС для ПК созданная на языке ассемблера Х86 - FASM, название ей KolibriOS!
(На FASM для HiASM сделан целый пакет поддержки в ООП стиле - вот же люди смогли)

для AVR тоже есть вариант прикручивания FASM (ищется в i-net)

интересно, что для AVR популярна тема проектирования эмуляции других различных процессоров, начиная от 65с02, до полноценного ZX-Spectrum ... (вроде даже встречал, что кто то на AVR запускал эмуляцию ядра MSP430, но сейчас не могу этот проект найти)
а там в этих ядрах и свои ассемблеры и среды разработки. :)

как используется AVR ассемблер в этих проектах, это отдельный вопрос для возможного "просвящения".


Последний раз редактировалось KPG 24 сен 2020, 23:39, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 24 сен 2020, 23:13 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 779
Мой сосед говорит: "Если тебе двое сказали, что ты пьян, то иди и проспись." Так, лирическое отступление.

w5277c, помнишь, что я 6 страниц (3 удалил модератор) и 2 дня назад сказал об этой теме? Напомню, что мой пост был девятым, и сказал я, что с таким подходом к делу разработка ТС никому нафиг не будет нужна, поэтому тему фтопку. Это, кстати, ответ на вопрос, почему я решил, что опыта у меня больше, чем у ТС.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 01:46 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 1443
Пельмень Мясной писал(а):
Ардуинщики, как я уже писал, сидят на С++, и попытка внедрить С++ в ассемблер - это вообще будет жесть. Топикстартеру придется изучать С++, а он никогда этого не потянет :) А если потянет, то вскоре плюнет на ассемблер. :)

Встретилась статья
ATtiny13a использование ассемблера GNU-AS в программах на Си
есть "вероятность", что для целей TC это более интересный вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 05:36 
Заглядывает иногда

Зарегистрирован: 14 май 2017, 19:45
Сообщения: 82
Лет 15 назад написал для себя простой планировщик задач на ассемблере для AVR. Периодически пишу и на си и на ассемблере. До сих пор использую. Если программа чуть сложнее пары десятков строк использую ОС или планировщик. На много удобней и быстрей получается.
Раньше у самописного планировщика было динамическое управление памятью, прерываниями, сообщения, продвинутое управление процессами. Потом понял что это всё лишнее, удалил. Оставил только динамическое управление процессами.
Мне удобней оказалось статическое управление ресурсами. Да, немного больше писанины, но в отладке проще, скорость выше и памяти меньше занимает.
AVR неудобен для операционных систем, но с ОС на много проще даже на нём.
Пару лет назад, на заказ писал программу на 1000 строк для AVR без ОС на Си. Уверен то же но с ОС занимало бы меньше памяти и меньше строк было бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 05:43 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
Конечные автоматы. Точка. И тебе параллельные задачи и планировщик с диспетчером и прочими.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 06:06 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
DbIHbIC писал(а):
Лет 15 назад написал для себя простой планировщик задач на ассемблере для AVR. Периодически пишу и на си и на ассемблере. До сих пор использую. Если программа чуть сложнее пары десятков строк использую ОС или планировщик. На много удобней и быстрей получается.
Раньше у самописного планировщика было динамическое управление памятью, прерываниями, сообщения, продвинутое управление процессами. Потом понял что это всё лишнее, удалил. Оставил только динамическое управление процессами.
Мне удобней оказалось статическое управление ресурсами. Да, немного больше писанины, но в отладке проще, скорость выше и памяти меньше занимает.
AVR неудобен для операционных систем, но с ОС на много проще даже на нём.
Пару лет назад, на заказ писал программу на 1000 строк для AVR без ОС на Си. Уверен то же но с ОС занимало бы меньше памяти и меньше строк было бы.



Осторожно, иксперты закидают ссанными тряпками. ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 06:07 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
Тролли разным мастей, не старайтесь, я вас не читаю, вы в игнорах. А кого забыл, то сразу добавляю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 08:20 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 779
Цитата:
попытка внедрить С++ в ассемблер - это вообще будет жесть

Пардон меня за некоторый оффтоп. Это уже давно сделано. Ещё Турбо-Ассемблер под MS-DOS имел объектно-ориентированные расширения, облегчающие написание классов, наследование и использование виртуальных методов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 09:23 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
w5277c писал(а):
Тролли разным мастей.

Надеюсь это не в мою сторону. Я пробовал разные диспетчеры, RTOS на ассемблере. И осознал, что лучше конечных автоматов ничего нет. За свою практику я делал разной сложности проекты, и КА пока себя не исчерпали. Но, предвижу, что если мне и потребуется когда нибудь, то только вытесняющее. Кооперативка - мой ответ только КА.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 09:25 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Цитата:
. Уверен то же но с ОС занимало бы меньше памяти и меньше строк было бы.

Полагаю, вы ошибаетесь. Ядро ОС никак не способствует экономии памяти. Конечно, если речь об именно ОС, а не о простой переключалке задач. А то некоторые высокопарно именуют аж "операционной системой" примитивную переключалку, в которой любая задача должна выполняться менее, чем за длительность отведенного фиксированного интервала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 09:43 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
demiurg1978 писал(а):
w5277c писал(а):
Тролли разным мастей.

Надеюсь это не в мою сторону. Я пробовал разные диспетчеры, RTOS на ассемблере. И осознал, что лучше конечных автоматов ничего нет. За свою практику я делал разной сложности проекты, и КА пока себя не исчерпали. Но, предвижу, что если мне и потребуется когда нибудь, то только вытесняющее. Кооперативка - мой ответ только КА.


Нет, конечно не в Вашу.

Конечные автоматы это те, которые помнят свое состояние? В каком-то смысле их есть у меня.
Невытесняющая многозадачность.
Код:
.SET REALTIME = 0


Задачи помнят свое состояние и могут передачвать управление други задачам.
Но я не адаптировал процедуру запуска драйвера для аналогичного запуска задачи. Это обязательно будет, но позже.

И да, на этом можно было остановиться.
Но я сторонник многопоточных приложений, поэтому для МК я тоже хотел бы писать в таком стиле.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 10:08 
Заглядывает иногда

Зарегистрирован: 23 сен 2020, 05:17
Сообщения: 41
Еще, я постарался сделать так, чтобы лишнего кода тянулось по минимуму.

Т.е. если задать REALTIME = 0, то весь функционал имеющий отношение к вытесняющему режиму будет исключен из сборки.
Аналогично, если опустить дефайн прота логирвания.
Ну и процедуры нужно подключать инклудами(при необходимости)


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 25 сен 2020, 10:24 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
Против троллей к сожалению только один рецепт. Знать что они есть. Вы с ними ничего не сможете сделать. Логику в их действиях не ищите, её нет. Поэтому, знать, не реагировать и не кормить. Если кто то достанет, смело пишите админу, он достанет ружжо и пристрелит забанит особо зарвавшихся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 26 сен 2020, 02:42 
Заглядывает иногда

Зарегистрирован: 14 май 2017, 19:45
Сообщения: 82
Пельмень Мясной писал(а):
Полагаю, вы ошибаетесь. Ядро ОС никак не способствует экономии памяти. Конечно, если речь об именно ОС, а не о простой переключалке задач. А то некоторые высокопарно именуют аж "операционной системой" примитивную переключалку, в которой любая задача должна выполняться менее, чем за длительность отведенного фиксированного интервала.

я имею ввиду переключалку с вытесняющей, слайсингом и прочими базовыми функциями планировщика задач. Без всяких наворотов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 26 сен 2020, 02:53 
Заглядывает иногда

Зарегистрирован: 14 май 2017, 19:45
Сообщения: 82
w5277c писал(а):
В будущем я планирую запилить процедуры управления задачами из других задач.

У меня были процедуры управления задачами. И за долгое время я их использовал 0 раз. (удалил, это лишнее)
Есть у меня в домашней автоматике устройство у которого баги и мне лень исправлять. Один процесс зависает раз в 2-3 дня. Исправить можно было бы перезапуском процесса(костыль), либо исправить задачу. Максимум что нужно из управления процессами это запустить из одной задачи другую и закрыть саму себя. Другие функции для больших ОС, и не на AVR, и не на ассемблере.

Максимально необходимый функционал проверенный годами:
Код:
;.MACRO TaskCreateMACRO ; @0 slot_num, @1 start_adr, @2 stack_adr, @3 stack_size, @4 quant
;***Functions:
;  void         TaskYield(void);                                   --------
;  void         TaskSleep(regX time_mS);                           SP +-  4
;  void         TaskSleep_mkS(regX time_mkS);  //beta              SP +- 12
;  ZH           TaskCreate(X start, Y stack, ZL quant);            SP +-  6
;  r17 result   TaskSetQuant(reg16 new_quant, regX handle);        SP +-  7
;  void         TaskExit(void);                                    --------
;  void         TaskDelete(regX handle);                           SP +-  7

Причём лишнее можно отключить (если например tyny25)
Код:
;#define USE_TaskSleep_mkS ; (~110Bytes)
;#define USE_TaskCreate    ; (~110Bytes)
;#define USE_TaskSQuant    ; (~100Bytes)
;#define USE_EXITnDELETE   ;  (~88Bytes)

#define ENABLE_Idle

TaskYield и TaskSleep не отключаются, они нужны всегда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 26 сен 2020, 09:45 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Ну тогда это "диспетчер задач", а не операционная система. Ибо даже простая операционная система содержит еще дохрена как всего.
Вон, у вас уже - сто байт туда, сто байт сюда, еще сотку на это, полторы сотки на то. Хоп, и кило как и не бывало. А че сделали? Да так, только подготовились.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ядро на ассемблере для Atmega328 и прочих
СообщениеДобавлено: 26 сен 2020, 15:15 
Заглядывает иногда

Зарегистрирован: 14 май 2017, 19:45
Сообщения: 82
Пельмень Мясной писал(а):
Ну тогда это "диспетчер задач", а не операционная система. Ибо даже простая операционная система содержит еще дохрена как всего.

Изначально и было дохрена всего. И планировал добавлять ещё, чтобы было как у взрослых ОС. Но потом всё лишнее удалил, так как не пригодилось ни разу. Более гибкая настройка приоритетов иногда была бы полезна, но алгоритм с приоритетами по порядковому номеру процесса быстрее переключает.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 102 ]  На страницу Пред.  1, 2, 3, 4, 5  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: emax


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB