BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Да я давненько роюсь в примере. Переделал как хотел. Но когда выполняется подпрограмма нельзя отслеживать кнопку. Это не очень хорошо, но что нибудь попробую придумать. Может в подпрограмму дописать команду чтоб отслеживать светодиодом нажата она или нет? Эх... Опыту мало :(
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Повесьте кнопку на внешнее прерывание. Делов-то. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Но тогда индикация будет сбрасываться :oops: Ведь я применил в программе ваш пример :)
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Это почему же? Прерывание таймера - это одно. А прерывание кнопки - совершенно другое. И вместе они запросто уживутся. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
Эиком - электронные компоненты и радиодетали
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Сейчас попробую :)))

Пока не вьехал в стройку как это сделать :oops:
Почитаю еще литературы немного :facepalm:
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Мозги уже кипят :))) :))) :)))

По нажатию кнопки происходит переход сразу в подпрограмму. Это понятно из вашего примера.
Далее работает подпрограмма. Весь основной цикл опрашивается кнопка и все. Что то дописывать (даже простейшее ) туда бесполезно , программа отрабатывает сразу переход в подпрограмму. Что то я совсем отупел уже :))) :))) :))) Не могу уже придумать ничего :facepalm:
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Нормальное явление, не переживайте. :)) Давайте начнем с того, что именно вас не устраивает в имеющемся варианте?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Устраивает всё :) Но проблема в том что помимо переключения светодиодов и отключения через 3 сек надо еще индицировать нажатие кнопки в реальном времени отдельным светодиодом. Но в основном цикле у меня это сделать как я понимаю уже не получится. В остальном все получается очень даже хорошо :))

Да и как тут не переживать? Столько усилий прикладываешь чтоб создать элементарное, даже стыдно :oops: :oops: :oops:
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

Доброго времени суток !

Тоже решил впрячься в решение задачи.

осторожно! леоныч!!!, а что конкретно сейчас не устраивает ? edm2007 предложил рабочее решение, только что попробовал.

edm2007, виртуозно написано ! :) Я пока так не умею...

Можно прокомментировать поподробнее ?

Код: Выделить всё

Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1    ' отсчет 3-х секунд
Ocr1a = &HB71B
On Oc1a 3sec

Enable Interrupts                                           ' разрешаем прерывание
Enable Oc1a
Я не понял, как тут отсчитывается 3 секунды ?
С уважением,
Алексей.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Секретный кот »

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. Это значение и записывается в регистр сравнения таймера, по достижению которого сработает прерывание.
Даже остановленные часы два раза в сутки показывают правильное время.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

осторожно! леоныч!!!, а что конкретно сейчас не устраивает ? edm2007 предложил рабочее решение, только что попробовал.

edm2007, виртуозно написано ! :) Я пока так не умею...

Можно прокомментировать поподробнее ?


Да все меня устраивает. Код замечательный, не спорю. Я этот пример использовал в своей программе для мк. Дополнил еще очень много чем. Как я уже писал, я не программист, это моя вторая работа.

Просто я не мог вчера придумать как в ходе работы предложенного кода отслеживать нажатие кнопки и индицировать его отдельным светодиодом в реальном времени. В остальном все отлично.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Gordon Shumway писал(а):Я не понял, как тут отсчитывается 3 секунды ?
Я же выше расписывал подробно. :)

Секретный кот, спасибо. :beer:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......

Нашел довольно не плохой список команд с описанием http://www.cqham.ru/bascom.htm
Может как и мне кому нибудь пригодиться.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

осторожно! леоныч!!! писал(а):Вот зараза. Не получается. Хоть еще один порт задействуй. Глупо как то......
Вы про индикацию нажатий кнопок ? В каком виде она вам нужна - отдельным светодиодом, или как-то существующие светодиоды должны отреагировать помимо их основной работы ?
С уважением,
Алексей.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

осторожно! леоныч!!! писал(а):Вот зараза. Не получается.
Вы нормально скажите, что нужно-то? Сформулируйте задание. А то
осторожно! леоныч!!! писал(а):Дополнил еще очень много чем.
А чем именно - непонято. О нажатии кнопки должен сигнализировать светодиод? И как? Пока нажата кнопка, или что?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Поясню проще) Считаем что ваш пример без изменений, надо просто индицировать нажатие кнопки. Кнопка нажата - отдельный светодиод горит, отпущена - не горит. При это функция счета 3 светодиодов должна оставаться. Я пробовал перенести подпрограмму в основной цикл, думал так получится. Но так и не разобрался :oops: Компилятор обматерил меня как мог :facepalm: :)
Аватара пользователя
amv2000
Опытный кот
Сообщения: 724
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение 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
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

Очень интересно amv2000 :) Сам бы точно не допёр :( Да еще второй день зуб болит,башка вообще почти не варит. Сейчас попробую :beer:
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: BASCOM AVR в вопросах и ответах

Сообщение осторожно! леоныч!!! »

label not found (endif0) Вот так снова меня обматерил компилятор :shock:

Даже после успешной компиляции с одной строкой If Button = 0 Then Set Leda (просто зажечь светодиод) "leda" - так он прописан, он не загорается...

Только сейчас вспомнил что вроде вчера так пробовал только без присвоения имен, просто порт прописывал.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 724
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение 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
Последний раз редактировалось amv2000 Вт окт 09, 2012 11:22:48, всего редактировалось 2 раза.
Ответить

Вернуться в «AVR»