Рейтинг
38.98
голосов: 40
avatar

AVR

О блоге

Описание ядра и периферии контроллеров AVR. Все, что касается работы с AVR семейством.

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (271)

dcoder vvzvlad ploop hexFF foxit _YS_ Vasil Tabke XANDER marvin_yorke Ultrin WildCat hexanaft zb3k Vga Alatar t0x193n mzw Reverb tda2030

Все читатели блога

Софтварный I2C для MPL115A2 и AVR.

AVR
Почитав статью «Цифровой измеритель абсолютного давления (барометр) MPL115A2» решил запустить оный на AVR. С аппаратным I2C связываться не стал, т.к. барометр поддерживает очень высокие скорости обмена и получается выгоднее читать его софтварно, не мешая остальным прерываниям, чем долго и мучительно разгребать регистр TWR ради четырёх паршивых байт. Ну и отсутствие привязки к выводам радует.
Итак, в архиве Си файл со всеми необходимыми функциями, который надо просто прицепить к своему проекту. Написан под IAR, но из специфичного там только функция __delay_cycles(); Как следует из названия, она выполняет задержку в тактах контроллера. Просто заменяем её принятой в своём компиляторе для обеспечения необходимых выдержек между сменой состояния лапок. Задержки (скорость) подобрать по вкусу.

Настойка софтварного I2C сводится к изменению всего 5 дефайнов.
DS_I2C_PIN, DS_I2C_DDR, DS_I2C_PORT — регистры порта, к которому подключён барометр.
DS_SDA_LN, DS_SCL_LN — биты порта для соответствующих линий.
И всё, больше ничего трогать не надо.

Ну, ещё DS_I2C_T отвечает за задержку вкупе с параметром F_CLK, который обычно задаётся в основном коде. DS_I2C_T == 1000 достаточно для работы барометра при кварце 16 МГц (задержка получается 16000 тактов или 1 мс).

На выходе имеем три функции и два буфера:

void read_coef_soft(void); // считать коэффициенты и положить их в буфер MPL115A2_coef.
void start_conv_soft(void); // запустить преобразование температуры и давления.
void read_result_soft(void); // считать температуру и давление и сунуть в MPL115A2_result.

unsigned char MPL115A2_coef[8];   // буфер коэффициентов
unsigned char MPL115A2_result[4]; // буфер результата


Выполнив функции можно пользовать результаты в соответстующих буферах.

Разумеется, функции I2C можно использовать и в других разработках.
  • +3
  • 03 сентября 2012, 18:50
  • Dikoy
  • 1

И снова о "драконе"

AVR
Всем привет.
На днях заморочился с одним вопросом который был отложен в глубокий ящик. Примерно год назад я себе взял AVR DRAGON штука класс все что надо на одной плате, описаний было много продолжать не буду.
Но вот пара хороших:
Здесь
у BSVI



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

Игрушка-шар для маленьких на ATmega16 + акселерометр MMA7455 + led driver TLC5940

AVR
«Для маленьких» — это не фигура речи, а мне действительно хотелось бы рассказать о шарике-самоделке, мигающем огоньками и радующем моего еще совсем маленького годовалого сынка. Идея пришла спонтанно, как только встретил описания дешевого и легкодоступного акселерометра на eBay. Электроникой я увлекся всего полгода назад и в процессе этого домашнего проекта (длившегося, к слову сказать, несколько месяцев) схему переделывал неоднократно, изобретая велосипед за велосипедом.

Постановка задачи

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



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

AVRISP mkII «новый клон»

AVR
Повторил программатор AVRISP mkII «новый клон» (с сайта радиокотов), схему DoоMmen, немного модифицированную kspiritos. Данный вариант мне показался наиболее удобным для повторения, так как имеет все необходимые файлы, и более чем подробное описание, наилучшим образом подходит под имеющиеся в хозяйстве детали, как мне показалось — имеет наиболее удобные органы управления (к примеру — смена прошивки осуществляется по нажатию двух кнопок).



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

