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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
free_chemist
Родился
Сообщения: 17
Зарегистрирован: Пт янв 14, 2011 20:32:57
Откуда: Краснодар

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

Сообщение free_chemist »

А как насчет такого способа, по debounce переходим на ветвь, и там например так:

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

rout:
waitms 300                           'перед первым автоматическим повышением
While Kn = 1
Incr I                                   'счетчик числа прибавлений

If I<10 then                         'первые 10 увеличений переменной будут идти с шагом единица
Incr R
else
R=R+10                               'дальнейшее увеличение пойдет с шагом в 10
end if

Waitms 250
Wend


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

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

Сообщение edm2007 »

Угу. С автоповтором я уже давно разобрался. :) Здесь сначала про увеличение скорости спрашивал (если кнопка удерживается долго)... Ну да там так же можно, только величину задержки менять. А сейчас про выход в основной режим идет речь, если кнопки долго не нажимались... Ну да это так... В копилку. :))
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

edm2007 писал(а):Если честно, то пока не совсем.

Так вроде-же я пример выложил.
На словах-
По прерыванию таймера, переменная В, уменьшается каждую секунду. В цикле програмсмы проверяется условие В<5 и если оно верно выходим из цикла и переходим на метку АА.
Получается что при входе в цикл В=10 и через 5 сек. мы из цикла выйдем. Но если мы нажмём кнопку, то в подпрограмме на котрую перейдём сделаем В=10 и при возврате опять будет отсчёт пяти сек.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

А насчёт увеличения скорости наверное проще так:

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

If Kn = 0 Then
If I < 10 Then Waitms 100
If I < 20 Then Waitms 100
Waitms 100
Incr I
 - - - - - - - - -
 - - - - - - - - -
else I=0
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

kip96 писал(а):На словах...


Вот теперь разобрался, спасибо.

kip96 писал(а):А насчёт увеличения скорости наверное проще так...


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

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

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

Gordon Shumway писал(а):
aleksandr-zh писал(а):конечно не выйдет, Вы же таймерне выключили и не высвободили этот вывод ...


То есть нужно так :
For Zze = 1 To I
Dtmfout Dig(zze) , 150
Waitms 150
Next Zze

Disable timer1

Portb.3 = 0


?

Он у меня в начале программы не назначен Config portb.3 = output...


Спасибо, сработало, но почему-то не всегда. Иногда остается в 1 и не могу понять почему... :(
С уважением,
Алексей.
user2007
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

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

Сообщение user2007 »

Мурик писал(а):
user2007 писал(а):Читайте внимательнее инструкции - уже 7 лет так делаю.
Всмысле, 7 лет делаете ошибки в коде?
Читать нужно из PinX, а не из PortX!
user2007 писал(а):Почитайте, как radan познакомился с Марком
При чем тут радан?

1)Все сказали?Скомпилируйте
A=portb или A=portb.0
Получилось что-нибудь? :shock:.BASCOM-AVR убирает ТАКИЕ ошибки, поэтому наизусть все помнить не нужно, господин Зубрилкин!
2)RADAN и Alexander zh - друзья. RADAN долго пиратствовал в плане BASCOM-AVR, но затем стал примерным отличником, исправив ошибки(см.форум RADAN'а об этом).Я тоже ЗДЕСЬ признал и исправил ошибку,на которую мне всегда и прежде всего указывает BASCOM(см.выше). А на следущее - запомните ЭТО:"У кого нет греха, пусть первый бросит {в меня} камень"(Ев. от Иоанна)
Но, сдается мне, вам и Alexander zh роднее "Око за око, зуб за зуб"(отгадайте, откуда ЭТО).
:))
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

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

Доброго времени суток, уважаемые Bascom-профи !

Я опять с очередным глупым вопросом. :shock:

Задача была такая - после подачи питания контроллер уходит в Powerdown до наступления события на int0. После наступления события пробуждаемся, делаем что нужно и опять спать.

Config Int0 = Low Level

On Int0 Pusk

Enable Interrupts
Enable Int0

Powerdown

Pusk:

Что-то очень важное

return


А получается зацикленная программа - после первого просыпания она по кругу делает "что-то очень важное". Видимо после Return она идет выполнять то, что после Powerdown.

Как ее заставить работать по заданному сценарию ?
С уважением,
Алексей.
Аватара пользователя
ВНН
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

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

Сообщение ВНН »

Config Int0 = Low Level
On Int0 Pusk

111:
Enable Interrupts
Enable Int0
Powerdown
Goto 111

Pusk:
Disable Interrupts
Disable Int0

Что-то очень важное

return
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

В твоей проге, после Powerdown программа попадает прямиком в подпрограмму прерываний и хз, куда потом возвращается по return.
Нужно не допустить этого!

Попробуй так:

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

Config Int0 = Low Level

On Int0 Pusk

Enable Interrupts
Enable Int0

Do
   Powerdown
Loop
End

Pusk:

'Что-то очень важное

