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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

pavel1979 писал(а):вот это и не могу сообразить,а variable постоянно должен изменяться если ручка резистора не в среднем положении,то есть чуть повернул ручку и убрал руку с ручки,variable меняется с шагом пропорциональным повороту ручки,повернули ручку сильнее и отпустили руку-variable меняется быстрее,повернули ручку в среднее положение-variable не меняется,ручки с небольшой фиксацией в середине,используется в автомагнитолах старых на "балансе"

Повторюсь... Вижу только 2 выхода:
1. Разбить значение АЦП на 2 части и измерить время пребывания в каждой части, затем увеличивать степ от времени пребывания в этом диапазоне ЦАП
Пример: крутанули ручку вправо и не важно насколько, идет инкремент переменной с шагом 5, параллельно идет отсчет времени, если засиделись "тут" надолго, то другая переменная увеличивает степ в 2 раза);
или
2. Разбить значение АЦП не на 4, а на 5 или 10 частей и присваивать каждому значению (пределу) АЦП свой степ инкрементирования/декрементирования.
В таком случае не нужно подсчитывать время нахождения в данном пределе (значении ЦАП).

pavel1979 писал(а):...
использовать в данном случае энкодер не удобно-variable должен меняться от0 до 65535 с шагом 1,долго крутить :love:

С энкодерами не работал.
Можно как-то умножить значение, как-то выставить множитель "поворота" ручки, чтобы долго не крутить
Кстати, можно попробовать многооборотный потенциометр :)
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

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

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

Сообщение kip96 »

В Баскоме, любые порты можно на и2с назначить.
Идея с резистором понравилась. Я бы ещё доработал бы его, что бы на "0"(центр) возвращался сам.
Програмно вообще сделал бы так-
нужно изменять переменную А
измеряем ацп, х=512-ацп, a=а+х. Шаг можно уменьшить, если 512 много, делением на 10 например., тогда максимальный шаг будет 5, или делить на 5-макс. шаг=10.Ну и т. д.
Код существенно сократится, и плавность шага можно регулировать вплоть до 512-ти шагов.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

в том то и дело что надо как-то корректно контролировать угол поворота ручки,тогда и проще,и дешевле :twisted:

никак не получается и2с,вот пример управление с пульта NEC для атмега8 работает,а эта же упрощенная-переделанная с тини2313 не хочет,порты sda=d.5,scl=d.4
Спойлер'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 8000000 '?????????? ?????????
Config Lcdpin = Pin , Rs = Portb.2 , E = Portb.3 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.1 , Db7 = Portb.0
'*****************************настройка пульта**************************************************
Config Pind.2 = Input 'вход с пульта
'Config Portc.2 = Output
Config Timer0 = Timer , Prescale = 256 '8000000/256=31250 Hz
Config Int0 = Falling '
Stop Timer0 '
Enable Timer0 '
Enable Int0 '
Enable Interrupts '

On Timer0 Tikers '?????? ?? ???????
On Int0 Infrared '?????? ?? ??????????

