В первой части своего повествования я рассказал о производителях, без сомнения, ТОП-овых белорусских дозиметров. Несмотря на все их достоинства, основные недостатки — отсутствие в розничной продаже и высокая цена даже на вторичном рынке — сводят полезность упомянутых приборов для рядового пользователя к нулю. Основная претензия к оборудованию для контроля радиоактивного фона со стороны обывателя — должно быть просто и дешево. Поэтому сегодня я попробую описать свое видение простых, сделанных на коленке сигнализаторов радиоактивности. Никаких там сцинцилляторов за сотни и тысячи долларов, намотки трансформаторов и травления печатных плат. Сегодня под катом то, что под силу каждому человеку обладающему стандартным уровнем технической грамотности.
Рубрика «interrupt»
(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire
2017-04-12 в 12:40, admin, рубрики: 1wire, C, dma. isr, DS18B20, interrupt, irq, kernel, maxim, Realtime, scada, stm32, stm32l, stm32l-discovery, stm8, stm8l, stm8l-discovery, task, легковесные потоки, многозадачность, программирование микроконтроллеров, Разработка для интернета вещей, системное программированиеПодразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать полностью »
Примитивы для реализации 1-Wire master при помощи PWM и ICP для STM8L и STM32
2017-04-11 в 14:58, admin, рубрики: 1wire, dma. pwm, DS18B20, gpio, icp, interrupt, irq, isr, Realtime, scada, stm32, stm32l, stm8, stm8l, программирование микроконтроллеров, Разработка для интернета вещейВ предыдущей статье был представлен вариант реализации примитивов для асинхронной работы с шиной 1-wire для микроконтроллеров Ateml. Ну а сейчас вашему вниманию предлагается реализацию того же самого, но на более мощных микроконтроллерах семейства STM8L (для отладки использовалась обычная оценочная плата STM8L-Discovery с извлеченным LCD-дисплеем). С минимальными изменениями описываемая реализация может быть адаптирована и для семейства STM32.
Ошибка обработки вложенных прерываний в STM8 (не описана в errata)
2017-03-24 в 11:16, admin, рубрики: interrupt, irq, isr, nested irq, stm8, stm8l, stm8l-discovery, wfi, ПроцессорыВ семействе STM8 заложена очень полезная возможность экономии энергии в случае, когда быстрые и критичные ко времени обработки выполняются по прерываниям, а низкоприоритетные задачи работают в фоновом режиме. Для этого используется бит AL в регистре GCR и машинная команда WFI. Однако здесь был обнаружен подводный камень, не описанный в текущей версии errata на кристалл.
Читать полностью »
Примитивы для реализации 1-Wire master при помощи PWM и ICP на микроконтроллерах AVR AtMega
2017-02-27 в 15:02, admin, рубрики: 1wire, arduino, Atmega, ATmega2560, atmega328, ATMEGA328P, avr, DS18B20, gpio, icp, interrupt, isr, protothreads, PWM, Realtime, scada, программирование микроконтроллеров, Разработка для интернета вещей, Разработка робототехникиЕсли кто-нибудь использовал linux-драйвер шины 1-Wire на основе GPIO, то наверняка замечал, что в момент выполнения обмена данными загрузка SY% подскакивает чуть ли не до ста 100% (что вполне логично для bitbang-реализации). Конечно, можно поставить специализированный контроллер шины 1-Wire с подключением через I2C DS28E17 или использовать UART, но… Все-таки использовать linux для приложений реального времени не лучшая идея. Пусть контроллер на нем занимается высокоуровневой логикой, а весь реалтайм можно вынести на отдельный процессор. Тем более, что задач для этого отдельного процессора в моем проекте более чем достаточно.
Читать полностью »
Прерывания в конвейеризированных процессорах
2013-07-27 в 1:39, admin, рубрики: abort, exception, interrupt, RISC, Железо, исключение, как это работает, прерывание, Программинг микроконтроллеров, процессор, Процессоры, метки: abort, exception, interrupt, risc, исключение, Как это работает, прерывание, процессорНаверняка вы знаете, что такое прерывания. Возможно, даже интересовались устройством процессора. Почти наверняка вы нигде не видели внятный рассказ про то, как именно процессор обнаруживает прерывание, переходит к обработчику и, самое главное, возвращается из него именно туда, куда положено.
Я писал эту статью год. Изначально она была рассчитана на хардварщиков. Понимание того, что я ее никогда не закончу, а также жажда славы и желание, чтобы ее прочло больше десяти человек, заставило меня адаптировать ее для относительно широкой аудитории, повыкидывав схемы, куски кода на Верилоге и километры временных диаграмм.
Если когда-нибудь вы задумывались над тем, что значат слова «the processor supports precise aborts» в даташите, прошу под кат.
Читать полностью »
Подмена 64-битного обработчика прерываний
2013-06-10 в 11:35, admin, рубрики: interrupt, linux, x86_64, Песочница, метки: interrupt, linux, x86_64, ассемблерВсем доброго времени суток! Я студентка-второкурсница технического ВУЗа. Пару месяцев назад пришла пора выбирать себе тему курсового проекта. Темы типа калькулятора меня не устраивали. Поэтому я поинтересовалась, есть ли что-нибудь более интересное, и получила утвердительный ответ. «Подмена 64-битного обработчика прерывания» — вот моя тема.
Введение
Обработчик прерываний (или процедура обслуживания прерываний) — специальная процедура, вызываемая по прерыванию для выполнения его обработки. Эти обработчики вызываются либо по аппаратному прерыванию, либо соответствующей инструкцией в программе, и обычно предназначены для взаимодействия с устройствами или для осуществления вызова функций операционной системы (wiki).
Зачем?
Главная цель, пожалуй, наглядно на рабочей системе посмотреть как оно работает, а не «грызть» сухую теорию. Ну, или как раньше программисты пытались «делать многозадачность» в DOS, переопределяя обработчик событий таймера.
Читать полностью »