Complementary PWM и Push-Pull режимы на таймере 1 контроллеров STM32

Это скорее не статья, а развернутый ответ на сомнения моего уважаемого коллеги Lifelover 'а, которые он выражал в этом обсуждении относительно возможности реализации некоторых режимов ШИМ на таймерах контроллеров серии STM32.



Читать дальше
  • +5
  • 07 января 2018, 16:13
  • _YS_

Среднечастотный частотомер на AVR. Часть 1, динамическая индикация.

  Давно хотелось иметь функциональный генератор с приличными характеристиками и не фантастической сложностью. Поэтому на Ali был прикуплен чип XR-2206, поиском по инету найдена схема генератора — XR-2206 5Hz to 300kHz Function Generator. Конструкция достаточно хорошо проработана и описана.
  Собственно к схеме генератора претензий нет, некоторые вещи я бы сделал по другому, но это потом в процессе изготовления. Мне сразу не понравилась цифровая шкала генератора (там же, страница 2). Его программа представляет сборку из скетчей Arduino, я их не понимаю и не горю желанием изучать. Да и применение ATmega328 мне показалось неоправданно жирным. Короче решил спроектировать свою цифровую шкалу на ATmega8A. Результат представляю вашему вниманию, код написан на ассемблере AVR в среде AVR Studio 4.19.


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

Полезная книжка по аналоговому дизайну от ковбоев.

Texas Instruments активно пиарит свою бесплатную книгу Analog Engineer´s Pocket Reference. Раздают её в пдфе тут, и на мой взгляд шпаргалка стоит внимания.


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

Fritzing - opensource аналог Sprint Layout

Fritzing — ПО с открытым кодом, разработанное чтобы помочь дизайнерам, начинающим радиолюбителям и просто энтузиастам перейти от физического прототипирования к законченному продукту на базе популярных платформ Arduino, Raspberry Pi и многих других.

Несмотря на то что изначально Fritzing разрабатывался как инструмент автоматизации прототипирования для не-инженеров в программе есть довольно много различных интересных фишек, и в целом после серьезного ПО он мне очень напоминает Sprint Layout по удобству и легкости работы.

На сегодняшний день это самое простое ПО для проектирования и производства печатных плат.
Но я использую его для макетирования на обычных паечных макетных платах поскольку Fritzing позволяет смотреть принципиальную схему для проверки правильности разводки схемы — как раз то чего мне всегда не хватало в Sprint Layout. Беспаечные макетные платы и stripboard тоже поддерживаются.
И конечно можно сначала составить схему, а уже потом разводить плату.

Поскольку Fritzing занимает мало места (>200 МБ) и это portable ПО я всегда ношу его с собой на флешке и на 8" планшете с Win8.1


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

Составное USB устройство на STM32F4

После реализации USB audio, захотелось прикрутить к проекту еще и ком-порт. Естественно, через USB CDC. Тема в интернете освещена многократно, но, в основном, по форумам производителей МК. Ближе всего подходит к моему случаю аппнота NXP AN11115 (http://www.nxp.com/documents/application_note/AN11115.zip) в которой разбирается составное устройство UAC+CDC.


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

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

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

Бюджетная подставка для паяльника своими руками.


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



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

3D-Модельки компонентов

Поймал себя на мысле, что у меня скопилось несколько моделек компонентов, которые нарисовал сам или нашел в сети и чуть поправил…

Решил поделиться.
Модельки в форматах wings и wrml
В архиве:
  • acs756 — датчик тока
  • SMD-конденсатор 0201
  • Коннекторы 1x1(из него набираются остальные), 1x2, 1x3, 1x4, 2x3
  • 7-х Сегментный индикатор на 4 позиции (красный и зеленый)
  • DisplayPort
  • DVI
  • Плавкий предохранитель
  • HDMI
  • SMD-Индуктивность
  • Разъем питания 12V на материнку (модель не точная, только габариты)
  • Разъем питания на материнку 2x12 (модель не точная, только габариты)
  • SMD-кварц QC25
  • Спикер (только wrml)
  • USB 3.0 A
  • USB 3.0 B (модель не правильная — переделка из модели торцевой розетки)

Все модели (кроме специально отмеченных) — пропорционально-точные по размерам. Как правило пропорция 0.394 (1/2.54).



Возможно кому-то будет интересно…
Под катом скрины моделек из DipTrace


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

Конвертер HTML/CSS/JS кода в массивы байт

В процессе работы по запуску web-сервера на STM32 понадобилась программа, конвертирующая исходные тексты страниц (HTML/CSS и др.) в массивы данных, для последующей загрузки в исходники микроконтроллера.
После непродолжительных поисков было решено написать свою, за одно вспомнить C#.

Программа для конвертации текста в HEX


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