цифровая электроника
вычислительная техника
встраиваемые системы

 

Реализация простого планировщика задач

Автор: Mike(admin) от 19-08-2014, 06:55

При создании операционной системы или реализации ее отдельных элементов во встраиваемом приложении важны знания о планировщике задач. Этот сервис позволяет запускать другие программы или задачи в зависимости от конкретных событий. К ним можно отнести, например, наступление определённого времени, переход операционной системы в определенное состояние, поступление запроса через пользовательский интерфейс.


планировщик задач

Приведенный код планировщика задач полезен для знакомства с данным механизмом. Он представляет собой планировщик по методу round-robin, написан на языке C и удобен при отладке на ПК, поскольку содержит приличное количество команд вывода данных на экран printf.

Код для взаимодействия микроконтроллера и сканера отпечатков пальцев

Автор: Mike(admin) от 23-07-2014, 06:53

В некоторых приложениях, требующих повышенной безопасности, желательно иметь некоторый модуль для аутентификации пользователя. Таким модулем может служить сканер отпечатков пальцев, например, SM-630.


сканер отпечатков пальцев

Встроенный DSP-процессор позволяет без особых проблем организовать взаимодействие между контроллером и сканером благодаря богатому набору управляющих команд. Ниже представлен пример кода такого взаимодействия.

4-битный режим передачи данных для ЖК-дисплея

Автор: Mike(admin) от 13-07-2014, 08:17

Обычно передачу данных на символьные ЖК-дисплеи осуществляют по 8 линиям. Но в целях экономии количества выводов микроконтроллера такую передачу можно осуществить всего лишь по четырем линиям.


MC21605A6W

Нижеприведенный код на языке C позволяет осуществить четырехпроводное подключение микроконтроллера ATMEGA328P к символьному дисплею MC21605A6W (16x2). При этом следует учесть, что выводы DB0:3 и RW должны быть заземлены.

Связываем акселерометр ADXL345 и микроконтроллер

Автор: Mike(admin) от 5-07-2014, 15:55

Акселерометр ADXL345 представляет собой 3-осевой датчик ускорения с возможностью связи как по интерфейсу SPI, так и по I2C. Он довольно дешев и прост в эксплуатации, поэтому хорошо подходит для несложных приложений инерциальной навигации.


акселерометр ADXL345

Представленный код позволяет наладить взаимодействие между ADXL345 и микроконтроллером (в данном случае код для PIC16 и компилятора CCS PICC, но при желании можно переделать под любой МК) по шине I2C. С помощью него можно инициализировать, настраивать акселерометр, записывая в него данные по определенному адресу, и считывать данные с самого акселерометра.

WiFinder – оповещение о присутствии устройства в сети WiFi

Автор: Mike(admin) от 30-06-2014, 07:39

Если вы живете в общежитии с сетью WiFi и хотели бы, чтобы нарушающее ваше одиночество возвращение соседей по комнате не было столь внезапным, то можно воспользоваться очень полезным в подобных случаях кодом WiFinder.


WiFinder

Этот довольно простой скрипт, написанный на Python, определяет появление в сети нового устройства, например, телефона соседа, если, конечно, на этом телефоне активирован модуль WiFi.

Вычисление CRC-16

Автор: Mike(admin) от 22-06-2014, 16:05

Представленный код позволяет реализовать основанный на полиномиальной арифметике алгоритм расчёта контрольной суммы CRC16.


CRC-16

Для выполнения функции алгоритма нужно сначала присвоить константе POLYNOM одно из перечисленных до этого значений CRC16.

Простой метод определения направления вращения вала инкрементального энкодера

Автор: Mike(admin) от 12-06-2014, 07:21

Определить направление вращения двухбитного инкрементального энкодера можно довольно простым способом. При этом не нужно организовывать ветвления из структур if-then, которые оценивают оба бита при каждом переходе.


инкрементальный энкодер

Здесь применяется операция исключающего ИЛИ над младшим битом новой выборки и старшим битом старой выборки.

Избавьтесь от Google Glass в своей сети

Автор: Mike(admin) от 8-06-2014, 07:11

Очки дополненной реальности Google Glass, не смотря на относительно высокую стоимость, набирают популярность. Впрочем, это нравится далеко не каждому. Люди, не желающие лишний раз попадать в объективы каких-либо видеокамер, далеко не в восторге от такой новинки. Энтузиаст по имени Julian, которого можно причислить к этой категории людей, разработал специальный скрипт glasshole, позволяющий выявить присутствие Google Glass в сети и «выпнуть» эти очки из нее.


Google Glass

Принцип работы скрипта прост и заключается в том, что каждый производитель сетевых интерфейсных устройств присваивает своей продукции собственный MAC-префикс. Это часть МАС-адреса, которая является уникальной для данного производителя. Программа с помощью утилиты arp-scan формирует список всех MAC-адресов устройств сети, которые потом сравнивает с MAC-адресом, характерным для Google Glass. При совпадении выдается предупреждающий звуковой сигнал, и затем запускается утилита aireplay-ng в режиме де-аутентификации. Это позволит отправить spoof-пакеты клиенту (очкам Google Glass), что заставит его отключиться от сети.

Библиотека арифметических операций для PIC16

Автор: Mike(admin) от 3-06-2014, 15:33

Микроконтроллеры серии PIC16 компании Microchip могут выполнять простые арифметические операции с 8-разрядными операндами, поскольку их ядро само 8-разрядное. Но в некоторых проектах требуется больше вычислительных возможностей, поэтому в таких случаях будет полезна специальная библиотека арифметических операций.


MiniPirate

Представленная библиотека позволяет осуществлять умножение, деление, сложение и вычитание 16-битных чисел, конвертировать числа в разные формы, проверять четность, возводить число в квадрат и еще несколько полезных мелочей.



Генератор аддитивного белого гауссовского шума

Автор: Mike(admin) от 22-05-2014, 11:20

Генерация гауссовского шума бывает необходима для задач моделирования и генерации случайных чисел в различных приложениях. И для этих целей полезно иметь универсальную и удобную функцию.


гауссовский шум

Представленная функция, написанная на языке C, генерирует сэмпл аддитивного белого гауссовского шума при каждом вызове. Ее красота заключается в простоте. Созданный сэмпл будет иметь нулевое среднее и стандартное отклонение, равное 1. Тем не менее, программист может масштабировать выходные сэмплы, изменяя стандартное отклонение для генерации различных профилей шума. Для того, чтобы осуществить такое масштабирование достаточно просто умножить сэмпл на выбранное стандартное отклонение.