реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Замедленная реакция PINA.0 на появление напряжения на пине.
Ailer
сообщение Jul 28 2010, 02:29
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 10-09-07
Пользователь №: 30 432



Здравствуйте!
Делаю ШИМ-контроллер, на котором можно будет задавать заполнение с помощью двух кнопок ("+" и "-"). Сами кнопки хочу примотать к пинам 0 и 1 порта А. Для проверки наличия напряжения на пинах пользуюсь конструкцией типа: if(PINA.0==1). Получается странная вещь - после подачи короткого импульса где-то полсекунды ничего не происходит, потом контроллер ведёт себя так, как будто бы я держу напряжение на ножке на высоком уровне, но импульс-то был короткий, я тут же убрал напряжение! Откуда берётся такое запаздывание? Что можно сделать? Спасибо заранее.
Вот собственно управляющий код:
Код
if((PINA.0==1)&&(pwm<100))
       {
        pwm++;
       }          
       if((PINA.1==1)&&(pwm>0))
       {
        pwm--;
       }
       f=pwm;
       pwm_val=floor(255*(f/100));
       lcd_putsf("PWM: ");
       itoa(pwm,c);
       lcd_puts©;
       OCR2=pwm_val;
       delay_ms(100);
       lcd_clear();


Сообщение отредактировал rezident - Jul 28 2010, 03:16
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 28 2010, 03:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ailer, при составлении своего сообщения вы забыли указать тип микроконтроллера.
Go to the top of the page
 
+Quote Post
Ailer
сообщение Jul 28 2010, 03:35
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 10-09-07
Пользователь №: 30 432



Прошу прощения. Контроллер - AtMega32.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 28 2010, 04:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Ailer @ Jul 28 2010, 05:29) *
Для проверки наличия напряжения на пинах пользуюсь конструкцией типа: if(PINA.0==1).

Я вообще не могу понять, зачем проверять состояние вывода.

А, понял, это кнопка... Отвык от несобытийных подходов в программировании sad.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 28 2010, 06:06
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Ailer @ Jul 28 2010, 06:29) *
Для проверки наличия напряжения на пинах пользуюсь конструкцией типа: if(PINA.0==1).

Обычно, кнопки подключаются одним выводом к ноге МК, другим - на землю. При этом включают внутренний Pull-up на ногу, к которой подключена кнопка. При таком подключении, естественно, проверка нажатия кнопки выглятит типа if(PINA.0 == 0). А у Вас?

P.S. 1) Обычно, ещё и с дребезгом контактов борются... Возможно, в Вашей задаче это - излишне. 2) "Прореживать" увеличение/уменьшение значения переменной pwm с помощью задержки - как-то некрасиво: я бы "привязал" сюда таймер.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Jul 28 2010, 06:07
Сообщение #6


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



А как по схеме реализована подача сигналов на пины ? Есть ли привязка к питанию через подтягивающий резистор или она у вас внутренняя ?
Вы подаёте на пины единичку , а потом ноль или просто перестаёте подавать единичку ?


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Ailer
сообщение Jul 28 2010, 07:16
Сообщение #7





Группа: Участник
Сообщений: 5
Регистрация: 10-09-07
Пользователь №: 30 432



Кажется, разобрался, спасибо всем за участие.
Подавал единичку на пины, а потом просто передавал её подавать. Видимо, у пинов есть существенная для данной задачи ёмкость и крайне малый ток утечки - ещё 1,5-2 секунды пин был как бы в высоком состоянии из-за своей ёмкости. Припаял резисторы на 100 кОм между пинами и землёй - вроде помогло. Сейчас ожесточённо тестирую smile.gif
(да, обрабоку событий сделал по прерыванию таймера, спасибо за подсказку.)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2010, 09:45
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Ailer @ Jul 28 2010, 11:16) *
ёмкость и крайне малый ток утечки - ещё 1,5-2 секунды пин был как бы в высоком состоянии из-за своей ёмкости.


Да там от силы 30 pf - ищите ещё. Как вы кнопки включили?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Jul 28 2010, 14:08
Сообщение #9


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Подозреваю висящий пин.
Go to the top of the page
 
+Quote Post
Клим
сообщение Jul 29 2010, 15:00
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(Ailer @ Jul 28 2010, 10:16) *
Припаял резисторы на 100 кОм между пинами и землёй - вроде помогло.

Вот эти глупости прекращайте сразу.
Для кого придумали встроенные поттягивающие к + резисторы ?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016