Рейтинг
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

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

SWITCH-технология для МК. Пример реализации на AVR.

AVR

SWITCH-технология для МК. Пример реализации на AVR.


Disclaimer
Цель написания данной заметки исключительно простая — поделится собственным опытом и наработками применения так называемой SWITCH-технологии при разработке программного обеспечения для МК. В данной заметке приведено краткое описание реализации UART LCD дисплея на ATmega8 и символьный дисплей 2Х16 символов (исходники прилагаются).

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

Отладка по UART или встроенный GDB server

AVR
Хочу подробно описать в деталях и коде, как можно отлаживать AVR по UART, не прибегая к использованию внутрисхемной отладке по JTAG, не тратя лишние пины, а задействуя лишь UART, прерывания по таймеру и возможности самопрограммирования FLASH-памяти контроллера.
В этой статье речь пойдет о программной заглушке, которая будет приостанавливать выполнение основной программы, возвращать состояние процессора, читать и писать в память, короче, выполнять роль отладчика, исполняясь непосредственно на контроллере.

Я был оч удивлен, когда на просторах сети не нашел ни одного достойного решения для, казалось бы, нужной задачи, как отладка AVR по UART. На запрос «avr gdb stub» я получил пару куцих решений, которые уже давным давно не поддерживаются, несовместимы с текущей версией gdb и содержат ряд существенных недостатков: отсутсвие исполнения интрукций по шагам или же замедление исполнения отлаживаемой программы в сотни раз. Мне показалось, что это хороший шанс попытаться разобраться в теме и, возможно, улучшить существующие решения.



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

Плата-переходник TQFP=>DIP для микроконтроллеров AVR ATMega16x, ATMega32x, ATMegaxx4x (СМК-ММК-01П1)

AVR
Продолжаю цикл заметок «Проекты-малыши».

В ходе разработки очередного мегапроекта возникла острая необходимость быстро вставлять и выковыривать из печатной платы микроконтроллеры типа ATMegaxx4 в корпусе TQFP-44. Ибо найти данные камни в корпусе DIP-40 оказалось не так то просто (во всяком случае, в г. Горький). Да еще надо было, чтобы вышеупомянутые микроконтроллеры вставлялись взамен их собратьев в DIPе. Т.е., в идеале – в ту же самую панельку, в которую втыкались кирпичи с индексом PU/PI. Но в любом случае: пусть даже переходник получится и шире панельки – конфигурация выводов должна совпадать.





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

USBasp и программирование по TPI

AVR
Недавно, мне пришлось использовать ATtiny10 в одном из проектов. Поскольку, я не обнаружил, в сообществе, статьи о программировании этих контролеров, то решил поделиться своим опытом.



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

Макетная плата для AT90USB647

AVR
Недавно и до наших магазинов электроники дошли интересные камешки — AT90USB647, и тут я решил попробовать сообразить макетку для него. Ниже то, что получилось. Заранее предупреждаю, что это моя первая 2х сторонняя плата. Был бы признателен, если бы сообщество указало на косяки и поделилось идеями о том, в каком направлении двигаться дальше.
Вид получившейся макетки:
верх

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

Отладочная плата индикации и управления СМК-ПОИУ-1

AVR
Лазал тут по локальному диску Д, наткнулся на незаслуженно позабытый проект. Собственно, я хотел опубликовать отчет по нему в качестве первой заметки в сообществе we.easyelectronics.ru. Всего-то и не хватало – оформить всё должным образом и выложить заметку на сайт. Но пришла весна, заказчики традиционно начали шевелиться (и тормошить исполнителей), а потом – первомай, а потом опять работа, а потом – ЛЕТО. Честно говоря, мысли о публикации вылетели у меня из башки еще на этапе «первомай». Но вот теперь проект сам напомнил о себе, и я решил, что лучше поздно, чем никогда. Итак, внешний вид «позабытыша»:





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

UART программный на Atiny13A

AVR

Как то понадобился мне при отладке, UART в крошечной ATiny13, а нормального готового найти не смог.
Пришлось заняться написанием собственного софтого.
(В таком виде работает на 9600, относительно легко перестраивается на любую другую. Нужно поменять делитель таймера и подобрать значение OCR1A)



Читать и Смотреть далее!
  • +2
  • 08 октября 2012, 23:36
  • khomin
  • 1

USB-программатор для микроконтроллеров AVR на базе FT232 (APU-2N)

AVR
Похожие программаторы:

APU-2,
APU-2M (Module USB),
APU-2MM (Module Mini-USB)

В камментах к заметке «USB-программатор для микроконтроллеров AVR на базе FT232 (APU-2)» высказали следующую мысль: устройство не очень удобно для ноутбука, поскольку имеет довольно большую ширину. Эта большая ширина не дает втыкать программатор в ноутбук вместе с другими USB устройствами. Тут не поспоришь, да. Программатор и впрямь относительно широк. Плюс разговорились про возможность выполнения USB разъема прямо на плате, как сделано, например, во многих флэшках. И мне стало интересно – а насколько вообще можно ужать APU-2, чтобы он выполнял хотя бы свою основную задачу – шить камни? Естественно, при использовании прогрессивного разъема USB-PCB Type A. Внешний вид того, что получилось, показан на рисунке ниже (устройство названо APU-2N):





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

USB-программатор для микроконтроллеров AVR на базе FT232 (APU-2)

AVR
Похожие программаторы:

APU-2N (Narrow),
APU-2M (Module USB),
APU-2MM (Module Mini-USB)

Поделюсь с общественностью еще одним вариантом USB программатора микроконтроллеров AVR на базе чипа FT232RL. Сразу отмечу, что данная разновидность программаторов (т.е. основанная на «тупой» логике FT232RL) является идеальным вариантом для людей, только начинающих осваивать микроконтроллеры AVR, поскольку не требует программатора, чтобы прошить программатор для того, чтобы начать прошивать микроконтроллер (вот так вот всё сложно).







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

Софтварный 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