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

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

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

Сообщение edm2007 »

Пожалуйста. Так и мне полнейшая выгода. Покопаться-то интересно же. :) Вообще, ожидание отпускания кнопки появилось когда нужно было использовать выход из режима POWERDOWN. Просто, проснуться из него можно только по НИЗКОМУ уровню внешнего прерывания (LOW LEVEL). А оно генерируется ВСЕ ВРЕМЯ, пока нажата кнопка. И флаги сброшены ПОСТОЯННО. Так что тут только разрешать / запрещать. Вот и появилась такая защита от преднамеренного удержания кнопки. Просто, если кнопка удерживалась специально, то в момент разрешения прерывания оно тут же шло обрабатываться. Что было недопустимо. Ну и здесь тоже... Я не знаю кто и как решает такую проблему, но с такой проверкой за месяцы работы в разных устройствах небыло замечено вообще ни единого ложного срабатывания, дребезга, глюка и прочего...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
Аватара пользователя
saschai
Говорящий с текстолитом
Сообщения: 1596
Зарегистрирован: Вс дек 14, 2008 20:36:47
Откуда: SPb

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

Сообщение saschai »

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

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

Сообщение edm2007 »

Буду честен, почти ничего не понял. :)) Что именно тебя смущает? А для устройства нормально, что оно будет сбрасываться если кнопку передержали?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
saschai
Говорящий с текстолитом
Сообщения: 1596
Зарегистрирован: Вс дек 14, 2008 20:36:47
Откуда: SPb

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

Сообщение saschai »

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

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

Сообщение edm2007 »

А-а-а, в том смысле что сброс происходит до того как очистится флаг? :) Так вроде по вектору сброса все регистры в первоначальное состояние того... Ну кроме регистра статуса, разумеется... Я вот так посмотрел, уходит на прерывание программа после сброса только когда кнопка отпускается...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
Аватара пользователя
saschai
Говорящий с текстолитом
Сообщения: 1596
Зарегистрирован: Вс дек 14, 2008 20:36:47
Откуда: SPb

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

Сообщение saschai »

Так вроде по вектору сброса все регистры в первоначальное состояние того...

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

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

Сообщение edm2007 »

Так реле на пине висит? И что, при подаче питания оно включается? Разве что через p-n-p транзистор. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
saschai
Говорящий с текстолитом
Сообщения: 1596
Зарегистрирован: Вс дек 14, 2008 20:36:47
Откуда: SPb

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

Сообщение saschai »

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

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

Сообщение edm2007 »

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

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

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

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

Случилась такая ерунда: подключил LCD 16x2 к тиньке, все работает как надо. Но нужно мне, чтобы питанием экрана тоже тинька управляла. Добавил:

Portb.1=output
PORTB.1 = 1 ;подаем питание на LCD

что-то выводим на экран

Portb.1=0 ;снимаем питание с LCD

Powerdown ;баиньки

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

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

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

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

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

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

ВНН писал(а):Всмысле ты питаеш индикатор от ножки тиньки или управляеш питанием через ключ.


Питаю от ножки тиньки. Видел в каком-то проекте такую реализацию питания LCD 16x2 от порта тини2313, там все работало.
С уважением,
Алексей.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Тогда нужно самому инициализировать дисплей.
В твоем случае нужно сделать так:

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

PORTB.1 = 1 ' подаем питание на LCD
INITLCD     ' инициализация LCD
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Подскажите,коты, как выйти из подпрограммы. Замудрил так, что из подпрограммы нужно перейти на метку , примерно так:

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

Perehod:
  If Bu = 0 Then
   K = K + 1
     If K > 9 Then Goto Aa
   Waitms 500                                             
   If Bu = 0 Then Goto Aa
 Goto Budon(k)
 End If

Return

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

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

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

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

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

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

kip96 писал(а):Goto Budon(k)

Переход по элементу массива? BASCOM такое не умеет.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

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

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

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

kip96 писал(а):Нет, не массив. Баском схавает же как метку? Или в метке скобки нельзя ставить?

Скобки лучше нигде, кроме массивов, не использовать.

kip96 писал(а):Просто когда зашёл в подпрограмму и с неё ушёл на метку, то RETURN не произошёл, и получается я болтаюсь в подпрограмме?

Если есть GOSUB, обязательно в конце должен быть RETURN. Даже если подпрограмма использует переходы по GOTO. Например:

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

Gosub Podprogr
...
Podprogr:
If x=1 Then Goto M1
If y=2 Then Goto M2
Return

M1:
x=2
Return

M2:
y=3
Return

Кстати, экспериментальным путём обнаружил, что использование Return внутри If приводит к неработоспособности программы, например:

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

If x=1 Then Return 'Так не работает и вешает МК
If x=1 Then Goto Endp
Endp:
Return 'А так работает ОК
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

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

Сообщение Moto_v3x »

Возможно так будет работать:

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

If x=1 Then Exit Sub
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Всё понятно., вообщем не буду мудрить, буду переделывать.
Вот другой вопрос. Чисто из спортивного интереса, хочу выжать с тини2313 всё, поэтому такой код:

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

For I = 1 To 18
Chas(i) = 24
Next

для меня прожорлив.
Т.к. эта строчка работает только единожды, в начальных установках, думаю переменную забить сразу в НЕХ файле, сэкономив таким образом 3 % памяти. Как занести переменную в конкретный адресс, что-бы потом не искать её?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Ответить

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