Рейтинг
37.52
голосов: 39
avatar

AVR

О блоге

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

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

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

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

Читатели (269)

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

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

чарлиплексинг: 12 светодиодов на 4 ножки без регистрации и СМС

AVR
перепало мне задание сделать из подножного корма простенькое устройство, дающее на выходе определенную частоту, её выбирает пользователь (одну из десяти заранее заложенных) и соответственно как-то нужно показать какая частота сейчас выдаётся. Была найдена жменя светодиодов, кварц и мега48, ну и дабв не скучно было городить было принято решения придумать проблем на свою ж какое-то забавное техническое решение.
Для подключения 12 светодиодов нужно:
а) 12 ножек контроллера и 12 резисторов
б) соединить в группы по 4 лампочки катодами или анодами(в зависимости от религиозных убеждений)и потратить 7 ножек и 4 резистора
в) приколоться и соединить их как на рисунке ниже, потратив 4 ножки контроллера и 4 резистора номиналом в два раза меньше обычного(я брал по 500 ом, но должно работать и с меньшими)



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

Новая Atmel Studio 7 импортирует код из Arduino IDE в один клик

AVR
Бывшая AVR Studio теперь позволяет разработчикам Arduino быстро преобразовывать свои скетчи созданные в среде Arduino в полноценные C++ проекты, например для отладки в симуляторе или в железе (вот только JTAG отладчик обойдется минимум в сто баксов).

Поддерживаются платформы AVR и ARM, а также ардуино платы. Причем все — даже те которые вы сами сделали и добавили в Arduino IDE (но только AVR-based).

Новая студия сделана на основе Visual Studio Isolated Shell 2015, поэтому она не устанавливается в Windows XP.
После установки студия занимает на диске 888Mb, причем из них 365Mb занимают примеры кода которые можно не устанавливать (Atmel Software Framework — библиотека свободного исходного кода с 1600 примерами проектов)
Также некоторое место займет .net framework 4.6, если он еще не был установлен.

Может быть со временем на Atmel Studio перейдет большая часть продвинутых ардуинщиков?
Дебажить логику в симуляторе седьмой студии — одно удовольствие.
Ардуинщиками теперь можно быстро увидеть в какие ассемблерные инструкции превращается код и что можно оптимизировать.

Стоит заметить что функция импорта проектов Arduino IDE только односторонняя и пока что сырая, скетч состоящий из нескольких файлов импортировать пока что не умеет.
Интеграция работает начиная с 1.6.5 версии Arduino IDE. Если у вас поля выбора платы и девайса пустые — значит нужно обновить версию Arduino IDE.
Как вариант обхода этого ограничения — можно написать консольную программу, чтоб она все ino файлы склеивала в один большой ino файл, предназначенный специально для импорта в студию. Заодно эту программу можно доработать, чтобы оно потом автоматически подтягивало изменения из С++ проекта назад в ардуиновский проект. Думаю написать такую утилиту.

Ссылка для скачивания: Atmel Studio 7

Кольцевой буфер

AVR
Пусть здесь полежит, а то вдруг с моим репозиторием что случится… А тут, глядишь, кому и сгодится.
Код для обслуживания кольцевых буферов, маленький и шустрый.
Собственно так: в секции данных надо поместить массивчик, где будет храниться сам буфер, произвольного размера, до 255 байт. Глубина буфера задаётся константой RBSIZE, и массив получается на три байта больше размером. В первом байте лежит глубина заполнения, то есть сколько данных сейчас в буфере. При укладке байта — увеличивается, при выгрузке — уменьшается; если ноль — буфер пуст. Второй и третий байты — служебные, указатели загрузки и выгрузки. Для инита буфера надо эти три байта обнулить.
А дальше всё стандартно — процедурой PutToBuf укладываем в буфер содержимое r16, процедурой GetFromBuf — достаём. Если буфер переполнен — очередной байт туда не ляжет, если пуст — содержимое r16 не изменится.
Портит xl,xh,r17, загрузка/выгрузка занимает по 29 тактов. Локальных меток не имеет, так что можно легко тиражировать в любом количестве экземпляров внутри программы.