Dim Tik As Word '??????? ????? ???????
Dim Byt As Byte '??????? ???????? ???
Dim Repeat_flag As Bit '???? ???????
Dim Start_flag As Bit '???? ?????????? ???????
Dim Address As Byte '???? ??????
Dim Command As Byte '???? ???????
Dim Address_1 As Byte '?????? ???? ??????
Dim Command_1 As Byte '?????? ???? ???????
Dim Address_0 As Byte '????????? ???? ??????
Dim Command_0 As Byte '????????? ???? ???????
Dim Summa As Word
'*****************************настройка перемнных и портов**************************************************
Config Portd = Input ' подтяжки
Config Sda = Portc.4 '???????????? ?????? I2c
Config Scl = Portc.5
Config I2cdelay = 10
Config Watchdog = 2048
Dim F As Long ' частота
Dim X As Byte 'объявление переменной для for-to
Dim Fh As Integer 'ШАГ
Dim Ch As Byte 'объявление переменных .канал номер
Dim Chkopi As Byte 'объявление переменных .канал номер
Dim K As Long ' коэф деления
Dim Kkopi As Long ' коэф деления копия
Dim Ka As Long ' коэф деления
Dim Kb As Long ' коэф деления
Dim Pam(32) As Eram Long 'ПАМЯТЬ КАНАЛОВ 32 ШТУК,мне доступно 1-30 каналы,32-дежурная для запоминания частоты при вкл-выкл приемника
'Dim Fkopi As Long ' частота копия
Dim Band As Byte 'диапазон
'Dim Pst As String * 6
Mem Alias Pind.4
Ex Alias Pind.5
Plus Alias Pind.6
Minus Alias Pind.7
'*****************************константы**************************************************
Const K0 = 3770 'определение констант частота пч
Const Kmin = 1514 'определение констант минимальный делитель 38 мгц
Const Kmax = 17754 'определение констант максимальный делитель 170 мгц
Const__gainoff Alias &B10001000
Const__gainon Alias &B10001001 ' Weak Signal Booster On
Const__loband Alias &B00000001
Const__miband Alias &B00000010
Const__hiband Alias &B00001100





'*****************************подпрограммы**************************************************
Declare Sub Knopki
Declare Sub Hag
Declare Sub Tuner
Declare Sub Vpamjat
Declare Sub Vvod
Declare Sub Pamjat
'********************************настройка при включении***********************************************
Pam(32) = 2776
K = Pam(32) 'дежурная частота
Ch = 0
Pam(1) = 2660
Pam(2) = 2720
Pam(3) = 2734
Pam(4) = 2746
Pam(5) = 2758
Pam(6) = 2766
Pam(7) = 2776
Pam(8) = 2804
Pam(9) = 2886
Pam(10) = 2896
Call Tuner
Locate 1 , 1
Lcd "M-45-RC5"
Waitms 500
For X = 1 To 8
Locate 1 , X
Lcd " "
Waitms 100
Next X


'********************************основная программа***********************************************
Cls
Cursor Off
Do
'???????? ????
Label1:
Start Watchdog
Chkopi = Ch
If Command = 98 Then Ch = 1
If Command = 34 Then Ch = 2
If Command = 64 Then Ch = 3
If Command = 162 Then Ch = 4
If Command = 224 Then Ch = 5
If Command = 96 Then Ch = 6
If Command = 210 Then Ch = 7
If Command = 82 Then Ch = 8
If Command = 160 Then Ch = 9
If Command = 18 Then Ch = 10
If Command = 80 Then Call Vpamjat

If Command = 208 Then
Label2:
If Command = 0 Then Ch = Ch + 1 Else Goto Label2
End If
If Command = 50 Then
Label3:
If Command = 0 Then Ch = Ch - 1 Else Goto Label3
End If
If Command = 144 Then
K = K + 1
Ch = 30
Pam(ch) = K
Call Tuner
End If
If Command = 242 Then
K = K - 1
Ch = 30
Pam(32) = K
Pam(ch) = K
Call Tuner
End If


Reset Watchdog
'If Command = 249 Then
'Stop Watchdog
If Command = 66 Then
Stop Watchdog
Cls
Wait 1
Idle

End If
If Chkopi <> Ch Then Call Pamjat 'Else Goto Label1 '???????? ???
If Command = 178 Then
Call Vvod
Ka = K
F = F + 3770
K = F / 5
Ch = 30
Pam(32) = K
Pam(30) = K
Call Tuner
Wait 1
End If
'????????? ??????
F = K * 5
F = F - 3770

Locate 1 , 1
Lcd F ; " "
Locate 1 , 7
Lcd Ch ; " "
Locate 2 , 1
Lcd Command ; " " '??????? ?? ??? ????? ? ????????
If Command = 8 Then Portc.2 = 1 '???? ?????? ??????? "P+" - ???????? ?????????
If Command = 240 Then Portc.2 = 0 '???? ?????? ??????? "P-" - ????????? ?????????
Waitms 25
Kkopi = K '???????? 10 ??
Loop
End '????? ????????? ?????

