-
- Виноват, забыл про это написать. PINB.1 выбран для сравнения, и там все как надо без использования ШИМ, а просто дерганием вывода.. я пытаюсь на PINB.0 организовать ШИМ. так что смотрите на него. - Constantin24(17.07.2013 07:38)
- при пошаговом прохождение выясняется что после команды TCCR0A=0b10000000; принудительно PINB.0 очищается. при этом PORTB.0=1 - Constantin24(17.07.2013 09:08)
- имхо, при этом PINB.0 начинает работать в режиме Compare Match Output и перестает зависеть от содержимого PORTB. Думаю, PORTB.0 нужно использовать либо как Compare Match Output, либо как GPIO, а не переключать его режим каждое прерывание. Hobo(295 знак., 17.07.2013 10:59)
- где же ты был раньше!) навел меня на мысль. Окей, так и сделаю.( Не знал, что при переводе в режим Compare A, перестает зависеть от содержимого PORTB.) - Constantin24(17.07.2013 11:52)
- А прочитать ответы? - KLIM83(17.07.2013 12:04, ссылка)
- Возник вопрос теперь в другом. при периоде ШИМ=1мс возникают 3 одинаковых ШИМ, затем идет четвертый с более длительным положительным импульсом. Затем все сначала. интересно почему так? - Constantin24(17.07.2013 13:19)
- понял почему. #asm("reti") неверно для меня исполнялось. жалею иногда что не в асме программирую - Constantin24(17.07.2013 16:09)
- Возник вопрос теперь в другом. при периоде ШИМ=1мс возникают 3 одинаковых ШИМ, затем идет четвертый с более длительным положительным импульсом. Затем все сначала. интересно почему так? - Constantin24(17.07.2013 13:19)
- А прочитать ответы? - KLIM83(17.07.2013 12:04, ссылка)
- где же ты был раньше!) навел меня на мысль. Окей, так и сделаю.( Не знал, что при переводе в режим Compare A, перестает зависеть от содержимого PORTB.) - Constantin24(17.07.2013 11:52)
- 1. при пошаговом прохождениИ KLIM83(123 знак., 17.07.2013 09:16)
- решил проблему. после TCCR0A=0b10000000; поставил PINB.0=1 и все работает. так понял то что после команды TCCR0A вывод переходит на альтернативу, а он первоначально сбрасывается в ноль, поэтому ставлю единицу. - Constantin24(17.07.2013 10:57)
- имхо, решение хоть и работает, но ... не очень красивое - Hobo(17.07.2013 11:04)
- согласен) - Constantin24(17.07.2013 11:52)
- имхо, решение хоть и работает, но ... не очень красивое - Hobo(17.07.2013 11:04)
- решил проблему. после TCCR0A=0b10000000; поставил PINB.0=1 и все работает. так понял то что после команды TCCR0A вывод переходит на альтернативу, а он первоначально сбрасывается в ноль, поэтому ставлю единицу. - Constantin24(17.07.2013 10:57)
- имхо, при этом PINB.0 начинает работать в режиме Compare Match Output и перестает зависеть от содержимого PORTB. Думаю, PORTB.0 нужно использовать либо как Compare Match Output, либо как GPIO, а не переключать его режим каждое прерывание. Hobo(295 знак., 17.07.2013 10:59)
- при пошаговом прохождение выясняется что после команды TCCR0A=0b10000000; принудительно PINB.0 очищается. при этом PORTB.0=1 - Constantin24(17.07.2013 09:08)
подробно не вникал, при беглом просмотре возникли вопросы:после ответа rezident-a, вопросы оказались фичами, посему отменяются :) Hobo(584 знак., 16.07.2013 23:40 - 17.07.2013 00:51)- Не могу не согласиться. Как- то нелогично в прерывании по переполнению намереваться дёргать вручную пин, который по идее должен управляться шимом. Аппаратный шим подразумевает, по крайней мере в кортексах то, что какой- либо вывод, будучи KLIM83(209 знак., 16.07.2013 23:48)
- Запись в регистр PIN приводит к переключению выхода в противоположное состояние. Про эту фичу AVR даже я, никогда их не использовавший, уже в курсе :) rezident(265 знак., 17.07.2013 00:13)
- Зачёт! Всегда однако и без этого обходился. Если на входе написано "вход"... Спасибо за фичу, про которую теперь и я, четыре года не использовавший АВР, уже в курсе ;) Сомневаюсь, впрочем, что буду использовать, поскольку MSP как- то больше KLIM83(13 знак., 17.07.2013 00:38)
- круто, я был не в курсе, и частенько скучал по 51-ой команде "CPL" :) так тогда там наверное почти правильная программа,а я тут ума леплю. Видимо был не прав - Hobo(17.07.2013 00:21)
- А эта фича не во всех AVR имеется. Подробностей не знаю. Даташиты конкретных кристаллов нужно изучать. - rezident(17.07.2013 01:59)
- судя по шапке, код создан какой-то программой - автоматическим писателем программ. Как мне показалось, они пытаются шим ручным ногодрыгом на таймере реализовать, но каким способом-разбираться не стал - Hobo(16.07.2013 23:55)
- Способом взаимоисключающих параграфов. Но автописатели иначе не умеют, наверное. Не берусь давать оценку их работе, т. к. сам не пользовался :) А вот что скажет топикстартер? - KLIM83(16.07.2013 23:58)
- да уже небось зачет сдал/или не сдал/ и пошел пиво пить :) - Hobo(17.07.2013 00:07)
- Эт в июле-то? :-) Не, такие толпами 2 раза в год набегают - Shura(17.07.2013 00:10)
- да уже небось зачет сдал/или не сдал/ и пошел пиво пить :) - Hobo(17.07.2013 00:07)
- Способом взаимоисключающих параграфов. Но автописатели иначе не умеют, наверное. Не берусь давать оценку их работе, т. к. сам не пользовался :) А вот что скажет топикстартер? - KLIM83(16.07.2013 23:58)
- Запись в регистр PIN приводит к переключению выхода в противоположное состояние. Про эту фичу AVR даже я, никогда их не использовавший, уже в курсе :) rezident(265 знак., 17.07.2013 00:13)
- Не могу не согласиться. Как- то нелогично в прерывании по переполнению намереваться дёргать вручную пин, который по идее должен управляться шимом. Аппаратный шим подразумевает, по крайней мере в кортексах то, что какой- либо вывод, будучи KLIM83(209 знак., 16.07.2013 23:48)
- а что, на PINB.1 ШИМ? Там только при инициализации 0, а дальше вы в бесконечном цикле с 1 по прерыванию - DVV(16.07.2013 22:43)
- Запости код в тело с тегами <С> - Evgeny_CD(16.07.2013 20:17)
- Виноват, забыл про это написать. PINB.1 выбран для сравнения, и там все как надо без использования ШИМ, а просто дерганием вывода.. я пытаюсь на PINB.0 организовать ШИМ. так что смотрите на него. - Constantin24(17.07.2013 07:38)