BASINT на Pinboard II (AVR). Тестовый пример

AVR
BASINT на Pinboard II (AVR)

Аннотация


Показан демонстрационный пример работы с интерпретатором бейсика BASINT на Pinboard II + AVR в стандартной комплектации (ATmega16 @ 16 МГц).


Читать дальше
  • +3
  • 25 июля 2012, 06:42
  • uni
  • 2

Интересная функция в avr-gcc 4.7

AVR
Недавно обнаружил в avr-gcc 4.7 новую встроенную функцию __builtin_avr_insert_bits.
В заголовок <avr/builtins.h>, где находятся остальные встроенные функции, эту функцию пока не включили и объявлять ее прототип придётся самостоятельно:
unsigned char __builtin_avr_insert_bits (unsigned long map, unsigned char bits, unsigned char val);

Эта функция делает вставку отдельных бит из параметра bits в значение val, при этом параметр map задаёт способ вставки бит. Каждые 4 бита в map отвечают за отображение одного бита:
  • Если значение тетрады 0xf, то в соответствующий выходной бит копируется значение соответствующего бита из val
  • Если значение тетрады в диапазоне 0-7, то в соответствующий выходной бит копируется значение бита с номером равном этой тетраде из bits
  • Для остальных значений выход не определен.

Основное назначение этой функции — работа с несмежными линиями ввода-вывода. То есть то, что я делал тут и тут.
Достоинства:
  • Предельно эффективный генерируемый машинный код. Используются инструкции, которые нельзя сгенерировать с помощью стандартного Си кода, например, BST и BLD.
  • Способ отображения бит хранится в целочисленной 32-х битной константе, которую можно вынести из места использования куда-нибудь в заголовок.
Недостатки:
  • Только 8-ми битные значения.
  • Совершенно непереносимо — поддерживается только в одном компиляторе — avr-gcc 4.7.
Искать эту функцию в WinAVR или в AVR Toolchain от Atmel не стоит — там используется avr-gcc 4.5.x.
Достать avr-gcc 4.7. собранный под Windows можно тут.

HD44780. Библиотека для avr-gcc

AVR
Первым (и пока единственным) навесным расширением моей отладочной платы стал LCD дисплей WH1602 (или как-то так) с контроллером HD44780. Такого рода дисплеи пользуются популярностью среди электронщиков-самодельщиков за их простоту и достаточную для большинства задач информативность.




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

- Это безумие! - Это Linux!

AVR
Некий Dmitry решил запустить Linux на восьмибитном AVR. Как вы надеюсь понимаете, задача из разряда невозможных. Но дуракам закон не писан и этот чудак сделал софтовый эмулятор ARM для AVR. Пишут, что линукс загружается аж за два часа, а эффективная рабочая частота где-то в районе 6,5 КГц

Источник

Также автор подключил к контроллеру SIMM RAM и гиговую флешку

5 копеек в копилку сообщества или ещё одна отладочная плата

AVR
Всем доброго времени!

Выношу на суд общественности свои скромные 5 копеек. Ещё одна отладочная плата, на этот раз на основе AVR ATMEGA8, с навесным экраном и заодно собранным программатором.




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

Небольшой пример с LUFA + HIDAPI.

AVR
1. Введение
LUFA – библиотека с открытым исходным кодом (лицензия MIT), позволяющая легко реализовать USB-устройства на основе микроконтроллеров AVR с аппаратным USB. LUFA разработана для использования только с компилятором avr-gcc (Хотя уже портировали на LPC — раз и два)

2. Firmware
Рассмотрим, как реализовать с помощью данной библиотеки устройство многострадального HID-класса. Для примера я использую LED-матрицу 16х16 на четырёх 74HC595, подключённую по SPI к платке с МК AT90USB162.

Читать дальше
  • +3
  • 05 февраля 2012, 21:53
  • QBasic
  • 1