'********************************таймер 1***********************************************

Tikers: '?????? ?? ???????

Timer0 = 253 '31250/(256-253)=10416,66 Hz (96 ???)
'254 - TV SAMSUNG, 253 - DVD SAMSUNG ? ?????? NEC
Incr Tik
If Tik >= 1200 Then '???? ????????? 1200 ?????, ???????? ??? ? ???????? ?????????
Tik = 0
Repeat_flag = 0
Start_flag = 0
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
Command = 0
Address = 0
Stop Timer0 '????????????? ??????
End If

Return
'**********************************обработка пульта*********************************************

Infrared: '?????? ?? ??????????

Start Timer0 '????????? ??????

If Tik >= 139 And Tik < 150 Then '???? ????????? ?? 139 ?? 150 ????? - "?????"
Address = 1
Repeat_flag = 0
Start_flag = 1
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
End If

If Tik >= 116 And Tik < 139 Then '???? ????????? ?? 116 ?? 138 ????? - "??????"
Address = 2
Repeat_flag = 1
Start_flag = 0
End If

If Tik >= 22 And Tik < 116 And Start_flag = 1 Then '???? ????????? ?? 22 ?? 115 ????? - ??????? "1"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
Address_1 = Address_1 + 1
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
Address_0 = Address_0 + 1
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
Command_1 = Command_1 + 1
End If

If Byt >= 25 Then
Shift Command_0 , Left
Command_0 = Command_0 + 1
End If
End If

If Tik >= 10 And Tik < 22 And Start_flag = 1 Then '???? ????????? ?? 10 ?? 21 ???? - ??????? "0"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
End If

If Byt >= 25 Then
Shift Command_0 , Left
End If
End If

Tik = 0

If Byt = 32 Then '???? ??????? 4 ?????, ????????? ???????????? ?????? ???????
'???? ????? ??? ??????? 16-??????, ???????? ?? ????????, ??????? ????????????????
'Summa = Address_0 + Address_1
'If Summa = 255 Then
Address = Address_1
'Else
'Address = 0
'End If

'Summa = Command_0 + Command_1
'If Summa = 255 Then
Command = Command_1
'Else
'Command = 0
'End If
Byt = 0
Repeat_flag = 0
Start_flag = 0
Stop Timer0 '????????????? ??????
End If
'Waitms 100
Return
'****************************передача по и2с***************************************************
'------вот тот кусок который и отвечает за и2с,никак в тини2313 не заработает,проверяю в железе-----------
Sub Tuner
Band = Const__loband
If K > 3664 Then Band = Const__miband
If K > 9554 Then Band = Const__hiband
'Frcvwork = 98300 '
Ka = K / 256
Kkopi = Ka * 256
Kb = K - Kkopi
I2cstart
I2cwbyte &B11000000 'Tuner Address
I2cwbyte Ka
I2cwbyte Kb
I2cwbyte Const__gainon ' Const__gainon : Const__gainoff);
I2cwbyte Band
I2cstop
End Sub

'****************************вызов из памяти***************************************************
Sub Pamjat
If Ch > 30 Then Ch = 1
If Ch < 1 Then Ch = 30
K = Pam(ch)
If K < Kmin Then
K = Kmax
Pam(ch) = K
End If
If K > Kmax Then
K = Kmin
Pam(ch) = K
End If
Call Tuner

Goto Label1

End Sub
'Lcd Chr() ; Chr() ; Chr() ; Chr() ; Chr() ; Chr() ; Chr();
'*****************************запись в память**************************************************
Sub Vpamjat