; В секции данных:
;.equ RBSIZE=11
; ringbuf:	.byte RBSIZE+3
; Конструкция кольцевого буфера: 
;+0 - глубина заполнения
;+1 - указатель укладки
;+2 - указатель выгрузки
;+3... - данные
; Использованные регистры: xh,xl,r16,r17
; укладка в буфер. 29 тактов
PutToBuf:	ldi	xh,high(ringbuf+3) ;загрузка базы буфера
		ldi	xl,low (ringbuf+3)
		lds	r17,ringbuf+0	;load rbdept
		cpi	r17,RBSIZE        ; проверка на переполнение
		brcc	pc+16
		inc	r17
		sts	ringbuf+0,r17    ;store rbdept
		lds	r17,ringbuf+1 	;load rbputptr
		add	xl,r17            ; складываем указатель с базой
		brcc	pc+2
		inc	xh
		st	x,r16            ; помещаем байт в буфер
		inc	r17               ; приращение указателя укладки
		cpi	r17,RBSIZE        ; закольцовка, если достигнута граница
		brcs	PC+2
		clr	r17
		sts	ringbuf+1,r17	;store rbputptr
		ret

; выгрузка из буфера. 29 тактов
GetFromBuf:	ldi	xh,high(ringbuf+3)
		ldi	xl,low (ringbuf+3)
		lds	r17,ringbuf+0	;load rbdept
		tst	r17            ; проверка наличия данных
		breq	pc+16
		dec	r17
		sts	ringbuf+0,r17	;store rbdept
		lds	r17,ringbuf+2	;rbgetptr
		add	xl,r17
		brcc	pc+2
		inc	xh
		inc	r17
		cpi	r17,RBSIZE
		brcs	PC+2
		clr	r17
		sts	ringbuf+2,r17	;rbgetptr
		ld	r16,x
		ret

Простая макетная плата ATmega16 ATmega32 DIP

AVR
Развёл простенькую макетку. Тупо все ноги МК вывел на пятачки, кондёры по питанию повесил, кварц, и разъём для программирования. Остальное цепляется к пятакам по вкусу. Так как у меня в разных проектах всё по разному, вешать кнопки/светодиоды на жёстко заданные выводы нет смысла.


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

Термометр на ATTINY2313+DS18B20 доработанный

AVR
Недавно занимался сборкой компьютера с полностью пассивным охлаждением. Чтобы было удобно контролировать температуру процессора, нужно было по быстрому собрать термометр. Всяческие программы типа «Everest», «Aida», и прочие мне не подходили по одной простой причине: хотелось контролировать температуру даже при выключенном мониторе. Или даже при полностью отключенном мониторе. Было решено собрать термометр на основе цифрового датчика DS18B20, дешёвого микроконтроллера AVR, и семисегментного индикатора. Сначала я хотел повторить схему термометра по одному из вариантов, предложенных в интернете. Но после анализа схем, размещённых в интернете, я пришёл к выводу, что придётся изобретать свой «велосипед».


Читать дальше
  • +8
  • 15 сентября 2014, 20:45
  • Zlodey
  • 4

Расширения Atmel Studio 6

AVR

Сегодня речь пойдет о некоторых расширениях (extensions) бесплатной IDE от Atmel. Как можно понять из названия, extension — это плагин, расширяющий возможности редактирования или отладки кода. Устанавливать их можно как из самой Atmel Studio (далее по тексту — AS), так и вручную скачивая файлы расширений со своеобразного «app-store» — Atmel Gallery. И в том, и другом случае потребуется регистрация на сайте.
Подкатом инструкция в картинках.

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

Обзор программатора AVRISP-MKII

AVR
Попался ко мне в руки вот такой клон программатор AVRISP-MKII вот отсюда.



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

AVRASM: Пример использования "Диспетчера задач RTOS 2.0" (установка и настройка)

AVR
Для демонстрации основных возможностей и особенностей «Диспетчера задач RTOS 2.0» был собран демонстрационный макет, на основе «Универсальной макетной платы для МК в DIP-корпусе». В качестве прикладной задачи: мигаем светодиодами, в разных режимах…


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

AVRASM: Диспетчер задач RTOS 2.0 (псевдо кооперативная ОС)

AVR
Отрефакторил код «Диспетчера задач RTOS» (псевдо кооперативной ОС), оптимизировал и универсализировал, добавил новые фичи, декларировал чёткое API, и опубликовал на GitHub… Фактически, весь код был переписан сызнова, по прототипу DI HALTа.

Operating system placement


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

Easy_I2C AVR ASM практикум PCF8591 & DS1307

AVR
PCF8591 это микросхема в которой 4 АЦП и 1 ЦАП на скорости до 100кГц по i2c
Вот я добрался до неё. Она, как мне казалось, не самая простая микросхема однако сложного в ней по сути ничего нет.

Читать дальше
  • +1
  • 02 февраля 2014, 22:14
  • deses
  • 1