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

 

Программная эмуляция интерфейса I2C

Автор: Mike(admin) от 2-03-2014, 11:08

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


Шина I2C

Код на языке C с комментариями приведен под катом.

Браузерная среда разработки ASM80

Автор: Mike(admin) от 24-02-2014, 06:51

ASM80 представляет собой интегрированную среду разработки, предназначенную для написания программ на ассемблере для 8-разрядных процессоров вроде 8080, 8085, Z80 и 6502. ASM80 состоит из двух основных частей: редактора+ассемблера и отладчика. Эта среда разработки является браузерной, то есть вы можете работать с ней на любом компьютере, где установлен современный браузер.


asm80

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

Простой алгоритм фильтрации зашумленных данных

Автор: Mike(admin) от 21-02-2014, 12:10

Ниже предлагается способ фильтрации зашумленных данных, который работает на лету и не требует хранения данных, которые должны обрабатываться как единое целое. Он удаляет до двух выбросов (минимальное и максимальное значения) и усредняет все остальные значения.


зашумленные данные

С помощью данного метода могут быть обработаны до шестнадцати 12-битных выборок, используя только четыре 16-битных ячейки ОЗУ. При 10 выборках в качестве деление представляет собой сдвиг на 3 разряда.

ATmega и встроенный датчик температуры

Автор: Mike(admin) от 13-02-2014, 07:45

Интересной особенностью микроконтроллеров серии ATmega является встроенный датчик температуры, показания которого можно прочитать, используя внутренний АЦП. На текущий момент среди МК ATmega насчитывается 18 представителей с датчиком температуры: AT90PWM161, AT90PWM81, ATmega168A, ATmega168P, ATmega168PA, ATmega16M1, ATmega16U4, ATmega328, ATmega328P, ATmega32M1, ATmega32U4, ATmega48A, ATmega48P, ATmega48PA, ATmega64M1, ATmega88A, ATmega88P и ATmega88PA.


Arduino Leonardo

Проблема в том, что этот датчик измеряет температуру кристалла и для повседневных нужд, вроде измерения окружающей температуры, изначально он не пригоден. Но, используя известную разницу между температурой окружающего воздуха и температурой кристалла, можно найти эту температуру. В Arduino Leonardo и Arduino Pro Micro применяется ATMEGA32u4, поэтому для них нижеприведенный код подойдет без изменений, для других микроконтроллеров нужно уточнять регистры.

Конечный автомат на C

Автор: Mike(admin) от 10-02-2014, 04:55

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


конечный автомат

Они дают ряд преимуществ:


  • Вы можете перевести требования системы в диаграмму состояний или в таблицу состояний переходов.

  • По диаграмме состояний или таблице состояний переходов вы можете проверить правильность проекта до написания программы.

  • Это облегчает понимание кода.

  • Вы можете быстро сопоставлять друг с другом код и требования к системе.

  • Обеспечивается детерминизм, то есть вы сможете точно знать, что делает система в определенный момент.

При использовании автоматного подхода важно грамотно организовать конечный автомат у себя в коде. Поэтому ниже приводится шаблон конечного автомата, написанный на языке C. Он не сложен и позволяет понять принцип работы конечных автоматов. Овладев этим инструментом, его в последствии можно будет масштабировать на более сложные программные архитектуры.

Симулятор 8-битного ассемблера

Автор: Mike(admin) от 7-02-2014, 06:53

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


ассемблер

Чтобы процесс изучения проходил быстро, удобно и легко, Марко Швейгхаузер (Marco Schweighauser) написал простой симулятор ассемблера, который запускается из браузера и имеет интуитивно понятный интерфейс.

Программная реализация часов реального времени

Автор: Mike(admin) от 25-01-2014, 13:57

Часы реального времени (Real Time Clock или RTC) являются полезным элементом в случае, когда нужно вести учёт хронометрических данных. Но, к сожалению, не во всех вычислительных устройствах есть этот элемент.


часы реального времени

Тем не менее, RTC можно попытаться реализовать программным способом, что и представляет собой код, приведенный ниже.

15 алгоритмов сортировки за 6 минут

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

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


сортировка

Алгоритмы демонстрируются в следующем порядке: сортировка выбором, сортировка вставками, быстрая сортировка, сортировка слиянием, сортировка кучей, поразрядная сортировка (с младшего разряда), поразрядная сортировка (со старшего разряда), std::sort (интроспективная сортировка), std::stable_sort (адаптивная сортировка слиянием), сортировка Шелла, метод пузырька, шейкерная сортировка, гномья сортировка, битоническая сортировка и случайная сортировка (bogo sort). Сверху видео также можно посмотреть количество сравнений и число обращений к массиву.


Смотреть на алгоритмы->

Программная симуляция SPI

Автор: Mike(admin) от 13-01-2014, 11:36

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


SPI

Ниже представлен код на ассемблере, симулирующий работу интерфейса SPI (функции записи и чтения) для микроконтроллера PIC16F877A.

3D печать: создание моделей с помощью OpenSCAD

Автор: Mike(admin) от 29-12-2013, 07:10

У вас есть 3D принтер, и вам надоело распечатывать модели из интернета и хотите создать что-то свое? Замечательно! Сегодня существует ряд программ, позволяющих рисовать свои 3D модели. Одной из таких программ является OpenSCAD. Ее особенность заключается в том, что моделирование здесь скорее представляется программированием, нежели рисованием. Большое количество полезных моделей, в том числе детали для 3D принтеров RepRap, были спроектированы с помощью OpenSCAD.


OpenSCAD

Этот материал не является полным руководством OpenSCAD, но прочитав его вы сможете создавать несложные детали самостоятельно.