Страница 2 из 2

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Вт фев 19, 2013 16:12:19
uwrtey
сбросил фьюзы на дефолтные и схема заработала как надо!
Еще раз Спасибо zero648!

__________
Вот, кстати, сделал то что мне нужно было благодаря ICR1

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Вт фев 19, 2013 19:05:10
zero648
Да, нет проблем! :beer:

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Чт фев 21, 2013 20:45:55
uwrtey
Программа, которую я написал, работает некорректно! :cry: Хотя, на первый взгляд, написана правильно! :shock:

Программа должна генерить ШИМ с частотой 50Гц.
длина импульсов зависит от кнопки ( на обоих каналах симметрично )
если кнопка выключена то длительность импульса 1400 мкс ( на обоих каналах ), если кнопка нажата, то длительность импульса = 1600 мкс.

Проблема заключается в следующем:
Видимо имеется какое-то рассогласование между аппаратным ШИМ и программой. Такое ощущение, что аппаратная часть не успевает за программой....
Программа не всегда уходит на выполнение прерывания. Иногда отпускаешь кнопку, а он все равно генерит импульсы 1600 мкс. Или наоборот нажмешь кнопку а он продолжает генерить с длительностью 1400 мкс. Как быть незнаю...

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Чт фев 21, 2013 23:41:52
zero648
Изменил режим срабатывания прерывания, и немного в самом обработчике.
Сам не проверял, если че, шуми.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 00:18:04
uwrtey
Привет, zero648 ! Спасибо за помощь, ЦЕНЮ ! :beer:

Я еще не проверял, но сразу спрошу:
in Temp, GIFR ; сбрасываем флаги
out GIFR ,Temp
Ты хотел сказать EIFR. :) я заметил эту запись в Твоем первом варианте. А для чего она? На первый взгляд она ничего не делает... :)
EIFR всегда читается как 255 что ли ?

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 07:38:41
ibiza11
uwrtey писал(а):А для чего она? На первый взгляд она ничего не делает... :)
Она считывает регистр, и записывает его обратно))).
Теперь серьезно: Для того чтобы сбросить флаг - нужно записать туда лог."1". Когда Вы считываете регистр - получаете единицы в тех местах, где установлены флаги. При записи единиц в те места, где были единицы - получите сброс всех флагов.
Вывод: эта конструкция сбрасывает все возведенные флаги.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 09:37:04
zero648
uwrtey писал(а):Ты хотел сказать EIFR. :) я заметил эту запись в Твоем первом варианте. А для чего она? На первый взгляд она ничего не делает... :)
EIFR всегда читается как 255 что ли ?
Ну собственно это, Я, и имел в виду, :))

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 10:14:56
uwrtey
Спасибо, zero648! твой вариант работает безупречно! :beer: :)

решил в свой вариант добавить запись

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


	in  Temp, EIFR						; сбрасываем флаги *************************************************
	out EIFR ,Temp
но это не помогло!

Видимо проблема в самом алгоритме, только вот я не могу понять где именно...

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 10:32:08
zero648
uwrtey писал(а):но это не помогло!

Видимо проблема в самом алгоритме, только вот я не могу понять где именно...
Что не помогло, сбрасывание флагов? срос флагов нужен здесь для исключения ложных срабатываний в начале программы после команды SEI. В самом обработчике тоже есть изменения, обрати внимание, главным образом, на обработчик.

P.S. Обрати внимание вот на это:
ldi r16,(0b01<<ISC00) ; изменение логического уровня на INT0 генерирует запрос на прерывание
out MCUCR,r16

и вот на эту замечательную команду, с помощью которой можно узнать без всяких флагов какой уровень фронта в данный момент на ноге и сразу выполнить нужное условие:
sbis PIND, 2 ; мы вошли в прерывание нарастающему фронту ?
rjmp set_falling_edge ; если нет, то идем на метку "прерывание по падающему фронту"

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 14:17:16
uwrtey
В самом обработчике тоже есть изменения, обрати внимание, главным образом, на обработчик.
дак конечно я это видел! :)

я говорю, что твой вариант работает отлично!
а вот почему мой вариант не работает я не могу понять...

я уже строил программу подобным образом и она работала без проблем.. а эта не работает - вот я и удивляюсь...

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 14:49:31
zero648
Проверил твою версию проги в протеусе, все работает как надо, возможно в железе влияет дребезг кнопок, поставь на кнопку конденсатор параллельно подтягивающему резюку.

Re: разные режимы работы ШИМ в Tiny13

Добавлено: Пт фев 22, 2013 16:04:39
uwrtey
zero648, Ты Человечище! :beer:
Воткнул конденсатор 0,22 мкф и глюки прекратились!

П.С.
Твой вариант мне понравился больше - он проще и компактнее. И самое что главное - ему пофиг на дребезг! :))

Еще раз Спасибо, zero648!