Машина времени для крошек.

AVR
При программировании микроконтроллеров часто требуется отслеживать временные промежутки. Даже банальное «помигать светодиодом» требует учета времени погашенного состояния и времени светимости.

В Си есть функция delay_ms(X), которая выполняет пустой цикл X ms, то есть по сути вешает проц на X*fcpu/1000 тактов, так как ничего иного в это время он делать не может.

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

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

Пройдя все эти стадии, я наконец-то дорос до понимания, что «что-то тут не так». Нарисовалась необходимость диспетчеризации задач по таймеру.
Прочитав AVR. Учебный Курс. Архитектура Программ Часть 2 в очередной раз убедился, что изобрел велосипед… ну и пусть, это просто еще один вариант решения.


Читать дальше
  • +2
  • 24 января 2018, 13:02
  • iva
  • 1

Мультимастер на USI

AVR
Это логическое продолжение предыдущей статьи «USI в двухпроводном режиме».
В этой статье пойдет рассказ о построении системы связи нескольких микроконтроллеров в составе одного устройства, на основе аппаратного модуля USI. Описаны «грабли» и «подводные камни» USI, а так же пути их обхода, на основе реального кода.
Все это реализовано и отлажено на двух микроконтроллерах ATtiny44A, один из которых работал на 8МГц, а другой на 1МГц. Размер кода 408 байт (204 слова).

Читать дальше
  • +2
  • 21 марта 2016, 12:30
  • iva

Новая Tiny'ка и другие новости

Поделюсь очередной спам-рассылкой, может кому принесет немного деньжат.

1. Компанией Atmel анонсировала новый микроконтроллер ATtiny828. Некоторые характеристики:

  • 8KB Flash
  • 512 byte SRAM
  • 256 byte EEPROM
  • Полнодуплексный USART, SPI, I2C Slave
  • 32-х вывoдной корпус
  • 10-bit (up to 28 channels) ADC, Analog Comparator
  • Тактовая частота до 20 МГц

… это к вопросу о выживании Atmel'a (в борьбе с Cortex'ами), который не боится даже Tiny'ки выпускать. Кстати эта тинька прямой конкурент ATmega8 и кажется первая в которой есть и АЦП и УСАРТ, поправьте если ошибаюсь.


Читать дальше

Another tiny USBasp

AVR

USBAsp по минимуму.


Фото для затравки:


Итак:
— В AtTiny25/45/85 можно запихать USB-стэк от V-USB.
— В 45-ю и 85-ю можно запихать еще что нибудь, кроме самого стэка.
— В этих тиньках 8-ног, из них две питание, одна резет, которая может становиться ногой ввода/вывода, и, следовательно 5+1 ног ввода/вывода.
— Для USB надо 2 ноги, D+ и D-. Для SPI нужно 4 ноги, MOSI, MISO, SCK и CS или в нашем случае будет называться Reset.
— Так как, и USB-протокол, и SPI-протокол будет программный, ноги можно выбирать любые.

В общем все что нужно для USBAsp в этих двух тиньках (AtTiny45/85), есть.


Читать дальше