Пожалуйста помогите чайнику с Binary Angle Modulation

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение ILYAUL »

Там же описано какие проблемы есть у ВАМ и где они совпадают с ШИМ.
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

COKPOWEHEU писал(а): Какой вообще смысл от выставления заранее заданной яркости заранее заданным диодам?
Такой же как в программе поиска максимального значения из трех переменных и больше ничего не делающей. Но в учебниках по программированию таких задач полно и по таким учебникам учатся программеры.
COKPOWEHEU писал(а):И вы гарантируете, что это прерывание не будет скопировано в другие проекты?
Это проблемы безмозглых копипастеров.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение ARV »

ILYAUL писал(а):Там же описано какие проблемы есть у ВАМ и где они совпадают с ШИМ
так то оно так, но цитата моего поста не в тему совсем.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Bullet
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пт июл 04, 2008 19:29:15
Откуда: Мурманск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Bullet »

Вставлю свои 5 копеек
http://radiokot.ru/circuit/light/run/78/
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Короче, что-то мне этот ВАМ не понравился..
Теперь хочу обычный софтовый ШИМ на 8 каналов... :oops: Однако, до меня не доходит блин! Запускал три канала ШИМ железных - все прекрасно работает и регулируется. А вот софтовый туплю.

Я так понял, что таймер настроен по переполнению. Пусть будет обычный 8 битный таймер. Считает он до 256.
При срабатывании прерывания по переполнению мы увеличиваем переменную-счетчик, с которой сравниваем все заданные каналы. И если есть совпадение, то выставляем в порту единичку, а если нету, то нолик.
Когда счетчик досчитал до 256 (обнулился), все сначала начинается...

Получается, если без предделителей таймер пашет, то при 8 МГц тактирования будет 8000000/256/256=122 Гц. Так?

А что будет если совпал у меня счетчик и выставил в порту единицу. А на следующем цикле счетчик увеличился и теперь уже не совпадает, значит сбросит порт в ноль. Какой же это ШИМ? Где-то собака порылась?
Станислав
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение ARV »

как только совпал - устанавливаем уровень, а сбрасываем все сразу только в момент "переполнения" счетчика
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Все. Понял. :))) Спасибо огромное! :beer:

Отдельно признателен за оперативность. Не ожидал такой скорости. :write:
Станислав
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение ARV »

на здоровье. можно еще проверять не на равенство, а на "больше или равно", тогда сбрасывать отдельно ничего не придется - само сбросится, когда счетчик обнулится.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение akl »

СКАЗОЧНИК писал(а):Теперь хочу обычный софтовый ШИМ на 8 каналов...
Можно обойтись без сравнений, просто выводя из предварительно заполненного буфера.
Спойлер

Код: Выделить всё

.INCLUDE "m8def.inc"

.equ   Fo=8000000

  .org   0x0000
RESET:
   RJMP   START
;*****************
  .org   0x0004
OVER_T2:
	IN	R15,SREG
	LD	R20,Z
	OUT	PORTB,R20
	INC	ZL
	OUT	SREG,R15
	RETI
;*****************
;*****************
;*****************
START:
   SER ZH
   OUT SPL,ZH
   OUT	DDRB,ZH
   CLR   ZH
   OUT   SPH,ZH

	RCALL	BUFER_RAM

	LDI	ZH,HIGH($100)
	LDI	ZL,LOW($100)

   LDI   R21,1<<SE
   OUT   MCUCR,R21   ; режим SLEEP IDLE
GO:
   LDI   R21,1<<TOIE2   ;разрешение прерывания сравнения T2
   OUT   TIMSK,R21
   OUT   TIFR,R21

   LDI   R21,$01
   OUT   TCCR2,R21

	CLT
   SEI
WAIT:
	SLEEP
	BRTC	WAIT
;признак изменения буфера установлен
	CLT
	RCALL	BUFER_RAM
   RJMP   WAIT

BUFER_RAM:
;заполнение буфера
	RET
.EXIT
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Сделал так, как Роман (ARV) описал.
Спойлер

Код: Выделить всё

	OVF0_:

		ldi temp, 01
	    out TCNT0, temp  		; Перезагрузка таймера (актуально, если период меньше 255, иначе можно убрать)

		inc Sravnenie
	
K1:		lds temp, Capture1
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Tport, Tpin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K2
		sbi Tport, Tpin			; Включаем вывод

K2:		lds temp, Capture2
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Oport, Opin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K3
		sbi Oport, Opin			; Включаем вывод

K3:		lds temp, Capture3
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Uport, Upin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K4
		sbi Uport, Upin			; Включаем вывод

K4:		lds temp, Capture4
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Report, Repin		; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K5
		sbi Report, Repin		; Включаем вывод

K5:		lds temp, Capture5
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Eport, Epin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K6
		sbi Eport, Epin			; Включаем вывод

K6:		lds temp, Capture6
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Rport, Rpin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K7
		sbi Rport, Rpin			; Включаем вывод


K7:		lds temp, Capture7
		cp Sravnenie, temp
		brsh PC+3				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		cbi Sport, Spin			; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		rjmp K8
		sbi Sport, Spin			; Включаем вывод


