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

 
 
> Не работают порты, Проблема считывания состояния портом
konstan
сообщение Jan 29 2008, 18:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 16-02-07
Из: Deutschland
Пользователь №: 25 408



Проблема следующая

При возникновении прерывания ( ИНТ0 и ИНТ1) на Atmega8 не могу считать правильно состояния каналов PC5 и PC4. В чем может быть проблемы.

Также не понятно , прерывания ИНТ0 и ИНТ1 настраиваю по фронту, срабатывают по срезу? Полная ерунда.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_=VRA=_*
сообщение Jan 30 2008, 13:58
Сообщение #2





Guests






Диагноз: вопиющая безграмотность в азах схемотехники, выразившаяся в попытках работать с контактами без всяких мер антидребезга.



Лечение: полный курс "Искусства схемотехники" Хоровица и Хилла в виде инъекций в ленивую филейную часть.



Рекомендации: никогда более не хвататься за работу, к которой не способен либо которой недостаточно обучен
Go to the top of the page
 
+Quote Post
konstan
сообщение Jan 30 2008, 14:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 16-02-07
Из: Deutschland
Пользователь №: 25 408



Я с вами согласен, что есть дребезг.

Внимательно смотрите программу.

Допустим у меня вызвалос ложное прерывание INT0 ( то есть контактор PD2 изменил свое состояние с 0 на 1, что соответствует режиму пропаданию питания). В теле программы я опрашиваю состяния вывода PD3 ( так как у нас ложное срабатывание, то вывод не изменил свое состояние, как был 1 так и остался). Если PD3=0 то это не ложное срабатывание и программе нужно выполнить действия при отключении питания, иначе это ложное срабатыание и делать ничего не надо.

Такая же позиция относится к состоянию INT1.

Громкие слова кидать не надо. Обратился, потому что есть проблема. Ее нужно помочь решить. Письма подобного рода ничем не помогают. То что есть здесь дребезг - беспорно. Проблема решается программно.

Прикрепляю файл.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 30 2008, 15:33
Сообщение #4


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(konstan @ Jan 30 2008, 13:36) *
Выводы PD2 и PD3 посажены через оттягивающее сопротивление на +5В.
Выводы PD2 и PD3 подключены на вывод реле с 2 положениями. Таким образом если подать питание, реле замкнется и посадит PD2 на землю (PD3 - высокое напряжение). При пропадании напряжения, контроллер питается от конденсатора, а реле выключается, замыкая PD3 на землю (PD2 - высокий уровень).

1- не то инициалицируется прерывание (менял уровень срабатывания прерываний по фронту - ничего не помагало, все равно вызывалось то же прерывание)
2- не могу прочитать состояния выводов порта D.

Объясните что не так сделано


1) Не надо паниковать, дедушка вра шутит. Надо успокоиться и внятно объяснить, как всё работает и что вы хотите. Ваше объяснение очень сумбурное. В приведённой программе вы НЕ читаете порт Д, вы читаете порт С. Что значит "не то инициалицируется прерывание"? Проинициализируйте то, какое надо, всё в ваших руках.

2) При пропадании питания возникает фронт на инт0, возможно с дребезгом, потом ничего не происходит, пока летит контакт (несколько мс, кстати), потом возникает спад на инт1. По фронту возникает прерывание, в прерывании вы читаете портС4, зачем - вы нам не объясняли, затем вы ждете внутри прерывания, пока портС4 станет 0. Так плохо делать, но допустимо. Что здесь не так, как вы планировали?

Цитата(konstan @ Jan 30 2008, 14:31) *
Допустим у меня вызвалось ложное прерывание INT0 (то есть контактор PD2 изменил свое состояние с 0 на 1, что соответствует режиму пропаданию питания). В теле программы я опрашиваю состяние вывода PD3 (так как у нас ложное срабатывание, то вывод не изменил свое состояние, как был 1 так и остался). Если PD3=0 то это не ложное срабатывание и программе нужно выполнить действия при отключении питания, иначе это ложное срабатыание и делать ничего не надо.

Такая же позиция относится к состоянию INT1

3) Опять нечёткое описание. Слов много, а инфы ноль. Ну где вы в теле программы опрашиваете состояние вывода PD3? У вас всё тело - это while(1).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post



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

 


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


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