Просмотр этой темы:
1 анонимных пользователей
Сотрудник
![]() ![]() Зарегистрирован:
01.05.2019 17:27 Из: Слободзея
Сообщений:
38
![]() |
Добрый день . Я написал программу для Attiny13 в CodeVisionAVR но она не совсем устраивает по этому прошу помощи у знающих людей . Нужно что бы при последующем нажатии на кнопку программа возвращалась в начало цикла .
Отправлено: 01.05.2019 17:38
|
|
Администратор
![]() ![]() Зарегистрирован:
07.08.2008 20:40 Из: Тирасполь
Сообщений:
7261
![]() |
Мне почему то кажется, что тебя не CodeVisionAVR не устраивает, а написанный тобою код (который ты называешь программой)
Отправлено: 01.05.2019 19:16
|
|
Главный Технолог
![]() ![]() Зарегистрирован:
14.04.2009 7:05 Из: Россия
Сообщений:
271
![]() |
Цитата:
Кнопка только одно действие выполняет или у неё ещё и другие функции имеются?
Отправлено: 01.05.2019 19:19
|
|
Модератор
![]() ![]() Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
![]() |
А почему не в Битву экстрасенсов написали? Там весьма знающие люди. Они по обрывкам фотографии находят людей.
Отправлено: 01.05.2019 19:50
|
|
Сотрудник
![]() ![]() Зарегистрирован:
01.05.2019 17:27 Из: Слободзея
Сообщений:
38
![]() |
Именно это я и имел в виду что меня не до конца устраивает код который я написал и называю это программой. Что касается битвы экстрасенсов не совсем понял . Может чувство юмора меня подводит. Кнопка выполняет одну функцию . По сути это сигнализатор поклёвки и вместо кнопки должен быть датчик вибрации SW18010P
Отправлено: 01.05.2019 20:09
Отредактировано пользователем Vic29 01.05.2019 20:31:35
|
|
Технический Директор
![]() ![]() Зарегистрирован:
08.02.2009 21:08 Из: Днестровск
Сообщений:
2445
![]() |
Сперва схему и код в студию, что было всем понятно, а то первое сообщение звучит в духе: "Я сделал чесалку для спины, но она меня не устраивает, нужно что бы при последующем чесании чесалка возвращалась в начало цикла. Чесалка выполняет одну функцию. По сути это палка и вместо чесалки должен быть скребок с зубчиками."
![]()
Отправлено: 01.05.2019 20:23
|
|
Сотрудник
![]() ![]() Зарегистрирован:
01.05.2019 17:27 Из: Слободзея
Сообщений:
38
![]() |
Вот только сообразил как загрузить код и схему ) Прошу сильно не пинать.
Отправлено: 01.05.2019 20:32
|
|
Модератор
![]() ![]() Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
![]() |
Что именно не устраивает в программе? Программа реализует следующее: если нажалась кнопка, будет запущен процесс перемигивания светодиодов. Пока этот процесс не закончился, на кнопку внимание не обращается. По окончании процесса перемигивания опять ждем нажатия кнопки.
Отправлено: 01.05.2019 21:55
|
|
Сотрудник
![]() ![]() Зарегистрирован:
01.05.2019 17:27 Из: Слободзея
Сообщений:
38
![]() |
Именно так . Как я говорил это сигнализатор поклёвки и получается что когда происходит поклёвка начинается цикл и если во время работы цикла произойдёт ещё одна поклёвка то останется незамеченной. Вот и хочется что бы при следующем смыкание контактов датчика вибрации цикл прервался и начался с начала. А как это реализовать не понимаю .
Отправлено: 01.05.2019 22:10
|
|
Модератор
![]() ![]() Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
![]() |
Теперь понятно. Необходимо использовать прерывание по заднему фронту на INT0. Необходимо завести глобальную переменную с модификатором volatile unsigned char flag=0;. В прерывании выставлять переменную в 1 вот так flag=1;. В основном цикле запускать перемигивание при этой переменной в 1. Причем сразу же обнулять эту переменную if (flag==1) {flag=0; перемигивание.......}
. А в процедуре перемигивания вставить кучу раз после каждого долгого события вот такую конструкцию if (flag==1) continue;
Отправлено: 01.05.2019 22:57
|
|