- Может подскажет кто, что можно напаять вместо EM78P153S с flash
памятью, подошел бы 16f84, крайние ноги в воздухе, но корпус
широкий soic, нужен узкий, и питание посередине... - Point5217(20.12.2020 20:11, MCU, ссылка, полностью)
- stm8l152 + st-link v2 траблы с отладкой на работе мк от часового
кварца. Выскакивают ошибки чтения памяти, состояния процессора и
пр. На 2-х экземплярах vasily777(146 знак., 14.12.2020 13:38, MCU, полностью)
- Появился зуд, хочу попробовать написать что-нибудь вытесняющее,
дабы лучше понять как работают OS. В связи с чем вопросы к донам и
дуэньям. Dingo(2929 знак., 29.11.2020 11:52, MCU, ссылка, полностью)
- Мне для понимания в свое время помог сайт pic24.ru + исходники +
консультации Александра. - Nikolaev_Aleksey(04.12.2020 18:21)
- сколько трудов для создания нового велосипеда, а есть ведь
настоящая проблема требующая решения. Это отсутствие кооперативки
для пика под XC8. Либо нужна "новая" OC либо порт OSA на XC8. - abivan(03.12.2020 10:31)
- Эти смотрели? CoOS и прототреды Дункелса. Dingo(519 знак., 04.12.2020 19:34, ссылка, ссылка)
- Полно их - Ruslan(06.12.2020 21:02, ссылка)
- Очевидно, что без механизма ожидания -- получается полная ерунда, которая ничем не лучше биглупа. Когда
событий станет много (типов событий, происходить им не обязательно)
-- всё время только и будет уходить на такие циклы проверки, как и
в биглупе. Зачем тогда сущность с громким названием "операционка"? fk0(7411 знак., 06.12.2020 14:41, ссылка, ссылка)
- Заглянул в причесанное Vit(149 знак., 06.12.2020 10:00)
- а напомните пожалуйста порядок вычисления аргументов для функции Zoro(58 знак., 06.12.2020 17:35)
- Во-первых p_tsk = &tasks[++i]. Во-вторых надоели идиоты:
оператор "запятая" ничем не плох, даже хорош по сравнению с
вариантами вроде ++*i-- так как порядок очевиден -- слева направо.
Оператор "запятая" от "точки с запятой" отличается только временем
жизни временных переменных (до "точки с запятой") и возможностью
использования в контексте выражения (а не оператора). В языке C
полезные применения: как раз избавление от ++*i--, возможность
записать последовательность fk0(247 знак., 06.12.2020 14:33)
- От идиота слышу. Твоё "во-первых" при выполняемой перед этим
проверке if ( i>=TAB_SZ ) break; вызывает обращение за границу
массива и это нужно вылечить, а не тут говном исходить. По логике
действительно нужен преинкремент. По тексту правильнее инкремент
делать до проверки на маскимальный индекс, а присваивание указателя
после. Работа с задачами не из списка, а из массива, в этой
интерпретации делается пробежкой по всему массиву, до первой
"задачи-пустышки". Обычно это Vit(601 знак., 06.12.2020 15:16)
- Спасибо за найденную ошибку. Начинал как вариант со списками,
сейчас склоняюсь к мысли вообще выкинуть этот изврат, ибо там, где
уместно применить "это-вот-всё", там списки лишние. Тогда будет
возможность дёргать задачу по номеру (из прерываний удобней,
например), а не по функции. - Dingo(06.12.2020 18:33)
- Вот я и говорю про идиотов, ы которых набор каких-то догматических
правил, мол "оператор запятая использовать нельзя" ("goto
использовать нельзя") и т.п. Обосновывать свои догматы, конечно,
они не могут, нечем. Мы о профессиональном программировании или о
кружке пионеров? - fk0(06.12.2020 16:01)
- Приоритет во всех языках примерно одинаковый. Козырять несклерозом
не надо, но основные приоритеты знать надо. Иначе из-за количества
скобок код будет нечитаемый глазами. Надо знать про то, что
операторы взятия адреса и дереференса указателя выше по приоритету
арифметики (а ++ и -- ещё выше), и что логические операторы ниже
арифметики, и ниже оператора сравнения (который ниже арифметики). И
оператор присваивания -- ниже всех (кроме запятой). А тернарный
оператор выше fk0(66 знак., 06.12.2020 15:57)
- Кому нужна? С компилятором такого качества уже никакая ОС не нужна,
на мой взгляд. Да и вообще компилируемый стек и ОС --
малосовместимые понятия: как спрашивается в двух задачах исполнять
один и тот же код? (вытесняющая ОС или кооперативная не важно) Это
будет недоос с массой идиотских ограничений. Такая на мой взгляд не
нужна. Программируй автоматы. - fk0(03.12.2020 13:05)
- Зачем в микроконтролллерной кооперативке ассемблерный код?... Я в
вытесняющей его избегать стараюсь. - Dingo(03.12.2020 11:53)
- Спасибо, посмотрю при случае. Но пока это интересней ковырять. - Dingo(03.12.2020 10:42)
- Первое, что задышало. Dingo(1208 знак., 02.12.2020 08:46, ссылка)
- Во-первых я предлагаю абстрагироваться от используемой процессорной
архитектуры для начала. Можно сделать модель на ПК, в виде
компьютерной программы, а потом переносить на МК. Так будет и
проще, и быстрей, и исключит какие-либо архитектурно-зависимые
решения. Во-вторых игнорировать примитивы синхронизации никак
нельзя, это -- краеугольный камень, без них собственно планировщик
построить не удастся. fk0(20298 знак., 30.11.2020 00:09, ссылка)
- возможность принудительно остановить одну задачу и передать
управление другой - если это из самой задачи это не вытеснение, это
кооперативность - PTOC(29.11.2020 18:35,
, ссылка)
- возможность принудительно остановить одну задачу и передать
управление другой - это не вытеснение, это кооперативность - PTOC(29.11.2020 18:33,
, ссылка)
- Habr :-) что за бред? - OlegPowerC(29.11.2020 18:37)
- как мне показалось, этот именно то, что хочет автор топика - PTOC(29.11.2020 18:40,
)
- Короче, кооперативная - задача запустилась, выполнилась, САМА
завершилась или отдала управление и начала выполняться следующая из
очереди, вытесняющая - в квант времени N, перешло управление
планировщику (в нашем случае обычно прерывание от какого нибудь
таймера), посмотрели список готовых задач, если есть готовая с
большим приоритетом, текущую приостановили предварительно сохранив
ее контекст, отдали управление той которая с болтшим приоритетом и
готова. OlegPowerC(27 знак., 29.11.2020 22:18)
- Нет. Хочу вытеснения. - Dingo(29.11.2020 19:16)
- хороши исходники CTL. и документация вменяемая. написать свой
велосипед - это полезно и похвально. но вот потом лучше
использовать что-либо стороннее. ибо Mahagam(198 знак., 29.11.2020 18:07)
- Советую почитать мануал от scmRTOS AlexG(43 знак., 29.11.2020 18:03, ссылка)
- Для разных процессоров будут отличия. Проще всего изучать на
Cortex-M - у него много удобных хардверных заточек под такие
действия. Т.е. думать надо будет про логику, а не про то, как
извернуться на конкретном процессоре. - LightElf(29.11.2020 14:06)
- Хорошее дело, сразу подумайте как будут работать драйвера переферии
, так как будут прерывания от планировщика и в той же FreeRTOS не
все так однозначно. Я пока отказался от вытесняющей в пользу one
shot execution механизма - OlegPowerC(29.11.2020 13:06)
- А почему у Вас планировщик в главном цикле? Так он никогда не
получит контроль над стеком. - my504(29.11.2020 12:40)
- IMHO, неплохое чтиво - мануал на embOS и Миро Самек, Роберт Вард
"Построение наипростейшего диспетчера задач" Vit(718 знак., 29.11.2020 12:37, ссылка, ссылка)
- Ознакомился с переводом Миро Самек (Quantum Leaps). Любопытная
идея. Впрочем, Dingo(565 знак., 29.11.2020 16:29, ссылка, ссылка)
- Спасибо! Вы тоже много написали, надо хотя бы обзорно
познакомиться. fk0 крут, но это как-то "из пушки по воробьям". Хотя, буду рад, если
он подскажет. опасаюсь, что сильно разными категориями оперируем.
Никлауса обязательно почитаю(даже если не всю книгу). Dingo(347 знак., 29.11.2020 13:10)
- [RISC-V] Klen, поделись свежей сборкой тулчейна для GD32VF103. Хочу
помучить эту поделку - evgeniy1294(05.12.2020 22:36, MCU, полностью)
- Кто может помочь зашить микроконтроллер Intel P8749H? Ни один из
приобретенных программаторов его не поддерживает( - Nikolaev_Aleksey(01.12.2020 12:21, MCU, полностью)
- Праздную победу :-) 3 дня плотно сношался с обменом по I2C
(FT6206). Читались из регистров нули, хоть тресни. il-2(114 знак., 27.11.2020 18:30, MCU, полностью)
- Вопрос скорее про математику. Есть необходимость выводить на LCD
кривую, визуализирующую состояние процесса. Дискретность по
горизонтали - один пиксель. Пока просто соединяю соседние точки
отрезками. Получается почти приемлемо, но вид кривой напоминает
шрифты без сглаживания(antialiasing). Возможно ли аналогичную
технику (используемую для шрифтов) использовать при рисовании
произвольной кривой? Непринципиально, но: сейчас использую Lichee
PI Zero, LCD 800x480, Rainman62(35 знак., 14.11.2020 09:17, MCU, полностью)
- uGFX у тебя в сорцах? - RxTx(15.11.2020 19:10)
- ссылка в пятерке выдачи по "антиалиасинг" - BlackPrapor(15.11.2020 04:57, ссылка)
- Как везде: увеличивайте в мосхе ЦПУ разрешение экрана в 4 раза,
например, а потом, берите среднее, по цветам, для ячейки 2Х2 и
пишите в свой физический, в одну ячейку. - mse homjak(14.11.2020 14:46)
- Пошарься тут - было пару раз про рисование линий/дуг по алгоритму
Брезенхема. Оно? - Toчкa oпopы(14.11.2020 11:38)
- Называется микроконтроллеры проходят итерацию пройденную на ПК в
80е-90е... :))) Вопрос не про математику, а про используемую тобой
uGFX. Пиксельные "ступеньки" это aliasing. Техника сглаживания в
графике называется antialiasing (в пограничных случаях это могут
назвать pixel smoothing или subpixel rendering). RxTx(791 знак., 14.11.2020 11:19, ссылка, ссылка)
- Алгоритмов сглаживания много. Например, алгоритм Ву: - OldHobo(14.11.2020 10:07,
, ссылка)
- Как вы можете догадаться, все рисуют линии именно с антиалиасингом.
Но как это делать в гипердорогущей uGFX - сказать затрудняюсь.
Вообще под пингвина есть более одной библиотеки рисования, которые
делают то, что вам надо - lloyd(14.11.2020 09:57)
- А как можно генеровать ШИМ в микропотреблении контроллером
подешевле, частота >= 50 Гц ? Усыплять-будить с такой частотой
- нормально? - VLLV(13.11.2020 11:46, MCU, полностью)
- 1. Смотря что ты называешь "микропотреблением", их может быть
много. У PIC/dsPIC например есть Idle, Sleep, Low-power sleep (еще
в 2х режимах). 2. Засыпание забот не требует. Ожидания в n clock
cycles требует запуск, стабилизация генератора и PLL при выходе из
Sleep или lpSleep. Но 50Hz это достаточно низкая частота, проблем
не будет. У меня dsPIC'и входят/выходят из Idle с частотой ~1kHz и
выше, но это совсем не sleep - RxTx(13.11.2020 13:53)
- Можно ядро, ну и заодно таймер, переключить на низкую частоту. И
даже не спать. Возможно уровень потребления устроит. Если генератор
RC, то может быть и спать. - Vit(13.11.2020 12:47)
- мк идёт от часового кварца 32768, 8-9 бит ШИМ 50гц. CAPcom -хорошо,
нет - просто счётчиками. - General(13.11.2020 11:50)
- Смотри техническое описание микроконтроллера. Часто отдельные блоки
могут не спать и продолжать генерировать ШИМ. (или я тебя понял?). - RxTx(13.11.2020 11:48)
- Аналоговая часть МК. Какой-то статический уход... POV_(474 знак., 10.11.2020 16:58,
, MCU, полностью)
- Конденсатор УВХ после преобразования заряжается до Uоп/2
(независимо от входного напряжения). Если на входе АЦП стоит
высокомный делитель, то за время выборки этот конденсатор не
успевает за(раз)рядиться до уровня напряжения на этом делителе.
Отсюда и смещение. - argus98(10.11.2020 20:38)
- Вы пытаетесь добиться стабильных значения о 4 знаках. Флаг Вам в
руки. И читать учебники. - kaf1(10.11.2020 20:00)
- я вот тоже позавидовал таким показаниям встроенного АЦП - Kpoк(10.11.2020 22:01)
- Ёптить, гуру нарисовался. И что именно в учебнике читать, какую
страницу? Документация предусматривает 15ppm/Ц у опорника, и
только. А нестабильность не зависит как я показал от температуры. - POV_(10.11.2020 20:45,
)
- А что там в учебниках? Законы природы запрещают вот такие
вольтметры? >>> SciFi(1 знак., 10.11.2020 20:38, картинка)
- Keysight на два порядка точнее >>> Xaoc(8 знак., 10.11.2020 22:07,
, ссылка)
- © Попрошу у бабушки на день рождения.... - RxTx(11.11.2020 00:29)
- Можно заметить, что для такой точный прибор требует применения
свинцовых припоев, цитата по ссылке выше: "Этот прибор был выведен
на рынок до вступления в силу директивы RoHS. И хотя он не
соответствует требованиям этой директивы, он продолжает
поставляться на рынок ЕС..." - Nikolay_Po(11.11.2020 00:04)
- Не понял, откуда вывод, что свинец именно требуется. - SciFi(11.11.2020 07:57)
- Если бы не требовался, спокойно перевели бы на безсвинцовые припои.
Не перевели. Как минимум, потому, что это может повлиять на
отработанную годами прецизионную схему. Вряд ли прецизионные
компоненты прохладно отнесутся к повышенной температуре пайки.
Считайте шуткой. - Nikolay_Po(11.11.2020 11:58)
- И термо-ЭДС, к примеру. - Toчкa oпopы(11.11.2020 12:01)
- Со свинцовым источники термо-ЭДС образуются точно так же, только
потенциал другой. В приборе такой точности все подобные источники
скомпенсированы по определению, и простая смена состава припоя не
должна влиять на результат. Правда, возможна ситуация, когда в
герметичном заказном модуле имеется некоторая асимметрия, которую
выравнивает внешняя пайка. Зато смена припоя потребует
пересертификации, изменения документов, новой оценки наработки и
т.п. действий. Так что, teap0t(57 знак., 11.11.2020 12:16)
- Можно придумать разные объяснения, но почему-то на ум приходит
больше административно-бюрократических вариантов, чем технических. - SciFi(11.11.2020 12:04)
- Такие вольтметры нужно калибровать часто. Когда то на прецизионный
измеритель HP доку. Его нужно было калибровать раз в 2 дня. - BlackMorda(10.11.2020 22:57)
- SciFi, сколько такое чудо в $ или ₽ ? - RxTx(10.11.2020 20:53)
- Бывает такое чудо: периодическая наводка, синхронная с частотой
оцифровки. Перезапустил МК, PLL завёлся с другой фазой, наводка
дала другое смещение. - SciFi(10.11.2020 19:42)
- Гипотеза. Перед входом АЦП стоит УВХ. При защелкивании сигнала на
УВХ есть входной импульсный ток от источника сигнала и течет этот
ток только через один резистор делителя. За счет этого импульсного
тока этот резистор потихоньку нагревается и его сопротивление
изменятся. Я понимаю что это ничтожные величины.... - Sl(10.11.2020 18:49)
- Утечка со входа, не? - max(10.11.2020 18:24)
- Там ничо, типа автокалибровки, нет? - mse homjak(10.11.2020 17:28)
- А температура окружающей среды плыть может? Нагреватель какой или
наоборот кондей (вентилятор, охлаждение ноута, сквозняк)? - teap0t(10.11.2020 17:15)
- Какой алгоритм фильтрации указателя уровня бензина применить?
Скользящее среднее как-то не хорошо, просто усреднение тоже
хреново. Бензин при подъёме или на спуске сильно наклоняется и
поплавок всё это время сильно врёт. Подкиньте идею. - Бoмж(02.11.2020 00:12, MCU, полностью)
- Из ТЗ на комбинации приборов ГАЗ/ВАЗ (примерно одинаково, данные
несколько старые- но зато срок давности нда истек)) Илья(476 знак., 09.11.2020 14:18)
- В моей Вектре сложный алгоритм - сочетание поплавка с расходом,
иногда (например, если заглушить после заправки) этот алгоритм
клинит. Но наклон не влияет. Напрашивается идея учитывать поплавок
только в специальной ситуации. - VLLV(04.11.2020 11:11)
- Дяденьки ;), а зачем вы для датчика топлива обсуждаете
характеристику фильтра в частотной области (frequency domain)? - RxTx(03.11.2020 20:46)
- Большое спасибо всем ответившим. - Бoмж(02.11.2020 20:52)
- Это зависит от преследуемой цели. Какова преследуемая цель? - RxTx(02.11.2020 18:36)
- Кстати, на яхте стоит датчик давления. Трубка из бака давит на него
и все. - OlegPowerC(02.11.2020 12:58)
- Тебе нужно на комп записать экспериментальных данных при езде по
горкам. И потом уже подбирать алгоритм. Вначале можно
отфильтровать, чтоб убрать относительно высокочастотные бултыхания
вызванные неровностями дороги и т.п. (постоянная времени или период
-- единицы секунд). Потом, допустим, ровного участка не было, и
всегда горки. Здесь сгодится среднее (но не медиана!), но
посчитанное на относительно большом периоде, вроде единиц минут.
Допустим, горная местность, кавказ. fk0(174 знак., 02.11.2020 12:33)
- Уже массу раз его вспоминали. Зачем? По сути скользящее среднее
(SMA) и экспоненциальное скользащее среднее (EMA) -- это такие
плохонькие оконные функции для КИХ-фильтра: fk0(502 знак., 02.11.2020 12:24, ссылка, картинка)
- Последний (или предпоследний) перл мутного гения , расчет по
потреблению форсунок.Опорный уровень по поплавку устанавливают
только на заправке по росту уровня в баке видимо.Типа машина там
ровно стоит.Смешные казусы.Езжу на ГБО , а мозги думают что бенза
расходуется.Приезжаю на заправку бензы , а она в бак не лезет. PlainUser(176 знак., 02.11.2020 11:13)
- MEMS гироскоп и откалибровать по углам наклона. Дорого-бохато! - mse homjak(02.11.2020 10:48)
- Поставь второй поплавок, чтобы в противофазе работал и усредняй. - Звepoящep(02.11.2020 09:59)
- Стесняюсь спросить - ЗАЧЕМ? Зачем измерять уровень топлива в баке
точно? В чем сакральный смысл этого действа, если будущее
потребление можно спрогнозировать очень примерно? При том, что
мгновенное потребление может быть измерено весьма точно. Форсунки
дозируют топливо строго по топливной карте. К этому добавим
изрядный объем топлива в рампе и необходимость обязательного
остатка топлива в баке для того, чтобы не подпалить погружной
насос. Бонусом к проблеме идет сложная форма my504(313 знак., 02.11.2020 09:21 - 09:27, youtube)
- а там разве не датчик давления снизу? - General(02.11.2020 09:22)
- При правильном расположении поплавка (по центру бака) зависимость
уровня от наклона сводится к минимуму. Ну и усреднить тупо с
постоянной 20-30сек без всяких наворотов. il-2(105 знак., 02.11.2020 09:07)
- Поставить инклинометр и блокировать уровень по нему. - General(02.11.2020 08:30)
- Экспоненциальный фильтр? - Visitor(02.11.2020 08:21)
- Достаточно обычного усреднения на 2 минуты. И исключать из
алгоритма торможение/ускорение по датчику скорости в течении 20
секунд. И акселерометр бы не помешал. - Nikolaev_Aleksey(02.11.2020 08:08)
- судя по тому как он работает в логане, там что-то типа усреднения
за несколько минут + периодически скидывает отфильтрованное
значение в еепром, его и выводит на индикатор. возможно еще
прикручен фильтр на максимальную скорость изменения среднего
уровня. типа отслеживает момент заправки и какое-то уж очень долгое
время, часа час-два-три после заправки полного бака, уровень не
меняет вообще. хз зачем это сделано. - LordN(02.11.2020 08:07)
- Меня, например, не напрягает то, что стрелка немного отклоняется на
склонах. Это как бы естественно. - SciFi(02.11.2020 08:05)
- Это какой же подъем/спуск должен быть чтобы бензина в баке заметно
изменилось? Просто постоянная времени должна быть большой.
Включаешь зажигание оно быстренько измеряет скока топлива, а потом
подрубается фильтр. Понятно, что есть погрешность начального
измерения в зависимости от наклона парковки, но через 10 минут она
уберется. - Codavr(02.11.2020 03:31)
- Добавить акселерометр-инклинометр и скормить все это дядюшке
Калману - MBedder(02.11.2020 00:25)
- Спрошу теперь здесь. Есть ли в природе клипса для bga-шариков,
чтобы не покупать дорогущий сокет и не разводить тестовую плату? andrews(55 знак., 06.10.2020 15:03, MCU, полностью)
- У меня 10-битная архитектура. Можно ли в Java завести тип 10-битное
слово, или только 16-битное с маской? Если нельзя, то в каких ЯВУ
можно? - andrews(28.10.2020 16:44, MCU, полностью)
- List of arbitrary precision arithmetic software - RxTx(30.10.2020 13:35, ссылка)
- В Java примитивные типы - только 8, 16, 32, 64 бит. "Не
примитивные", т.е. ссылочные могут быть какими угодно, только
работать с ними вы скорее всего не захотите. - Argon(29.10.2020 17:40)
- Ничего себе! - Evgeny_CD(29.10.2020 01:50, ссылка)
- Это что за архитектура такая? - MBedder(28.10.2020 17:02)
- L60 - andrews(28.10.2020 20:25)
- Версия: 572ПА1 - Kpoк(28.10.2020 17:38)
- Это ж просто ЦАП с параллельным портом. Обычных масок достаточно, у
32-разрядных МК gpio обычно имеют 16-32 пина, можно все 10 завести
на один порт. - evgeniy1294(28.10.2020 17:46)
- Это ж просто была попытка пошутить. - Kpoк(28.10.2020 18:07)
- Я уже на это 50 часов времени убил и готов потратить еще 300. - andrews(29.10.2020 15:19)
- L60 - это "процессор конца 60-х" когда еще не было 8008!в 60-е годы
в Ленинграде в КБ-2 Староса была создана новая технология, которые
сами создатели назвали "куб памяти". Они придумали, как делать
ферритовую память для компьютеров не на катушках с ферритовыми
сердечниками, а просто просверливая отверстия в пластине феррита! И
получилась на небольшой по размере пластине значительная по тем
временам емкость энергонезависимой и относительно быстродействующей
памяти. На andrews(1242 знак., 28.10.2020 21:07)
- Или
политзаключённые погибающие к кровавых лагерях
гулага выдающиеся советские учёные в СССР как всегда украли позаимоствовали технологию у... Ford Motor Company! Верней её
подразделения Aeronutronic Division работающего над задачами мин. обороны США на кровавую американскую военщину. В марте 1963 они уже печатали
рекламные брошюры, начались разработки понятно лет на 5 раньше. fk0(1929 знак., 29.10.2020 15:54, ссылка, картинка)
- Когда идея и нужна и витает в воздухе, то ... "Кто первый встал,
того и патент". А работать - могли и параллельно. - Toчкa oпopы(29.10.2020 17:26, ссылка)
- "Я, американский инженер, – говорил он, – предлагаю программу
работ, которая позволит советскому народу обогнать Америку в самой
важной гонке ХХ века, превосходящей по своему значению и ядерную, и
космическую гонку – первыми создать самые быстродействующие и самые
массовые в мире вычислительные машины для обороны страны, для
управления производством и просто для рядовых людей" Старос. Если
что, он в "домашних тапках" из штатов отчалил в 1950 году. Попал
под колпак andrews(182 знак., 29.10.2020 16:11)
- Aug. 31, 1959 - Publication II, "Biax High Speed Magnetic Computer
Element,' - 16-21 ноября 1959 г. - "Некоторые схемы на ферритовых
сердечниках с диаметральными отверстиями." Так и диссертации писали
и пишут, если кому это нужно. Даже книги так получатся. - Boвa(29.10.2020 16:06)
- Круто! Но меня в этом проекте больше заинтересовала проблема
механической обработки ферритовых пластин. - Kpoк(29.10.2020 00:46)
- Бляаа! В деревню, в глушь, в Саратов!(с) :)) - MBedder(28.10.2020 22:08)
- Вы планируете реализовать программную эмуляцию ядра? Для столь
экзотической архитектуры придется пилить свой бэкенд для
компилятора llvm. А как будет произведена эмуляция уже не так
важно, хоть программно, хоть аппаратно на FPGA. - evgeniy1294(28.10.2020 21:31)
- Это, конечно, интересно но при чём тут Java? - SciFi(28.10.2020 21:12)
- Заработался значит) - evgeniy1294(28.10.2020 18:14)
- Подскажите как сейчас правильно организовать в микроконтроллере
программные таймеры? Peter_M(164 знак., 23.10.2020 12:50, MCU, полностью)fk0
- Подскажу еще один способ замеров интервалов времени. Без inc/dec
счетчиков. Для примера, ST HAL предоставляет время в ms посредством
функции HAL_GetTick(); Единожды запоминаем текущее время: static
uint32_t time_start = HAL_GetTick(); и далее в том месте где надо
проверить не вышло ли время, просто находим разницу между начальным
и текущим временем непосредственно в самом условии: if
(HAL_GetTick() RxTx(130 знак., 25.10.2020 16:10 - 18:41)
- Вот так делаю. Удобно Tpoeшник(796 знак., 25.10.2020 08:45 - 10:37)
- Раз уж дело дошло до типов, задам вопрос здесь(в этой ветке): а в
чем смысл писать std::uint32_t вместо просто uint32_t? - Constantin24(26.10.2020 08:05)
- INT16U и INT08U это наверно специально для выноса моска? - Vit(25.10.2020 09:00)
- Еще бы U8 и U16 можно было бы понять - VLLV(25.10.2020 10:41)
- Это для того чтоб не выписываться и чётче видеть важное. Где то
подсмотрел. - Tpoeшник(25.10.2020 10:27)
- Чем stdint.h не устраивает? - VLLV(25.10.2020 10:42)
- Еще компактнее будет сделать mbedder.h с понятиями u8, u16, u32,
u64 и s8, s16, s32 и s64. Для еще большей сестры таланта можно
вместо битовой длины залудить байтовую - u1, u2, u4, u8 и s1, s2,
s4, s8 :)) - MBedder(25.10.2020 10:48)
- Вот я тоже себе сделал u1, u2, u4, u8. Непонятно, кто и зачем
придумал uint32_t ? Ведь всё равно нету uint29_t, uint31_t и т.д.
Зачем тогда в 8 раз умножать? Ale3000(134 знак., 27.10.2020 04:17)
- У меня global.h в котором: Tpoeшник(742 знак., 26.10.2020 11:38)
- Вот в фортране как было удобно-то. Если переменная начинается на
"йоклмн" -- то целая, иначе вещественная. - fk0(25.10.2020 13:16)
- После того, как увидел, что компилятор ARM по разному компилирует
самопал и стдинт, больше самопал не использую. Неважно, что оба
варианта работают. - VLLV(25.10.2020 13:03)
- stdint - это ведь тоже самопал, набор typedef и #define. Кто мешает
сделать свое точно так же, а не через алиасы? - MBedder(25.10.2020 13:15 - 13:19)
- Что такое int_fast32_t я знаю будучи пьяным и разбуженным в 4 утра.
Что такое u8 -- не знаю, не уверен, ибо есть нюансы. Для
int_fast32_t есть INT_FAST32_MAX и PRIdFAST32 например, а для u8
что? Для именно u8 или i8 вообще интересно, это char, signed char
или unsigned char (кто не знает -- это ТРИ РАЗНЫХ типа). Можно для
всех библиотечных типов придумать свои алиасы, но читать такую
программу -- невозможно. Потом #define вместо typedef использовать
нельзя, т.к. у него fk0(809 знак., 25.10.2020 14:58)
- Да никто не мешает, но лучше иметь возвожность свалить вину на
компиляторописателей, а не рвать волосы на ж. Опять таки,
кросс-платформенность уже реализована, меньше думать. - VLLV(25.10.2020 14:04)
- stdint - это Стандарт, заголовок, обязанный быть у каждого
компилятора - lloyd(25.10.2020 13:18)
- Заинтриговал. А какой вариант красивше скомпилировался-то? Может,
самопал надо было брать? - SciFi(25.10.2020 13:12)
- есть системный таймер uint32_t sysTimer_ms который инкрементируется
каждую 1мс. При необходимости можно любой добавить - 100мс, 1с,
1час. Потом для таймера завожу переменную uint32_t timer_n. Ну и
дальше просто: AVF(451 знак., 25.10.2020 08:17)
- "Программный таймер" - это вырожденный случай оси, предоставляющей
сервис времени. =AK=(276 знак., 24.10.2020 14:27, ссылка)
- Эх-хе-хе... Помницца, был здесь знатный срач по поводу 100500
канального ШИМ на АВР. - mse homjak(24.10.2020 00:17)
- Ответов много и все верный.. ну как же моих трех копеек ))... POV_(2655 знак., 23.10.2020 19:43,
)
- Библиотека тут чрезмерна, заводишь несколько декрементных счетчиков
и всё. Счетчик это хорошо накатанная (шаблон, паттерн) конструкция
вида RxTx(362 знак., 23.10.2020 19:37)
- только так и делаю. Оно ж (через 1 мсек) всё равно щелкает. А какая
там библиотека? Таймеры щелкают в прерывании systick/ - Лaгyнoв(23.10.2020 18:48)
- Как вариант - Evgeny_CD(23.10.2020 18:13, ссылка)
- Генерим прерывания от одного аппаратного таймера каждую
миллисекунду (наименьший общий квант). Делаем N софт-таймеров и
инициализируем их требуемыми значениями периодов в мс - 3, 25, 100,
60000. В 1-мс прерывании декрементируем каждый софт-таймер, и при
достижении нуля переинициализируем его прежним значением и
генерируем event, interrupt или что угодно. Это все - не благодари
:)) - MBedder(23.10.2020 16:29)
- напишу общий комментарий к выложенным примерам. Mahagam(389 знак., 23.10.2020 16:25)
- Мое решение выглядит следующим образом: evgeniy1294(3490 знак., 23.10.2020 15:57)
- Нужна очередь с приоритетом (priority queue), реализуется на
двоичной куче... Если таймеров буквально меньше десятка, то просто
односвязный список. В списке хранится абсолютное время
(относительно некой точки отсчёта, не важно какой), после которого
таймер должен сработать. Логика работы такая: fk0(1965 знак., 23.10.2020 15:43 - 15:51, ссылка)
- Воистину, у погромистов мозги набекрень... ))) Из любой
элементарщины сделают "винду"... - my504(23.10.2020 16:42)
- Как-то сложно для микроконтроллеров. Легче вдуплить все таймеры в
массив, в прерывании отнять 1 от значения каждого софт-таймера и
если ноль вызвать калбек функцию (при её наличии) Boвa(141 знак., 23.10.2020 15:48)
- Да ничего сложного, у меня на PIC18 работало. Попозже код напишу.
Вот куча (очередь) -- сложно и не знаю как тут проще (если таймеров
100 штук). - fk0(23.10.2020 15:52)
- Да в принципе можно и так как вы пишите, но вместо односвязного
списка - очередь упорядоченная по оставшемуся времени. Сортировка
по времени происходит в момент добавления события. В момент
обработки события событие выбрасывается, и головой очереди
становится следующее. НО если нужно сформировать какую-то циклическую последовательной
действий очень все это не красиво будет. - Boвa(23.10.2020 16:02)
- Проблема линейной очереди -- гигантское время вставки если в
очереди 6144 таймеров, например. Кроме того API прикладного уровня
может иметь, например, функцию остановки/отмены запущенного
таймера. Т.е. нужны операции: 1) вставки в очередь, 2) извлечение
из головы очереди, 3) удаление произвольного элемента. Бинарная
куча выглядит диковато и перетряхивает вообще всю память, но у ней
худшее время понятно. Есть вариант со скип-листами, но там удалить
физически нельзя, только fk0(427 знак., 23.10.2020 20:49, ссылка)
- Какая еще библиотека? Вы не в состоянии написать инкремент
переменной со сравнением и сбросом? my504(493 знак., 23.10.2020 13:51)
- Я могу ошибаться в рассуждениях. Peter_M(691 знак., 23.10.2020 15:22)
- Системы с "тиком" -- не нужны, если это не time triggered
архитектура. См. мой ответ выше. Он даёт таймеры с минимальной
дискретностью (а не с тиками по 50мкс и сверхчастыми прерываниями).
Правильно, незачем вообще что-то инкрементировать. Поэтому вся
арифметика над абсолютным значением времени в будущем, а не над
временными интервалами (т.е. "проснуться когда время >=
13:00", а не "спать 3 часа"). Равно как и незачем за раз
обрабатывать более одного таймера, если их fk0(23 знак., 23.10.2020 15:49)
- Какая точность нужна для выдержек времени? Обычно программные
таймеры не требуют шести знаков точности. Исходя из потребной
точности/разрешения следует выбрать максимальный интервал
аппаратных прерываний. Если не инкрементировать частные таймеры, то
придется сохранять стартовые значения софтовых таймеров и выполнять
математику сравнения с единым таймером. Оно зачем? Никакой экономии
не будет. Сплошная путаница. А так, назначили пересчет, сбросили
тело таймера в коде (тело my504(109 знак., 23.10.2020 15:45)
- у меня подобное реализовано на регистрах сравнения таймера, также
можно устанавливать произвольные значения , при установке считываем
текущее значение счетчика , добавляем новое время, грузим в
свободный регистр сравнения, в таблицу кладем указатель на функцию
которую нужно ввызвать по таймауту! все работает аппаратное и не
жрет ресурсов! На 3 аппаратных таймера stm32 выходит 12 независимых
счетчиков - Aleksey_75(23.10.2020 15:36)
- а что за контроллер ? мож использовать регистры сравнения таймера? - Aleksey_75(23.10.2020 13:26)
- Обычно не нужно строго выдерживать период, достаточно "в следующий
раз через N мс или чуть позже". В этом случае удобно вот так: SciFi(424 знак., 23.10.2020 13:15)
- как переводится передаточная функция в формулу для
микроконтроллера? к примеру W(s) = 1 / ( 1 + k*s) - Constantin24(21.10.2020 11:28, MCU, полностью)
- Подскажите, на чем лучше реализовать? Подключаемый по USB
программатор с устанавливаемым с шагом 0.5В программирующим
импульсом 23В+/-2В Если Piccolo, то это ведь "из пушки по
воробьям". Остальные параллельные выходы дб толерантны 5в логике.
Например для программирования 573РФ2, КС573РФ2, 2716 21V и пр. - andrews(23.10.2020 23:49, MCU, полностью)