termostat: Все сообщения за 11 Июля 2005 года

 
ПнВтСрЧтПтСбВс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

termostat

аксакал

termostat>>А как ты думаешь какое напряжение на ножке INT1 ? Ответ объясни.
 


=====

Radiotehnik> Там будет логический ноль, поскольку INT1 установлен, как вход с Z-состоянием. А раз так, то он всё равно что в воздухе висит. То есть вторым щупом тестера можно с тем же успехом тыкать в воздух.
 


Железно! Антена тоже в воздухе висит - а телевизор показывает?

Нуля то на INT1 и нет, ведь и ножка и любой проводник являются антенами!

Я ж после своего вопроса как вежливый чувак дал и ответ несколькими строками ниже. Читай не спеша и думай.


Radiotehnik> С резисторами поступил так: от + питания через кнопку к INT1 подключил R=5,1 КОм; от INT1 на землю подключил R=100КОм. Глюк пропал!
Radiotehnik> Всё стало работать нормально
 


Вот теперь появился ноль. Но не потому что Z-состояние

а потому что Z-состояние (т.е. ВысокоОмный вход) да потенциал "0" поданый через резистор 100 КОм.


Radiotehnik> немного изменил программу

void ext_int1_isr(void)
{ #asm("cli")
 


Вот это: #asm("cli") - автоматически делает сам AVR при обработке прерывания

а это: #asm("sei") - автоматически делает компилятор ставя инструкцию RETI последней в функции обработчике прерывания.

однако!!! если вы покидаете обработчик прерывания где то посредине то должны сами сделать #asm("sei") если вам еужно чтоб прерывания обрабатывались далее.


о Прерываниях в задаче 3 курса.


Radiotehnik>
PORTD INV_B(1);
delay_ms(5000);
 



Может тебе не использовать инвертирование битов, а писать конкретно:

Нужна "1" пишешь PORTD SET_B(1); Нужен "0" соответственно...

Так вроде проще.

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru