roboforum.ru

Технический форум по робототехнике.

 

прерывание, помогите

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

прерывание, помогите

Сообщение chinga » 31 мар 2010, 12:15

здравствуйте! вот скока уже пытаюсь работать с прерыванием... я новичек и никак не могу разобраться...=(
http://www.decada.org.ru/project/lesson ... /index.php читал я вот здесь... когда светик мигает нажимаю на кнопку на дисплей выводит СТОПЪ... а вот в место СТОПЪ я не могу зажечь просто светодиод... вот светодиод мигает ( или другая программа) под основной программой, и когда нажимаю на кнопку горит другой, а когда отпускаю кнопку основная программа должна продолжать работу основной программы с того места, где она была прервана...
вот программа
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"
$crystal = 16000000

Config Pind.6 = Output
Config Pind.7 = Output
Config Pind.2 = Input
Config Int0 = Falling

Dim Wtime As Byte

On Int0 Stopbutton

Cls

Wtime = 200

Enable Interrupts
Enable Int0

Do
  Set Portd.6
  Waitms Wtime
  Reset Portd.6
  Waitms Wtime
Loop

Stopbutton:
  Portd.7 = 1
Return

End
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение galex1981 » 31 мар 2010, 14:21

Не пойму, объясни еще раз, светодиод мигает в основной программе? Прерывание выполняется или нет?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: прерывание, помогите

Сообщение Michael_K » 31 мар 2010, 14:30

Да, слова-то русские а смысл какой-то совсем не русский :)
Внутрений телепатический голос мне подсказывает перевод:

Чинга хочет, чтобы основная программа мигала светодиодом.
Когда он нажимает на кнопку, основная программа, как он думает должна встать и должен запуститься обработчик прерывания. Который зажжет другой светодиод. И будет им светить, пока кнопка нажата.
Когда он отпустит кнопку, то как он думает, прерывание должно, видимо, погасить второй светодиод и вернуть управление основной программе...
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: прерывание, помогите

Сообщение chinga » 31 мар 2010, 14:57

да=))) ну это для примера... у меня под основной программой другая программа... вот как работает? не поможетЕ?
Модератор blindman:Предыдущий пост цитировать не надо, тем более целиком
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение tsrodger » 31 мар 2010, 15:02

chinga писал(а):
Код: Выделить всёРазвернуть
Stopbutton:
  Portd.7 = 1
Return


Не пишу на Баскоме, но если я правильно понял задачу и синтаксис в примере то у вас все работает, просто в вашем примере мигать нечему и все ...
Код: Выделить всёРазвернуть
Stopbutton:
  Set Portd.7
  Waitms Wtime
  Reset Portd.7
  Waitms Wtime
Return
Аватара пользователя
tsrodger
 
Сообщения: 134
Зарегистрирован: 18 сен 2008, 17:31
Откуда: Питер
Skype: tsrodger
прог. языки: VB.Net, C, PHP

Re: прерывание, помогите

Сообщение chinga » 31 мар 2010, 15:55

останавливается, и продолжает работать... но второй светодиод не горит который должен гореть при нажатие кнопки...
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение tsrodger » 31 мар 2010, 16:15

у вас прерывание сработает только по спаду (те момент нажатия), а на не удержание...
Аватара пользователя
tsrodger
 
Сообщения: 134
Зарегистрирован: 18 сен 2008, 17:31
Откуда: Питер
Skype: tsrodger
прог. языки: VB.Net, C, PHP

Re: прерывание, помогите

Сообщение galex1981 » 31 мар 2010, 16:15

А попробуй без прерывания 1 выставить на выход, где подключен 2й светодиод
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: прерывание, помогите

Сообщение chinga » 31 мар 2010, 16:44

работает на port.6, а из за чего может не работать port.7? спалил?
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение galex1981 » 31 мар 2010, 17:03

Может и спалил, может - недопаял ножку
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: прерывание, помогите

Сообщение Vovan » 31 мар 2010, 18:03

Proteus Вам в помощь :)
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: прерывание, помогите

Сообщение chinga » 31 мар 2010, 18:23

я так и не подружился с ним=(
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение chinga » 31 мар 2010, 18:41

но када я отпускаю кнопку светоиод не выключается... только работает с заддержкой... нажимаю кнопку горит и только по заданной заддержке горит и выкл, и продолжается основная программа... а если убрать заддержку то нажимаю кнопку он горит бесконечно...
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"
$crystal = 16000000

Config Pind.3 = Input
Config Pind.6 = Output
Config Pind.5 = Output
Config Pind.2 = Input
Config Int0 = Falling

Dim Wtime As Byte

On Int0 Stopbutton

Cls

Wtime = 200

Enable Interrupts
Enable Int0
Do
Set Portd.5
  Waitms Wtime
  Reset Portd.5
  Waitms Wtime
Loop


Stopbutton:
  Portd.6 = 1
  Waitms 1000
  Reset Portd.6

Return

End
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: прерывание, помогите

Сообщение galex1981 » 31 мар 2010, 21:53

Правильно что горит бесконечно, ты же включаешь светодиод но не выключаешь его
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: прерывание, помогите

Сообщение tsrodger » 31 мар 2010, 22:27

вообщем вот - схема в протеусе, ваш мк два диода и кнопка... код рабочий или я чего-то не понимаю :o
Вложения
debug.rar
(6.65 КиБ) Скачиваний: 0
Аватара пользователя
tsrodger
 
Сообщения: 134
Зарегистрирован: 18 сен 2008, 17:31
Откуда: Питер
Skype: tsrodger
прог. языки: VB.Net, C, PHP

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Mail.ru counter