Машина времени для крошек.
При программировании микроконтроллеров часто требуется отслеживать временные промежутки. Даже банальное «помигать светодиодом» требует учета времени погашенного состояния и времени светимости.
В Си есть функция delay_ms(X), которая выполняет пустой цикл X ms, то есть по сути вешает проц на X*fcpu/1000 тактов, так как ничего иного в это время он делать не может.
Многие прогеры, намучившись с этой функцией (или ей подобными), переходят на использование прерываний и аппаратных таймеров, но тут другая засада — их всегда мало.
Каждый выкручивается как может, например навешивает на один таймер несколько функций, использует биты счетчика как флаги, впрягает в нарты сторожевую собаку… вариаций много, но всегда новый проект означает новые выеживания, поиски решения в ограниченном пространстве.
Пройдя все эти стадии, я наконец-то дорос до понимания, что «что-то тут не так». Нарисовалась необходимость диспетчеризации задач по таймеру.
Прочитав AVR. Учебный Курс. Архитектура Программ Часть 2 в очередной раз убедился, что изобрел велосипед… ну и пусть, это просто еще один вариант решения.
Читать дальше
В Си есть функция delay_ms(X), которая выполняет пустой цикл X ms, то есть по сути вешает проц на X*fcpu/1000 тактов, так как ничего иного в это время он делать не может.
Многие прогеры, намучившись с этой функцией (или ей подобными), переходят на использование прерываний и аппаратных таймеров, но тут другая засада — их всегда мало.
Каждый выкручивается как может, например навешивает на один таймер несколько функций, использует биты счетчика как флаги, впрягает в нарты сторожевую собаку… вариаций много, но всегда новый проект означает новые выеживания, поиски решения в ограниченном пространстве.
Пройдя все эти стадии, я наконец-то дорос до понимания, что «что-то тут не так». Нарисовалась необходимость диспетчеризации задач по таймеру.
Прочитав AVR. Учебный Курс. Архитектура Программ Часть 2 в очередной раз убедился, что изобрел велосипед… ну и пусть, это просто еще один вариант решения.
Читать дальше
Мультимастер на USI
Это логическое продолжение предыдущей статьи «USI в двухпроводном режиме».
В этой статье пойдет рассказ о построении системы связи нескольких микроконтроллеров в составе одного устройства, на основе аппаратного модуля USI. Описаны «грабли» и «подводные камни» USI, а так же пути их обхода, на основе реального кода.
Все это реализовано и отлажено на двух микроконтроллерах ATtiny44A, один из которых работал на 8МГц, а другой на 1МГц. Размер кода 408 байт (204 слова).
Читать дальше
В этой статье пойдет рассказ о построении системы связи нескольких микроконтроллеров в составе одного устройства, на основе аппаратного модуля USI. Описаны «грабли» и «подводные камни» USI, а так же пути их обхода, на основе реального кода.
Все это реализовано и отлажено на двух микроконтроллерах ATtiny44A, один из которых работал на 8МГц, а другой на 1МГц. Размер кода 408 байт (204 слова).
Читать дальше
Новая Tiny'ка и другие новости
Поделюсь очередной спам-рассылкой, может кому принесет немного деньжат.
1. Компанией Atmel анонсировала новый микроконтроллер ATtiny828. Некоторые характеристики:
… это к вопросу о выживании Atmel'a (в борьбе с Cortex'ами), который не боится даже Tiny'ки выпускать. Кстати эта тинька прямой конкурент ATmega8 и кажется первая в которой есть и АЦП и УСАРТ, поправьте если ошибаюсь.
Читать дальше
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
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), есть.
Читать дальше