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

 

Программный полудуплексный UART для AVR, поддерживающий работу с одним выводом

Автор: Mike(admin) от 19-03-2014, 11:38

Большинство микроконтроллеров ATtiny не имеют аппаратного модуля UART из-за ограниченного количества выводов. Ядра Arduino tiny используют класс TinyDebugSerial, который обеспечивает только передачу данных, для приема данных нужно писать дополнительный код. Поэтому ниже предлагается компактный код и простая схема для организации программного UART, поддерживающего работу с одним выводом.


Программный полудуплексный UART для AVR


Простой Arduino-счетчик на 7-сегментном индикаторе

Автор: Mike(admin) от 17-03-2014, 06:41

Это простой проект на Arduino, заключающийся в создании счетчика на обычном 7-сегментном индикаторе с общим катодом. Код, приведенный ниже, позволяет при нажатии кнопки запускать счет от 0 до 9.


7-сегментный индикатор

Вся схема может быть запитана от стандартной 9-вольтовой батарейки или от любого Arduino-совместимого блока питания.

Звуковая сигнализация на Arduino

Автор: Mike(admin) от 5-03-2014, 04:51

Сделать сигнализацию с сиреной, которая бы без труда помещалась в карман, проще простого! Это мощное аудиовизуальное устройство реализуется на популярной платформе Arduino. Схема, питаемая батарейкой 9 В, вырабатывает громкий, воющий звук в качестве предупредительного сигнала.


Сигнализация на Arduino

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

Очередной клон Flappy Bird. Теперь на Arduino!

Автор: Mike(admin) от 19-02-2014, 06:16

Похоже, мир сходит с ума по игре Flappy Bird. Хотя создатель этой игры удалил ее из всех магазинов приложений, многочисленные клоны все же пытаются повторить славу самой Flappy Bird.


Flappy Bit

Теперь же в списке платформ, подвергнутых атаке клонов, имеются не только айфоны и андройдофоны, но и Arduino! Энтузиаст под ником Dan200 создал простейшую игру Flappy Bit. Концепция игры та же - управляем объектом одним нажатием и следим, чтобы он не врезался в препятствие. Только вместо полноценной птички здесь мы имеем один пиксель, поскольку экран представляет собой светодиодную матрицу 8x8. Но это не сильно мешает наслаждаться самой игрой. Видео с игровым процессом под катом.

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

Verilog. Базовый курс. Часть VI

Автор: Mike(admin) от 11-02-2014, 13:21

Структура If/Else


Последний основной момент Verilog, который мы разберем в рамках данного базового курса, это структура If/Else. При корректном использовании она представляет собой крайне полезный инструмент.


verilog

Сначала рассмотрим несколько правил, которые нужно соблюдать в отношении структуры If/Else в Verilog:



Verilog. Базовый курс. Часть V

Автор: Mike(admin) от 9-02-2014, 08:47

Поведенческое описание схем на Verilog


До сих пор мы рассматривали только структурную логику на Verilog, когда поведение схемы определяется только один раз, и эта схема не изменяется в зависимости от входных состояний (меняется только выходное значение в соответствии со спроектированной цепью). Поведенческая логика позволяет вам изменить поведение схемы на основе информации о сигналах на входах. Идея этого подхода напоминает циклы с условиями и конструкции типа if/else/case в C/C++.


Always-блоки


Сочетание слов «Verilog» и «поведенческий» у знающих людей вызывает ассоциацию с always-блоками. Always-блок представляет собой кодовую структуру, которая переопределяется всякий раз, когда изменяется состояние триггера. Что это значит? Рассмотрим простой always-блок с двумя входами sw0 и sw1.



Вольтметр на Arduino

Автор: Mike(admin) от 6-02-2014, 08:33

В этой статье приводится интересная схема для любителей экспериментов и Arduino. В ней представлен простой цифровой вольтметр, который может безопасно измерять постоянное напряжение в диапазоне от 0 до 30 В. Сама плата Arduino может питаться от стандартного источника 9 В.


Arduino вольтметр

Как известно, с помощью аналогового входа Arduino можно измерить напряжение от 0 до 5 В (при стандартном опорном напряжении 5 В). Но этот диапазон можно расширить, воспользовавшись делителем напряжения. Делитель понижает измеряемое напряжение до приемлемого для аналогового входа уровня. Затем специально написанный код высчитывает фактическое напряжение.

Verilog. Базовый курс. Часть IV

Автор: Mike(admin) от 5-02-2014, 09:15

Циклы в Verilog


В предыдущей части мы на простом примере познакомились с принципом модульной конструкции в Verilog и создали RS-триггеры с помощью концепции модуля-экземпляра.


Но что нам делать, если потребуется создать много (например, 50) D-триггеров, которые должны быть соединены между собой в соответствии со схемой делителя частоты? Мы уже знаем, как сделать общий модуль для D-триггера, поэтому нужно сделать 50 экземпляров этого модуля и соединить входы тактового сигнала каждого модуля с выходом предыдущего, также подвести сигнал Сброс (Reset) ко всем модулям и вывод D через инверсию соединить с выходом Q. В общем, нужно сделать всё то, что показано на рисунке:


verilog

Вручную писать столько экземпляров (50 штук по 6 строк в каждом – 300 строк!) – не практично. Поэтому в Verilog для генерации большого числа одинаковых модулей мы можем воспользоваться циклом контроллера счетчика, который является чем-то вроде цикла for. Но, чтобы этот цикл работал правильно, мы должны тщательно продумать структуру делителя частоты.

Verilog. Базовый курс. Часть III

Автор: Mike(admin) от 3-02-2014, 08:30

Модульная конструкция


Модульная конструкция проекта – это, пожалуй, базовый принцип построения схем на ПЛИС, поэтому этой теме стоит уделить пристальное внимание.


verilog

Ранее мы уже касались термина «модуль», но теперь мы уточним некоторые важные нюансы. Каждый исходный файл Verilog содержит один и только один раздел определения модуля. Тогда как мы можем создавать сложные проекты, которые включают в себя множество мелких модулей? Давайте в качестве примера возьмем создание цепи управления светодиодом с использованием таймера. Что нужно для нашей схемы, чтобы светодиод мигал каждую секунду при нажатии, например, какой-нибудь кнопки, которая подавала бы на вход лог. «1»? Также на входе у нас есть таймер 50 МГц.