Страница 2 из 2
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Вт фев 19, 2013 16:12:19
uwrtey
сбросил фьюзы на дефолтные и схема заработала как надо!
Еще раз Спасибо zero648!
__________
Вот, кстати, сделал то что мне нужно было благодаря ICR1
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Вт фев 19, 2013 19:05:10
zero648
Да, нет проблем!

Re: разные режимы работы ШИМ в Tiny13
Добавлено: Чт фев 21, 2013 20:45:55
uwrtey
Программа, которую я написал, работает некорректно!

Хотя, на первый взгляд, написана правильно!
Программа должна генерить ШИМ с частотой 50Гц.
длина импульсов зависит от кнопки ( на обоих каналах симметрично )
если кнопка выключена то длительность импульса 1400 мкс ( на обоих каналах ), если кнопка нажата, то длительность импульса = 1600 мкс.
Проблема заключается в следующем:
Видимо имеется какое-то рассогласование между аппаратным ШИМ и программой. Такое ощущение, что аппаратная часть не успевает за программой....
Программа не всегда уходит на выполнение прерывания. Иногда отпускаешь кнопку, а он все равно генерит импульсы 1600 мкс. Или наоборот нажмешь кнопку а он продолжает генерить с длительностью 1400 мкс. Как быть незнаю...
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Чт фев 21, 2013 23:41:52
zero648
Изменил режим срабатывания прерывания, и немного в самом обработчике.
Сам не проверял, если че, шуми.
Re: разные режимы работы ШИМ в Tiny13
Добавлено: Пт фев 22, 2013 00:18:04
uwrtey
Привет,
zero648 ! Спасибо за помощь, ЦЕНЮ !
Я еще не проверял, но сразу спрошу:
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! твой вариант работает безупречно!
решил в свой вариант добавить запись
Код: Выделить всё
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, Ты Человечище!
Воткнул конденсатор 0,22 мкф и глюки прекратились!
П.С.
Твой вариант мне понравился больше - он проще и компактнее. И самое что главное - ему пофиг на дребезг!
Еще раз Спасибо,
zero648!