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

 

Связываем акселерометр 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. Тем не менее, программист может масштабировать выходные сэмплы, изменяя стандартное отклонение для генерации различных профилей шума. Для того, чтобы осуществить такое масштабирование достаточно просто умножить сэмпл на выбранное стандартное отклонение.



Конвертер BCD-ASCII

Автор: Mike(admin) от 12-05-2014, 13:15

Двоично-десятичный формат кода (BCD) часто используется при работе с LCD-дисплеями и часами реального времени. В BCD-числе каждый десятичный разряд рационального числа записывается в виде его четырёхбитного двоичного кода.


Двоично-десятичный формат числа

Для преобразования DCD-формата в ASCII-код и обратно помогут две приведенные ниже функции bcdToAscii() и asciiToBcd().

Простой макрос для манипуляции отдельными битами

Автор: Mike(admin) от 20-04-2014, 12:00

Каждый, кто работал с низкоуровневыми регистрами, сталкивался с необходимостью устанавливать, сбрасывать и инвертировать отдельные биты, не влияя при этом на остальные. Это требует запоминания серии команд, включающих OR, AND и NOT, которые проще реализовать как макрос.


Простой макрос для манипуляции отдельными битами

Нижеприведенный фрагмент кода реализует макрос для установки конкретного бита в лог. «1», сброса бита и его инвертирования, а также чтения значения бита.



Matlab-код для отображения данных с COM-порта

Автор: Mike(admin) от 10-04-2014, 05:25

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


matlab

Ниже представлен код для Matlab, который позволяет отображать в реальном времени данные, полученные с порта. В коде следует не забыть поменять номер порта и скорость передачи данных.