Страница 148 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 14:20:59
осторожно! леоныч!!!
Да я давненько роюсь в примере. Переделал как хотел. Но когда выполняется подпрограмма нельзя отслеживать кнопку. Это не очень хорошо, но что нибудь попробую придумать. Может в подпрограмму дописать команду чтоб отслеживать светодиодом нажата она или нет? Эх... Опыту мало

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 14:55:56
edm2007
Повесьте кнопку на внешнее прерывание. Делов-то.

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 14:57:57
осторожно! леоныч!!!
Но тогда индикация будет сбрасываться

Ведь я применил в программе ваш пример

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 15:09:41
edm2007
Это почему же? Прерывание таймера - это одно. А прерывание кнопки - совершенно другое. И вместе они запросто уживутся.

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 15:23:58
осторожно! леоныч!!!
Сейчас попробую
Пока не вьехал в стройку как это сделать
Почитаю еще литературы немного

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 15:50:59
осторожно! леоныч!!!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 16:19:02
edm2007
Нормальное явление, не переживайте.

Давайте начнем с того, что именно вас не устраивает в имеющемся варианте?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 16:59:33
осторожно! леоныч!!!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 20:34:03
Gordon Shumway
Доброго времени суток !
Тоже решил впрячься в решение задачи.
осторожно! леоныч!!!, а что конкретно сейчас не устраивает ?
edm2007 предложил рабочее решение, только что попробовал.
edm2007, виртуозно написано !

Я пока так не умею...
Можно прокомментировать поподробнее ?
Код: Выделить всё
Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 ' отсчет 3-х секунд
Ocr1a = &HB71B
On Oc1a 3sec
Enable Interrupts ' разрешаем прерывание
Enable Oc1a
Я не понял, как тут отсчитывается 3 секунды ?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн окт 08, 2012 20:51:12
Секретный кот
Gordon Shumway писал(а):Код: Выделить всё
Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 ' отсчет 3-х секунд
Ocr1a = &HB71B
On Oc1a 3sec
Я не понял, как тут отсчитывается 3 секунды ?
Таймер 1 тактируется сигналом с частотой F0/256=15625 Гц. Чтобы получить задержку 3 с, нам необходимо пропустить 3*15625=46875 периодов этого сигнала. Что в шестнадцатеричном выражении равно &hB71B. Это значение и записывается в регистр сравнения таймера, по достижению которого сработает прерывание.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 04:36:54
осторожно! леоныч!!!
осторожно! леоныч!!!, а что конкретно сейчас не устраивает ?
edm2007 предложил рабочее решение, только что попробовал.
edm2007, виртуозно написано !

Я пока так не умею...
Можно прокомментировать поподробнее ?
Да все меня устраивает. Код замечательный, не спорю. Я этот пример использовал в своей программе для мк. Дополнил еще очень много чем. Как я уже писал, я не программист, это моя вторая работа.
Просто я не мог вчера придумать как в ходе работы предложенного кода отслеживать нажатие кнопки и индицировать его отдельным светодиодом в реальном времени. В остальном все отлично.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 06:13:54
edm2007
Gordon Shumway писал(а):Я не понял, как тут отсчитывается 3 секунды ?
Я же выше расписывал подробно.
Секретный кот, спасибо.

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 08:02:12
осторожно! леоныч!!!
Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......
Нашел довольно не плохой список команд с описанием
http://www.cqham.ru/bascom.htm
Может как и мне кому нибудь пригодиться.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 08:41:44
Gordon Shumway
осторожно! леоныч!!! писал(а):Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......
Вы про индикацию нажатий кнопок ? В каком виде она вам нужна - отдельным светодиодом, или как-то существующие светодиоды должны отреагировать помимо их основной работы ?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 08:46:00
edm2007
осторожно! леоныч!!! писал(а):Вот зараза. Не получается.
Вы нормально скажите, что нужно-то? Сформулируйте задание. А то
осторожно! леоныч!!! писал(а):Дополнил еще очень много чем.
А чем именно - непонято. О нажатии кнопки должен сигнализировать светодиод? И как? Пока нажата кнопка, или что?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 09:40:25
осторожно! леоныч!!!
Поясню проще) Считаем что ваш пример без изменений, надо просто индицировать нажатие кнопки. Кнопка нажата - отдельный светодиод горит, отпущена - не горит. При это функция счета 3 светодиодов должна оставаться. Я пробовал перенести подпрограмму в основной цикл, думал так получится. Но так и не разобрался

Компилятор обматерил меня как мог

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 10:24:24
amv2000
осторожно! леоныч!!! писал(а): Считаем что ваш пример без изменений, надо просто индицировать нажатие кнопки. Кнопка нажата - отдельный светодиод горит, отпущена - не горит.
А если включить в обработку прерывания такой код
Код: Выделить всё
3leds: ' подпрограмма обработки нажатия кнопки
if Button = 0 then
Set Led_4 ' здесь ваш отдельный светодиод, не забыть в начале присвоить его к порту например: Led_4 Alias Portb.4
Else
Reset Led_4
Timer1 = 0 ' обнуляем таймер отсчета 3-х секунд
Incr Count
If Count > 3 Then Count = 3
If Count = 1 Then
Set Red_led
Elseif Count = 2 Then
Set Yellow_led
Elseif Count = 3 Then
Set Green_led
End If
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 10:39:13
осторожно! леоныч!!!
Очень интересно amv2000

Сам бы точно не допёр

Да еще второй день зуб болит,башка вообще почти не варит. Сейчас попробую

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 10:51:56
осторожно! леоныч!!!
label not found (endif0) Вот так снова меня обматерил компилятор
Даже после успешной компиляции с одной строкой If Button = 0 Then Set Leda (просто зажечь светодиод) "leda" - так он прописан, он не загорается...
Только сейчас вспомнил что вроде вчера так пробовал только без присвоения имен, просто порт прописывал.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт окт 09, 2012 11:06:22
amv2000
осторожно! леоныч!!! писал(а):label not found (endif0) Вот так снова меня обматерил компилятор
Ну да еще один End If внизу допишите
Код: Выделить всё
Elseif Count = 3 Then
Set Green_led
End If
End if
или так
Код: Выделить всё
if Button = 0 then
Set Led_4 ' здесь ваш отдельный светодиод, не забыть в начале присвоить его к порту например: Led_4 Alias Portb.4
Else
Reset Led_4
End if
А если поменять подключение светодиода, чтобы загорался когда на ножке 0, код еще меньше получается.
Код: Выделить всё
if Button = 0 then : Set Led_4 = Button : End if