Страница 63 из 304

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

Добавлено: Ср фев 16, 2011 14:52:18
edm2007
Пожалуйста. Так и мне полнейшая выгода. Покопаться-то интересно же. :) Вообще, ожидание отпускания кнопки появилось когда нужно было использовать выход из режима POWERDOWN. Просто, проснуться из него можно только по НИЗКОМУ уровню внешнего прерывания (LOW LEVEL). А оно генерируется ВСЕ ВРЕМЯ, пока нажата кнопка. И флаги сброшены ПОСТОЯННО. Так что тут только разрешать / запрещать. Вот и появилась такая защита от преднамеренного удержания кнопки. Просто, если кнопка удерживалась специально, то в момент разрешения прерывания оно тут же шло обрабатываться. Что было недопустимо. Ну и здесь тоже... Я не знаю кто и как решает такую проблему, но с такой проверкой за месяцы работы в разных устройствах небыло замечено вообще ни единого ложного срабатывания, дребезга, глюка и прочего...

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

Добавлено: Ср фев 16, 2011 15:56:53
saschai
Вот :)) , тогда, просто ради удовлетворения любопытства :)) , проверку собаччего таймера, организовал, по истечению времени в микроцикле удержания кнопки, те держим более 2 сек, перезагружаемся, но у меня кнопка, управляет комплексом ног, и основвная,реле, те при любых внештатныых ситуациях оно офф, тут же происходит ситуация, в зависимоссти от того в каком состоянии изнчально находился порт(в основной программе проверяется состояние порта, ну он офф одной кнопкой), то после перезагруузки, состояние будет обраатно предыдущему, поскольку сброс происходит до сброса флага, тоо все понятно, но удивляет, то, что сброс, по собаке таймеру, позиционируется, как сброс по питанию, те флаг должен быть сброшен, что на практике ни есть правда.
может для таких ситуаций до разрешения прерывания в начале программы ставить сброс флага?

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

Добавлено: Ср фев 16, 2011 16:17:35
edm2007
Буду честен, почти ничего не понял. :)) Что именно тебя смущает? А для устройства нормально, что оно будет сбрасываться если кнопку передержали?

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

Добавлено: Ср фев 16, 2011 16:31:15
saschai
Смущает :)) , что не сбрасывается флаг прерывания, после сброса МК, по собачему таймеру :))

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

Добавлено: Ср фев 16, 2011 18:26:45
edm2007
А-а-а, в том смысле что сброс происходит до того как очистится флаг? :) Так вроде по вектору сброса все регистры в первоначальное состояние того... Ну кроме регистра статуса, разумеется... Я вот так посмотрел, уходит на прерывание программа после сброса только когда кнопка отпускается...

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

Добавлено: Ср фев 16, 2011 19:03:33
saschai
Так вроде по вектору сброса все регистры в первоначальное состояние того...
По идеи так и должно быть, но на реальном железе нет, может уникальный контроллер попался?
Что и смутило, при вкл питания реле всегда офф, а тут фигушкки

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

Добавлено: Ср фев 16, 2011 19:12:03
edm2007
Так реле на пине висит? И что, при подаче питания оно включается? Разве что через p-n-p транзистор. :)

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

Добавлено: Ср фев 16, 2011 19:34:49
saschai
Ну вот растекся, я , речью по столу :)) сейчас соберусь и объясню.
Попробую сформулировать проще, при сбросе МК по сабачему таймеру у меня не обнуляется флаг прерывания, проверяю на готовом устройстве, которое после перезагрузки входит в запрещенные, после перезагрузки режим, вот :))
Все забей, сам я дурак, проверил, кнопка то нажата, и это уже новое событие,. после перезагрузки, убирать палец не успеваю :)), флаг сбрасывается

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

Добавлено: Ср фев 16, 2011 20:39:38
edm2007
Так у тебя же ПО СПАДУ прерывание? А значит, он должен быть. Если кнопка удерживается, значит спада не будет. Ее для этого надо отпустить и снова нажать. :)

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

Добавлено: Пт фев 18, 2011 12:12:26
Gordon Shumway
Доброго времени суток всем !

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

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

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

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

Powerdown ;баиньки

И экран начал выводить мусор вместо нормальной информации...
Если его запитать напрямую от +5в, то работает нормально.
Пробовал задержки всякие - не помогает.
Где копать ? Подскажите плиз...

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

Добавлено: Пт фев 18, 2011 13:31:25
ВНН
Всмысле ты питаеш индикатор от ножки тиньки или управляеш питанием через ключ.

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

Добавлено: Пт фев 18, 2011 13:36:18
Gordon Shumway
ВНН писал(а):Всмысле ты питаеш индикатор от ножки тиньки или управляеш питанием через ключ.
Питаю от ножки тиньки. Видел в каком-то проекте такую реализацию питания LCD 16x2 от порта тини2313, там все работало.

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

Добавлено: Пт фев 18, 2011 14:39:40
Мурик
Тогда нужно самому инициализировать дисплей.
В твоем случае нужно сделать так:

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

PORTB.1 = 1 ' подаем питание на LCD
INITLCD     ' инициализация LCD

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

Добавлено: Ср фев 23, 2011 09:46:19
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

Как корректно написать?

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

Добавлено: Ср фев 23, 2011 15:45:23
Мурик
kip96 писал(а):Как корректно написать?
По этому куску сложно что-то сказать.

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

Добавлено: Чт фев 24, 2011 14:32:14
Секретный кот
kip96 писал(а):Goto Budon(k)
Переход по элементу массива? BASCOM такое не умеет.

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

Добавлено: Чт фев 24, 2011 15:27:14
kip96
Нет, не массив. Баском схавает же как метку? Или в метке скобки нельзя ставить? :dont_know: (метка обзывается так исключительно для личного удобства)
Просто когда зашёл в подпрограмму и с неё ушёл на метку, то RETURN не произошёл, и получается я болтаюсь в подпрограмме? Вот глянул в асм ( я в нём пока ноль), вроде ни каких флагов там нет ,при перходе на подпрограмму :dont_know:
Вообщем вопрос - где я болтаюсь и как из этого вылезти :)) :o :o :)) !
Иначе, конечно, придётся переписывать всё :shock:

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

Добавлено: Чт фев 24, 2011 16:06:42
Секретный кот
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 'А так работает ОК

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

Добавлено: Чт фев 24, 2011 16:57:54
Moto_v3x
Возможно так будет работать:

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

If x=1 Then Exit Sub

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

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

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

For I = 1 To 18
Chas(i) = 24
Next
для меня прожорлив.
Т.к. эта строчка работает только единожды, в начальных установках, думаю переменную забить сразу в НЕХ файле, сэкономив таким образом 3 % памяти. Как занести переменную в конкретный адресс, что-бы потом не искать её?