BASCOM AVR в вопросах и ответах
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Пожалуйста. Так и мне полнейшая выгода. Покопаться-то интересно же.
Вообще, ожидание отпускания кнопки появилось когда нужно было использовать выход из режима POWERDOWN. Просто, проснуться из него можно только по НИЗКОМУ уровню внешнего прерывания (LOW LEVEL). А оно генерируется ВСЕ ВРЕМЯ, пока нажата кнопка. И флаги сброшены ПОСТОЯННО. Так что тут только разрешать / запрещать. Вот и появилась такая защита от преднамеренного удержания кнопки. Просто, если кнопка удерживалась специально, то в момент разрешения прерывания оно тут же шло обрабатываться. Что было недопустимо. Ну и здесь тоже... Я не знаю кто и как решает такую проблему, но с такой проверкой за месяцы работы в разных устройствах небыло замечено вообще ни единого ложного срабатывания, дребезга, глюка и прочего...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- saschai
- Говорящий с текстолитом
- Сообщения: 1596
- Зарегистрирован: Вс дек 14, 2008 20:36:47
- Откуда: SPb
Re: BASCOM AVR в вопросах и ответах
Вот
, тогда, просто ради удовлетворения любопытства
, проверку собаччего таймера, организовал, по истечению времени в микроцикле удержания кнопки, те держим более 2 сек, перезагружаемся, но у меня кнопка, управляет комплексом ног, и основвная,реле, те при любых внештатныых ситуациях оно офф, тут же происходит ситуация, в зависимоссти от того в каком состоянии изнчально находился порт(в основной программе проверяется состояние порта, ну он офф одной кнопкой), то после перезагруузки, состояние будет обраатно предыдущему, поскольку сброс происходит до сброса флага, тоо все понятно, но удивляет, то, что сброс, по собаке таймеру, позиционируется, как сброс по питанию, те флаг должен быть сброшен, что на практике ни есть правда.
может для таких ситуаций до разрешения прерывания в начале программы ставить сброс флага?
может для таких ситуаций до разрешения прерывания в начале программы ставить сброс флага?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Буду честен, почти ничего не понял.
Что именно тебя смущает? А для устройства нормально, что оно будет сбрасываться если кнопку передержали?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- saschai
- Говорящий с текстолитом
- Сообщения: 1596
- Зарегистрирован: Вс дек 14, 2008 20:36:47
- Откуда: SPb
Re: BASCOM AVR в вопросах и ответах
Смущает
, что не сбрасывается флаг прерывания, после сброса МК, по собачему таймеру 
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
А-а-а, в том смысле что сброс происходит до того как очистится флаг?
Так вроде по вектору сброса все регистры в первоначальное состояние того... Ну кроме регистра статуса, разумеется... Я вот так посмотрел, уходит на прерывание программа после сброса только когда кнопка отпускается...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- saschai
- Говорящий с текстолитом
- Сообщения: 1596
- Зарегистрирован: Вс дек 14, 2008 20:36:47
- Откуда: SPb
Re: BASCOM AVR в вопросах и ответах
Так вроде по вектору сброса все регистры в первоначальное состояние того...
По идеи так и должно быть, но на реальном железе нет, может уникальный контроллер попался?
Что и смутило, при вкл питания реле всегда офф, а тут фигушкки
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так реле на пине висит? И что, при подаче питания оно включается? Разве что через p-n-p транзистор. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- saschai
- Говорящий с текстолитом
- Сообщения: 1596
- Зарегистрирован: Вс дек 14, 2008 20:36:47
- Откуда: SPb
Re: BASCOM AVR в вопросах и ответах
Ну вот растекся, я , речью по столу
сейчас соберусь и объясню.
Попробую сформулировать проще, при сбросе МК по сабачему таймеру у меня не обнуляется флаг прерывания, проверяю на готовом устройстве, которое после перезагрузки входит в запрещенные, после перезагрузки режим, вот
Все забей, сам я дурак, проверил, кнопка то нажата, и это уже новое событие,. после перезагрузки, убирать палец не успеваю
, флаг сбрасывается
Попробую сформулировать проще, при сбросе МК по сабачему таймеру у меня не обнуляется флаг прерывания, проверяю на готовом устройстве, которое после перезагрузки входит в запрещенные, после перезагрузки режим, вот
Все забей, сам я дурак, проверил, кнопка то нажата, и это уже новое событие,. после перезагрузки, убирать палец не успеваю
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так у тебя же ПО СПАДУ прерывание? А значит, он должен быть. Если кнопка удерживается, значит спада не будет. Ее для этого надо отпустить и снова нажать. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Доброго времени суток всем !
Случилась такая ерунда: подключил LCD 16x2 к тиньке, все работает как надо. Но нужно мне, чтобы питанием экрана тоже тинька управляла. Добавил:
Portb.1=output
PORTB.1 = 1 ;подаем питание на LCD
что-то выводим на экран
Portb.1=0 ;снимаем питание с LCD
Powerdown ;баиньки
И экран начал выводить мусор вместо нормальной информации...
Если его запитать напрямую от +5в, то работает нормально.
Пробовал задержки всякие - не помогает.
Где копать ? Подскажите плиз...
Случилась такая ерунда: подключил 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 в вопросах и ответах
ВНН писал(а):Всмысле ты питаеш индикатор от ножки тиньки или управляеш питанием через ключ.
Питаю от ножки тиньки. Видел в каком-то проекте такую реализацию питания LCD 16x2 от порта тини2313, там все работало.
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Тогда нужно самому инициализировать дисплей.
В твоем случае нужно сделать так:
В твоем случае нужно сделать так:
Код: Выделить всё
PORTB.1 = 1 ' подаем питание на LCD
INITLCD ' инициализация LCD- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Подскажите,коты, как выйти из подпрограммы. Замудрил так, что из подпрограммы нужно перейти на метку , примерно так:
Как корректно написать?
Код: Выделить всё
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Как корректно написать?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
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 в вопросах и ответах
Нет, не массив. Баском схавает же как метку? Или в метке скобки нельзя ставить?
(метка обзывается так исключительно для личного удобства)
Просто когда зашёл в подпрограмму и с неё ушёл на метку, то RETURN не произошёл, и получается я болтаюсь в подпрограмме? Вот глянул в асм ( я в нём пока ноль), вроде ни каких флагов там нет ,при перходе на подпрограмму
Вообщем вопрос - где я болтаюсь и как из этого вылезти
!
Иначе, конечно, придётся переписывать всё
(метка обзывается так исключительно для личного удобства)Просто когда зашёл в подпрограмму и с неё ушёл на метку, то RETURN не произошёл, и получается я болтаюсь в подпрограмме? Вот глянул в асм ( я в нём пока ноль), вроде ни каких флагов там нет ,при перходе на подпрограмму
Вообщем вопрос - где я болтаюсь и как из этого вылезти
Иначе, конечно, придётся переписывать всё
Все делают ошибки, только мудрецы - новые, а дураки - старые.
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 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 в вопросах и ответах
Возможно так будет работать:
Код: Выделить всё
If x=1 Then Exit Sub- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Всё понятно., вообщем не буду мудрить, буду переделывать.
Вот другой вопрос. Чисто из спортивного интереса, хочу выжать с тини2313 всё, поэтому такой код:
для меня прожорлив.
Т.к. эта строчка работает только единожды, в начальных установках, думаю переменную забить сразу в НЕХ файле, сэкономив таким образом 3 % памяти. Как занести переменную в конкретный адресс, что-бы потом не искать её?
Вот другой вопрос. Чисто из спортивного интереса, хочу выжать с тини2313 всё, поэтому такой код:
Код: Выделить всё
For I = 1 To 18
Chas(i) = 24
Nextдля меня прожорлив.
Т.к. эта строчка работает только единожды, в начальных установках, думаю переменную забить сразу в НЕХ файле, сэкономив таким образом 3 % памяти. Как занести переменную в конкретный адресс, что-бы потом не искать её?
Все делают ошибки, только мудрецы - новые, а дураки - старые.