discovery, хочу отображать 4 разряда одновременно.
Понятно, что это можно сделать цикл, который гоняется по разрядам, но кажется, что это тупо. Как сделать это не тупо?
Таймеры?
Прерывания?
(Я не из имббеддеда, поэтому я понимаю, как работают таймеры и прерывания, но не понимаю, как ими пользоваться)
ага, таймеры и их прерывания. Динамическая индикация называется. в чем сложность то?
одновременно не получится, только по разрядам
"Одновременно" Вопрос именно в том, как организовать поразрядное отображение.
заводишь таймер на 10 миллисекунд и в прерывании переключаешь общий провод на следующую цифру
не забыв выдержать паузу между выкл и вкл следующего
ну да, с пропусками
Ок, как устроено такое прерывание понятно. А как передавать ему значения? Вот я заведу статическую переменную с разрядами, как мне её читать из прерывания и как писать в неё из другого кода? Сделать Atomic<T>?
rtic возьми, там все нахаляву
Мне, если честно, интересно с примитивами синхронизации поиграться.) А то работа у меня принципиально однопоточная, и там таких приколов нет.
ну если прерываний не будет вообще - то атомики, если будут - то мьютекс
А что произойдёт с пребыванием, если оно обратится к мьютексу, а мьютекс залочен?
оно не произойдет, мьютекс отключает прерывания, если не говорить про приоритеты
Прикольно. Надо бы почитать подробнее про модель памяти армов...
А их много разных?))) Всм, кажется, что есть чипы с MMU и out-of-order, и у них одна модель памяти, и есть чипы с mpu, и у них другая модель памяти. Понятно, что разные ядра могут иметь особенности, но я не думаю, что они будут существенно отличаться (существенно - это как x86 и arm).
Обсуждают сегодня