AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
08.01.2014, 04:05
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от Fraktal
|
только тут Тема нужно написать не просто Pin а конкретнее Pin"X". Просто Pin = ошибка. Может ты опечатался.
|
Именно так - опечатка. Я ведь не компилировал - сайт не позволяет ![Улыбка](images/smilies/icon_smile.gif) .
Код:
|
while((PINB & (1‹‹2)) == 0) |
|
|
|
|
08.01.2014, 04:10
|
|
Временная регистрация
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
|
|
|
|
08.01.2014, 09:21
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от akegor
|
От себя добавлю - только ДШ и еррату.
|
Жжешь, а nixto кто читать будет ?!
__________________
Осторожно , злой кот
|
|
|
|
08.01.2014, 12:33
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от dosikus
|
Жжешь,
|
Можно и перерывчики делать...
Сообщение от _Артём_
|
Именно так - опечатка.
|
И с этой очепяткой у ТС заработало? И на PINB2 компилятор не ругнулся? Или ругань - по боку?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
08.01.2014, 13:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,918
Сказал спасибо: 2,981
Сказали Спасибо 3,161 раз(а) в 2,146 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от Fraktal
|
ребят а как тут цикл создать , что то у меня не идет.
|
А за использование _delay и/или циклов в обработчике прерывания я приговаривал-бы к пожизненному эциху с горячими паяльниками или принудительной переквалификации в джамшута.
|
|
|
|
08.01.2014, 15:21
|
|
Прописка
Регистрация: 16.03.2007
Адрес: Невинномысск, STAVROPOL REGION (26)
Сообщений: 118
Сказал спасибо: 583
Сказали Спасибо 28 раз(а) в 15 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от ForcePoint
|
А за использование _delay и/или циклов в обработчике прерывания я приговаривал-бы к пожизненному эциху с горячими паяльниками или принудительной переквалификации в джамшута.
|
Полностью согласен.
Добавлю, вам (ТС) настоятельно советую сразу отказаться от манипулирования шестнадцатеричными цифрами при конфигурировании портов, как у вас:
Код:
|
DDRB =0x01;
PORTB = 1;
... |
Вы сами запутаетесь скоро, если уже не запутались. Я когда начинал изучать МК тоже сначала думал, что легче цифрами, ан нет, потом задолбался разбираться, что и как.
При работе с DDRх и PORTx манипулируйте Pxn, например
Код:
|
DDRD=(1‹‹PD1)|(1‹‹PD2); //PD1 и PD2 - в 1 |
Можно и PINn, например
Код:
|
PORTB&=~(1‹‹PINB1); // PINB1 - в 0 |
Они объявлены одинаковыми значениями.
Вы заранее знаете, что у вас подключено на PD1, PD2, PINB1. Поэтому знаете, что будет получать лог. 0, а что - 1.
Последний раз редактировалось ArtemKolesnikov; 08.01.2014 в 15:28.
|
|
|
Сказали "Спасибо" ArtemKolesnikov
|
|
|
08.01.2014, 16:29
|
|
Временная регистрация
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от akegor
|
Можно и перерывчики делать...
И с этой очепяткой у ТС заработало? И на PINB2 компилятор не ругнулся? Или ругань - по боку?
|
ругнулась студия не без этого , пришлось подправить опечатку а после Автору - Артему подсказал про нее.
|
|
|
|
08.01.2014, 16:32
|
|
Временная регистрация
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
ArtemKolesnikov, Благодарю за СОВЕТ , буду стараться писать так. Просто такая корявость моего кода идет от "1-го разряда из 32 бит имеющихся" моего опыта программирования микроконтроллеров и знания синтаксиса СИ и его конструкций. Когда мой опыт перерастет в "8-й разряд из 32 бит имеющихся" тогда и конструкция и лаконичность кода и алгоритма будет интелектуальнее.
Последний раз редактировалось Fraktal; 08.01.2014 в 16:39.
|
|
|
|
08.01.2014, 16:49
|
|
Временная регистрация
Регистрация: 21.02.2013
Сообщений: 87
Сказал спасибо: 70
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
ForcePoint, А как же мне обойти эти острые углы в моем случае. Если у меня по нажатию кнопки PinB2 становится равен нулю как мне и нужно и после мне требуется чтобы функция main начала снова обрабатываться после того как произойдет отключение кнопки от земли т.е PINB2 = 1. Какой есть более корректный способ не используя цикла в прерывании "в моем случае" отследить условие выхода из прерывания?
|
|
|
|
08.01.2014, 17:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,918
Сказал спасибо: 2,981
Сказали Спасибо 3,161 раз(а) в 2,146 сообщении(ях)
|
Re: Как программно отследить появление логического нуля на входе /Reset?
Сообщение от Fraktal
|
Какой есть более корректный способ не используя цикла в прерывании "в моем случае" отследить условие выхода из прерывания?
|
Естественно и единственно (необходимо и достаточно) - изменить алгоритм. Например - ISR(INT2_vect) должен инвертировать флажок (бит в некоей переменной или саму перемунную, если бит будет затруднителен, с антидребезгом, естественно), а main по состоянию флага чтоделает или нет.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:04.
|
|