return
Последний раз редактировалось Мурик Ср янв 19, 2011 17:08:16, всего редактировалось 1 раз.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

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

ВНН писал(а):Config Int0 = Low Level
On Int0 Pusk

111:
Enable Interrupts
Enable Int0
Powerdown
Goto 111

Pusk:
Disable Interrupts
Disable Int0

Что-то очень важное

return


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

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

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

Мурик писал(а):В твоей проге, после Powerdown программа попадает прямиком в подпрограмму прерываний

А почему она собственно вообще куда-то попадает после Powerdown? Не должна ли она при выполнении этой команды "заснуть"?
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Секретный кот писал(а):А почему она собственно вообще куда-то попадает после Powerdown? Не должна ли она при выполнении этой команды "заснуть"?
А что выполняется после пробуждения по внешнему прерыванию? Правильно, следующая команда.
А что там находится? Обработчик прерывания!
И куда программа вернется по return?
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

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

Мурик писал(а):
Секретный кот писал(а):А почему она собственно вообще куда-то попадает после Powerdown? Не должна ли она при выполнении этой команды "заснуть"?
А что выполняется после пробуждения по внешнему прерыванию? Правильно, следующая команда.

А, после пробуждения, дошло. Т.е. powerdown отрабатывается корректно.
Я-то почему-то понял так, что программа циклится вместо засыпания.

Мурик писал(а):А что там находится? Обработчик прерывания!
И куда программа вернется по return?

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

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

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

Доброго времени суток, уважаемые Bascom-коты !

Спасибо за помощь ! C Powerdown разобрался, с остальными премудростями вроде тоже !
Все заработало ! Пора писАть статейку Радиокоту, ибо девайс получился хороший, хоть и узко специализированный ! :)

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

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

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

Gordon Shumway писал(а):Пора писАть статейку Радиокоту, ибо девайс получился хороший, хоть и узко специализированный ! :)

Пишите, полюбопытствую с удовольствием 8)
Я тут на днях на ваши грабли наступил с занятием линии после DTMFOUT, вот уж не думал, что есть такой врождённый косяк у баскома. Получается, если юзаем DTMFOUT, то Portd.5 теряем, если не принять специальных мер.
Сейчас пытаюсь сделать анализ вызова на тел. линии, упёрся в аппаратную часть. Хочется, чтобы работало в широком диапазоне звонковых напряжений и не глючило. Видимо, придётся оптрон лепить.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

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

Секретный кот писал(а):
Gordon Shumway писал(а):Пора писАть статейку Радиокоту, ибо девайс получился хороший, хоть и узко специализированный ! :)

Пишите, полюбопытствую с удовольствием 8)
Я тут на днях на ваши грабли наступил с занятием линии после DTMFOUT, вот уж не думал, что есть такой врождённый косяк у баскома. Получается, если юзаем DTMFOUT, то Portd.5 теряем, если не принять специальных мер.
Сейчас пытаюсь сделать анализ вызова на тел. линии, упёрся в аппаратную часть. Хочется, чтобы работало в широком диапазоне звонковых напряжений и не глючило. Видимо, придётся оптрон лепить.


Я решил проблему по другому - поставил отдельную микруху-dtmf кодер IL91531. Работает ! :)
С уважением,
Алексей.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

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

Gordon Shumway писал(а):Я решил проблему по другому - поставил отдельную микруху-dtmf кодер IL91531. Работает ! :)

ИМХО это зря, т.к. надо пользоваться прелестью Баскома – наличием команды DTMFOUT (которую кстати можно ещё много чему "научить" при желании, например посылку АОН слать в линию :)) ). Да и ног контроллера придётся много занять для ВЖ19, даже если шину данных объединять с ВЖ18.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

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

Секретный кот писал(а):Я тут на днях на ваши грабли наступил с занятием линии после DTMFOUT, вот уж не думал, что есть такой врождённый косяк у баскома. Получается, если юзаем DTMFOUT, то Portd.5 теряем, если не принять специальных мер.
Сейчас пытаюсь сделать анализ вызова на тел. линии, упёрся в аппаратную часть. Хочется, чтобы работало в широком диапазоне звонковых напряжений и не глючило. Видимо, придётся оптрон лепить.

Вы как-нибудь решили проблему с занятием линии ? Я ставил разделительный конденсатор, чтобы транзистор не был открыт постоянно, но через него вообще не пищит... Можно увидеть ваш выходной каскад DTMF ?

Линий на Tiny2313 мне как раз хватило на обе ВЖ. Но глупо не использовать встроенный DTMF, тут я с вами согласен. У меня получился полностью рабочий девайс, но до момента появления 1 на порту, которая появляется по непонятной логике.
С уважением,
Алексей.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

Секретный кот писал(а):... команды DTMFOUT (которую кстати можно ещё много чему "научить" при желании, например посылку АОН слать в линию ...

??
это как? как вы изменили генерируемые шишом частоты?
вочень-вочень интересно :)
Ответить

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