Cls
Locate 1 , 1
Lcd "M-E-H-U!"
Waitms 300
Do
Reset Watchdog
'Start Watchdog
Locate 1 , 1
Lcd "F=" ; F ; " "
Locate 2 , 1
Lcd "CH=" ; Ch ; " "
' If Command = 208 Then
'Label2:
'If Command = 208 Then
' Waitms 10
' Label6:
If Command = 208 Then
Ch = Ch + 1
Command = 0
Waitms 200
End If
'If Command = 50 Then
'Label3:
'If Command = 50 Then
' Waitms 10
'Label7:
If Command = 50 Then
Ch = Ch - 1 'Else Goto Label7
Command = 0
Waitms 200
End If
If Command = 144 Then
Command = 0
K = K + 1
'Ch = 30
Pam(32) = K
' Call Tuner
Waitms 75
End If
If Command = 242 Then
Command = 0
K = K - 1
'Ch = 30
Pam(32) = K
'
'
Waitms 75
End If
If Ch > 30 Then Ch = 30
If Ch < 1 Then Ch = 1
If K > Kmax Then K = Kmin
If K < Kmin Then K = Kmax
F = K * 5
F = F - 3770
Call Tuner
If Command = 178 Then
Waitms 100
If Command = 178 Then
Pam(ch) = K
Cls
Locate 1 , 1
Lcd "coxp OK!" ; " "
Locate 2 , 1
Lcd F ; "=>" ; Ch ; " "
Wait 1

'Until Command = 0
End If
End If
If Command = 114 Then
Waitms 100
If Command = 114 Then
Cls
Locate 1 , 1
Lcd "OTMEHA!!"
Wait 1
Cls
Goto Label1
End If
End If
'Stop Watchdog
Reset Watchdog
'If Command <> 0 Then Goto Label4
Loop

End Sub
'*****************************ввод частоты **************************************************
Sub Vvod
Cls

F = 0
Locate 1 , 1
Lcd "F=" ; F ; " "
For K = 1 To 5

Label4:

X = 0
If Command = 98 Then X = 1
If Command = 34 Then X = 2
If Command = 64 Then X = 3
If Command = 162 Then X = 4
If Command = 224 Then X = 5
If Command = 96 Then X = 6
If Command = 210 Then X = 7
If Command = 82 Then X = 8
If Command = 160 Then X = 9
If Command = 18 Then X = 10
Reset Watchdog
If X = 0 Then Goto Label4
If K = 1 And X <> 10 Then
F = X
Locate 1 , 1
Lcd "F=" ; F ; "____ "
End If
If K = 1 And X = 10 Then
F = 0
Locate 1 , 1
Lcd "F=" ; F ; "____ "
End If
If K = 2 And X <> 10 Then
F = F * 10
F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 2 And X = 10 Then
F = F * 10
'F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 3 And X <> 10 Then
F = F * 10
F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 3 And X = 10 Then
F = F * 10
'F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 4 And X <> 10 Then
F = F * 10
F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 4 And X = 10 Then
F = F * 10
'F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 5 And X <> 10 Then
F = F * 10
F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
If K = 5 And X = 10 Then
F = F * 10
'F = F + X
Locate 1 , 1
Lcd "F=" ; F ; " "
End If
Label5:
Waitms 75
If Command > 0 Then Goto Label5
Next K
If F < 3800 Then F = 3800
If F > 85000 Then F = 85000
Locate 1 , 1
Lcd "F=" ; F ; " "
Locate 2 , 1
Lcd "--OK!-- "
End Sub
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

ну и само железо"
Изображение
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

ну и сам проект тини2313-управление по и2с,частота задана в упор 101,1 мгц,что может быть не так?sda и scl переключил на B.5 и B.7 соответственно
Спойлер$regfile = "attiny2313a.dat" 'íàñòðîéêè
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Lcdpin = Pin , Rs = Portd.6 , E = Portb.0 , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4
Config Sda = Portb.5 'êîíôèãóðàöèÿ ïîðòîâ I2c
Config Scl = Portb.7
Config I2cdelay = 10 'òàêòîâàÿ ÷àñòîòà I2c=100 ÊÃö
set Portb.5
set Portb.7
Cls
Cursor Off
Do
Locate 1 , 1
Lcd "101,10 mh"
I2cstart
I2cwbyte &B11000000 'Tuner Address
I2cwbyte 10
I2cwbyte 216
I2cwbyte &B10001000
I2cwbyte &B00000001
I2cstop

Wait 1
Loop
End 'end program


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

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