K8:		lds temp, Capture8
		cp Sravnenie, temp
		brsh PC+2				; Если Sravnenie равно или больше, то переходим, где ставим вывод в единицу
		nop						; Иначе, Сравнение меньше, значит сбрасываем вывод на ноль
		nop
		nop
		nop						; Включаем вывод

	reti
Все работает. Переменные Capture1-8 заданы при инициализации.
Теперь мне надо их плавно менять, а у меня все виснет при этом, если их менять в главном цикле, да еще и задержку если поставить. :facepalm:
Посмотрел в симуляторе, если я правильно понял, то у меня на прерывание уходит 64 такта. А т.к. всего у меня между прерываниями есть 240 примерно тактов, то у меня еще есть 176 свободных, чтобы не просрать очередное прерывание?
Как их сделать, чтобы пуеременные менялись где-то?
Станислав
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

Флаги то не сохраняете в прерывании.
СКАЗОЧНИК писал(а): то у меня на прерывание уходит 64 такта. А т.к. всего у меня между прерываниями есть 240 примерно тактов, то у меня еще есть 176 свободных, чтобы не просрать очередное прерывание?
Если у Вас прерываний других нет, и запрета прерываний в основном теле нет, то оно никак не просрется.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Маленько не то имел ввиду. )))
Ща, у меня уже что-то получаться начало. Иду в правильном нарпавлении.
Просто получалось, что в главном цикле он успевает сделать столько интераций, что все в итоге выводилось по среднему. Скорость слишком большая. Уже разобрался.

Спасибо. Флаги подправлю, сохранение сделаю.

Все. добился чего хотел. почти.
У меня все значения ШИМ для каналов изменяются плавно, но по кругу (если можно так сказать). Получается что-то в виде бегущего огня, которые плавно нарастают один за другим и также гаснут. Но... у меня все по кругу и поэтому плавно гаснуть получается, а плавно нарастать нет. :facepalm: :oops:

Где-то надо начинать переменные в другую сторону крутить? Как это проще сварганить?
Станислав
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение MOHCTEP »

СКАЗОЧНИК писал(а):Короче, что-то мне этот ВАМ не понравился..
А чем не понравился? И на какой частоте у вас таймер работал?
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Елки... Я уже и не помню. Помню только что АТМега8 на внутренней 8 МГц. Предделители не помню...
Не понравился :dont_know: тупой сложностью организации динамической смены яркости.... Т.е. как-то сделал, чтобы яркость по каналам была разная - все получилось и работало. Потом забросил на некоторое время. Потом опять вернулся к изделию, чтобы сделать плавное изменение яркости по каналам и понял, что забыл, как это вообще работает.
Для этого надо было сначала вспомнить, что я там нафигачил... :facepalm: Вспомнил. А заодно и вспомнил сложности в мерцании на больших задержках. А еще предстояло как-то менять яркости плавненько.

Плюнул на все это и переделал на программный ШИМ. (кстати, разница не сильно большая, но принципиальная). Однако, для моих 7 каналов мне прекрасно хватило. :)))

Как-то так.
Станислав
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение MOHCTEP »

Понятно. А я-то, наоборот, с программного ШИМа решил ВАМ попробовать. Очень уж там частота обновления низкая. А хотелось тоже цепочку из 16 штук динамически позажигать... И "обломался". ВАМ, у меня, по крайней мере, нормально яркости показывал, если таймер, как минимум, на 64 поделить. А это максимум 10 светодиодов, если больше, то уже мерцают. :(
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Вообще, ВАМ и надо доделывать. Просто мне стало лень. Перешел на ШИМ. Сделал как мне показалось проще, однако у страха глаза велики, возможно и на ВАМ справился бы еще лучше. :dont_know: :)))
Станислав
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение COKPOWEHEU »

Что ВАМ, что ШИМ не обязательно делать 8-битным, для глаза достаточно и 4-6 бит. У меня на 6-битном ВАМ-е нормально работали 10 RGB-диодов. Хотя с кодом пришлось извращаться.
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение MOHCTEP »

Да - верно. Делал на 6 битах, не очень понравились анимированные переходы. Сейчас работает линейка из 12 RGB диодов на ВАМе: все 8 бит, 8 мГц с предделителем на 64. 12 диодов еще терпимо для зрения, хотя боковым зрением уже мерцание очень заметно. Больше уже - трындец. Однако, если поднять частоту, то все яркости нивелируются и даже "врут", но мерцание конечно-же исчезает.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение YS »

Потом опять вернулся к изделию, чтобы сделать плавное изменение яркости по каналам и понял, что забыл, как это вообще работает.
Для этого надо было сначала вспомнить, что я там нафигачил...
Если для того, чтобы поменять режим изменения яркости, надо вспоминать алгоритм ее регулирования, то похоже что у написанного модуля регулирования яркости плохой интерфейс. :idea: В идеале стоит придерживаться принципа разграничения уровней абстракции. Тогда про то, как конкретно регулируется яркость, можно будет вообще забыть, и даже на ходу менять BAM на PWM и обратно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

))) До этого мне еще как до луны пешком... :) И вообще, надо на Си переходить. Ассемблер хоть и мощная штука, но довольно сильно добавляет времени к разработке нового устройства...
Станислав
Ответить

Вернуться в «AVR»