четверг, 21 сентября 2017 г.

Использование глобальных переменных в Atmel Studio (модификатор volatile)

   Иногда, при написании программ на Си приходится использовать глобальные переменные, при изменении которых контроллер должен выполнить ряд определенных действий. Но если просто объявить переменную в глобальной области видимости (за пределами main), то увы, данного функционала мы не получим.
   Для примера напишем небольшую программу, которая зажигает светодиод при изменении состояния вывода  (возьмем INT0). Создадим глобальную переменную "CheckIt", которая будет своеобразным триггером. В цикле будем проверять эту переменную, и если она не равна нулю, то зажжем светодиод. В свою очередь данную переменную будет изменять подпрограмма прерывания, запускающаяся при изменении состояния вывода (INT0).

example project

понедельник, 5 сентября 2016 г.

Новые горизонты

   Приветствую всех, кому понравился и чем-либо помог мой старенький блог в освоении микроконтроллеров AVR! С недавнего времени у меня появился еще один блог, в котором я буду писать о микроконтроллерах STM8, STM32, а также про ПЛИС фирмы Altera и многом другом.
   Добро пожаловать в DIY Microcontrollers Blog!

среда, 10 сентября 2014 г.

ESP8266 - Wi-Fi в массы!

Совсем недавно был представлен недорогой модуль на 2.4 ГГц на чипе ESP8266, внешне похожий на всем известный NRF24L01. Он позволяет передавать данные по сети Wi-Fi, а это значит управлять умным домом, или самодельными портативными устройствами стало возможно напрямую через домашнюю сеть или просто с мобильного устройства без дополнительно периферии.

среда, 16 июля 2014 г.

Последовательный интерфейс I2C. Часть 1. Описание.

Интерфейс I2C (I²C или TWI) был разработан компанией Philips для внутренней связи периферии в бытовой электронике. Для передачи данных и адресации используются всего два провода. При первом, беглом взгляде на структуру кадра и описание в Datasheet, кажется что интерфейс I2C очень сложен и сразу в структуре его кадра не разобраться. Также думал и я, когда впервые с ним познакомился, но в итоге полюбил работать с этим интерфейсом больше чем с SPI.
По сравнению с интерфейсом SPI, у I2C есть как плюсы:

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

воскресенье, 8 декабря 2013 г.

LCD 12864 на контроллере ST7920. Параллельный режим (8 бит)

Наверное самый распространенный режим подключения дисплеев, но в том случае, когда у МК есть соответствующее количество свободных ног. А именно 10-12, в зависимости от нужд.
Если нет необходимости читать данные из дисплея, и сбрасывать его, то можно использовать только 10 выводов.
Рассматривать пожалуй начнем с параметров сигналов, поступающих на дисплей. Контроллер дисплея воспринимает напряжение сигнала от 2.7 до 5.5 В, что позволяет использовать его практически с любыми микроконтроллерами.
Рисунок 1 - Тайминг записи команд/данных ST7920

суббота, 14 сентября 2013 г.

74HC595 (сдвиговый регистр) через SPI в C

В этом посте будет рассмотрено сразу две темы: программирование последовательного интерфейса SPI, а также подключение сдвигового регистра 74HC595.
Прежде чем приступать к программированию последовательного интерфейса SPI и подключению сдвигового регистра 74HC595, рекомендую ознакомиться со следующей информацией:
 Итак, нам необходимо подключить к микроконтроллеру ATmega328p семисигментный индикатор, используя всего 3 вывода. Делается это очень просто, при использовании сдвигового регистра 74HC595. Схема подключения представлена на рисунке 1.

Рисунок 1 - Подключение ATmega328p, 74HC595 и семисегментного индикатора 

пятница, 19 июля 2013 г.

LCD 12864 на контроллере ST7920

Написать эту серию статей я решил после приобретения дисплея 128x64. И, как наверное всех остальных, в ступор меня ввело отсутствие выводов CS1 и CS2 для переключения между двумя половинами (64x64 пикселя) дисплея. Порывшись на просторах интернета и не найдя ничего кроме распиновки дисплея и даташита соответствующего контроллера для такого набора выводов, я был приятно удивлен. Дисплей на контроллере ST7920 поддерживает не только вывод графической информации, а еще и вывод символов ASCII (4 строки по 8 символов), работая на подобии LCD 1602. Но самое главное - это то, что дисплей на контроллере ST7920 способен работать в режиме последовательной передачи данных и команд управления по одному проводу, а параллельный режим позволяет выбирать между 4 и 8 битами шины данных.