Сообщение kip96 »

pavel1979, понравилась твоя идея с резистором. Вот накидал код

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

  $regfile = "m8def.dat"
$crystal = 8000000
'Wait 3
$hwstack = 40
$swstack = 60
$framesize = 40

Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.2 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'конфигурация АЦП
Dim A As Long
Dim X As Long
Dim W As Word
Dim Times As Word
Cursor Off Noblink
Do


W = Getadc(3)
If W > 542 Then Incr A
If W < 478 Then Decr A
X = 512 - W
'W = X
X = Abs(x)
Times = X
Times = 600 - Times

Cls
Lcd A
Waitms Times
Loop

End

Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Товарищи, помогите округлить число в баском. Выдает такое 4,56535341 а хотелось бы оставить только 4,6. Каким оператором это сделать?
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

kip96 вау,спасибо!а все никак не мог понять-как это изменять время!!! попробую
Dnepr_1186
x=4,56535341
x=x*10
x=int(x)
x=x/10
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Dnepr_1186 писал(а):Каким оператором это сделать?

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

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

Сообщение kip96 »

Для pavel1979

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

Times = X
Times = 600 - Times

заменил на

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

Times = X*3
Times = 1540 - Times

стало по приятней. Ну, я думаю, смысл понял, там под себя можно подстроить.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Adagumer писал(а):
Dnepr_1186 писал(а):Каким оператором это сделать?

Оператор FUSING
В хелпе описано хорошо.

да делал я этим оператором по хелпу, выдает в итоге вместо нужного числа 0,0.
вот код

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

Dim Any As Single      
Dim Ccc As String * 4   
.....
Any = Chvar_3 / 6.0176
 Any = Fusing(any , "#.#")                             
 Ccc = Str(any)
  Ccc = Ccc + "V  "

Посмотрите, может что не так? Вывожу потом на экран нокия 3310
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Может так лучше будет
Ссс = Fusing(any , "#.#")
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Спасибо, заработало!
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

pavel1979 писал(а):kip96 вау,спасибо!а все никак не мог понять-как это изменять время!!! попробую
Dnepr_1186
x=4,56535341
x=x*10
x=int(x)
x=x/10

спасибо, оригинальный способ
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

pavel1979, вот видел, получилось
А вы переживали :)
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

KOTик писал(а):pavel1979А вы переживали :)

да уж,теперь новые проблемы-решил задействовать часы на PCF8583,часы-мин-сек я извлек без проьлем,а вот дату-год-день недели какая-то абра-кадабра получается,пример http://www.pomorska-sola.si/elektro/Izdelki/Ura_PCF8583/Delovni%20list%20URA%20PCF8583.htm
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

уважаемые коты!
Как реализовать двойное нажатие?
    - нажал на кнопку - лед не горит.
    - если нажал еще раз в теч. эНННго времени (например, повторное нажатие в теч. 3 сек.) - то загорелась.
    - если в теч. 3сек. повторного нажатия не было, обнуляем счетчик и выходим из обработчика. Ждем следующего первого нажатия и т.д.
Пытался сделать примитивней через Waitms - работает, но не то :(
А вот так, че-то не пашет

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

...
Debounce PINB.4 , 1, Double_click, Sub
....
Double_click:
Waitms 50
If Pinb.4 = 1 Then
Waitms 50
For Wtime = 0 To 3
Incr Wtime
If Wtime = 3 Then       'время ожидания второго нажатия
'Waitms 50
Led = 1         'включили
Else
Led = 0         'выключили
Wtime = 0                       'если в теч. 3сек. повторного нажатия не было, обнуляем
Next
End If
End If
Gifr = 64
Waitms 50
Return
....

Скажите, где что не так.
Может у кого примерчик с комментариями имеется - для разбора самое то.
Буду признателен :beer:
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Переменная Wtime увеличивается, но ничем не управляет. Или не весь код.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

vem566 писал(а):Переменная Wtime увеличивается, но ничем не управляет. Или не весь код.

Код обработки весь.
А точнее можно? :)
Ответить

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