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

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

Добавлено: Сб янв 28, 2012 14:44:54
mr4ester
все же вопрос по поводу регистрации максимальных и минимальных температур остается открытым, как положить в строковую переменную число? может это поможет?

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

Добавлено: Сб янв 28, 2012 14:47:55
edm2007
После того как отработали If Prin = 1 Then, сбрасывайте этот флаг. Иначе так и будете пулять без перерыва.

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

Добавлено: Сб янв 28, 2012 14:50:16
mr4ester
как раз проверил и это произошло как вы сказали, уже исправил :))

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

Добавлено: Сб янв 28, 2012 15:48:10
vanyap1
Вот тоже решил что надо в спальне отображать температуру мин и макс. Взялся за это дело, посмотрю и тут делают!
сделал вот так -

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

Dim Byte0 As Byte
Dim Byte1 As Byte
Dim Sign As String * 1
Dim T As Byte
Dim T1 As Byte
Dim T2 As Byte
Dim Count As Word
Dim Tmax As Byte
Dim Tmin As Byte
Erled = 0
Tmin = 99
Cursor Off
Cls

Do
Locate 1 , 1
Lcd "temp " ; Sign ; T1
Locate 2 , 1
Lcd "min " ; Tmin
Locate 2 , 8
Lcd "max " ; Tmax
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
Erled = 1
1wreset
1wwrite &HCC
1wwrite &HBE
Erled = 0
Byte0 = 1wread()
Byte1 = 1wread()
If Byte1 >= 248 Then
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Sign = "-"
Else
Sign = "+"
End If
T1 = Byte0 / 16
T2 = Byte1 * 16
T1 = T1 + T2
If T1 > Tmax Then
Tmax = T1
End If
If T1 < Tmin Then
Tmin = T1
End If
Loop
End
это так, чтобы отладить, а потом буду лепить к коду часов.
Все думал как это сделать, и решил поставить минимальную температуру 100 и максимальную 0 и по мере измерений убавлять до нужного минимальную и прибавлять максимальную.

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

Добавлено: Сб янв 28, 2012 16:43:44
edm2007
vanyap1:

1. Предположим что температура была +1. Затем она упала и стала равна 0. При этом условие If T1 < Tmin выполнится (так как 0 действительно меньше 1), и будет зафиксирована минимальная температура 0 градусов. Температура продолжает падать и становится равна -1. Проверяем условие If T1 < Tmin. 1 < 0 ? Нет конечно. А просто 1 потому как переменная-то беззнаковая. Значит так и оставим минимальную 0 градусов. И так же будет и при -2 и при -3... Меньше 0 ну никак не получится зафиксировать. :)

2. Температура была +10 градусов. А потом стала +9. А так как дисплей не очищался, то от прежнего значения останется ноль. И будет на индикаторе +90.

3. Вы забыли в максимальных и минимальных значениях про знак температуры.

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

Добавлено: Сб янв 28, 2012 16:50:51
vanyap1
Да, все понятно, ... но у меня в спальне не бывает минусовой температуры, затем и не пудрил себе моск этим. И второе - 90 не будет ибо заполнил пространство после знака пробелами, т.е. если 10 то так и будет 10, а если 9 то место ноля запишется пробел. Значит все нормально!

Вот проблема новая:
Решил ознакомится с rc5, так вот ничего не работает!

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

Dim Address As Long
Dim Command As Long


Config Pind.3 = Input
Config Rc5 = Pind.3
Enable Interrupts 

Do
Set Erled
Getrc5(address , Command)
Locate 1 , 1
Lcd Address
Locate 2 , 1
Lcd Command
Reset Erled
Waitms 150
Loop


Что я мог упустить!

Порт сконфигурирован на ввод, и подключен ИК приемник!
Но вот что заметил, если нажать кнопку на пульте, то светодиод на макетке начинаем медленнее мигать, но адрес на ЖКИ не выводит, в чем может быть трабл?

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

Добавлено: Сб янв 28, 2012 16:56:17
edm2007
vanyap1 писал(а):И второе - 90 не будет
В том коде который Вы предоставили, запросто будет и +90 и +80 и даже +70. :wink:

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

Добавлено: Сб янв 28, 2012 16:58:41
vanyap1
Ага, в новом уже исправил, тут просто забыл поменять!

Вот с пультом проблема, возможно из за отсутствия кварца неправильно считает импульсы с ИК приемника? Потому и отображает команду и адрес постоянно 255?

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

Добавлено: Сб янв 28, 2012 17:02:53
edm2007
А пульт точно RC5?

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

Добавлено: Сб янв 28, 2012 17:10:51
vanyap1
Уверен, ибо делал контроллер rgb светодиода с управлением пультом, так этот пульт работал.
МК реагирует на пульт, ибо светодиод замедляет мигание когда нажата кнопка! Светодиод в программе настроен включатся только во время считывания команды и отключаться.

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

Добавлено: Сб янв 28, 2012 17:47:54
edm2007
Куда Вам такие огромные переменные-то? Адрес занимает 5 бит а команда - 6. Вполне достаточно и типа Byte. Это весь код? Вообще с RC5 проблем небыло никогда. Если все верно подключено и подтянуто то работает стабильно.

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

Добавлено: Сб янв 28, 2012 18:20:02
vanyap1
Поменял приемник, 2 раза засветило адрес и команду и больше не хочет. Что то не так в коде, потому как в другом устройстве все подключено точно так же и работает.
Отключил внутренний генератор МК и поставил кварц на 12 мгц, припаял конденсатор у приемника.
Переменные мне показались странными, он мне отображает оба числа - 255, т.е. максимальное значение переменной типа байт, от и поставил побольше и что странно - те же 255.

Если я правильно понял, то пуль посылает команду, у МК срабатывает прерывание по которому принятая команда записывается в переменную и ожидает там чтения программой.

Программа по коду -

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

Getrc5(address , Command)  
читает эти данные и НЕ СБРАСЫВАЕТ? Или сбрасывает?
потом выводит на дисплей!

Все как бы понятно, но почему оно не работает? Может задержку из кода убрать к че.. ой бабушке!

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

Добавлено: Сб янв 28, 2012 18:40:23
mr4ester
вопрос остался открытым, помогите как положить в переменную типа String число?

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

Добавлено: Сб янв 28, 2012 20:58:39
vanyap1
Них...ра не работает пульт, все остальное - прерывания, таймеры, порт 232 ... все работает а пульт нет!
Все время 255...
Гдето чтото опустил! А что????

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

Config Pind.3 = Input
Config Rc5 = Pind.3
Config Int0 = Falling
On Int0 Encod
Enable Interrupts
Enable Int0
Cursor Off
Cls

...........
..............

5:
Cls
Do
Getrc5(address , Command)
Locate 1 , 1
Lcd Address ; "     "
Locate 2 , 1
Lcd Command ; "     "
If W = 5 Then
Else
Goto 0
End If
Loop

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

Добавлено: Сб янв 28, 2012 22:13:52
mr4ester
просто ради интереса открыл хелп там написано что этот протокол работает с таймером у вас я этого не увидел, может в этом собака зарыта?

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

'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.

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

Добавлено: Сб янв 28, 2012 22:19:49
edm2007
С таймером, да. Это просто значит что его нельзя использовать в своих корыстных целях, но специально настраивать его не нужно.

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

Добавлено: Сб янв 28, 2012 22:22:06
mr4ester
возможно, я не вникал просто нелп открыл в хэлпе его настраивали вот и сказал.

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

'This example shows how to decode RC5 remote control signals
'with a SFH506-35 IR receiver.

'Connect to input to PIND.2 for this example
'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
'The TIMER0 settings are restored however so only the interrupt can not
'be used anymore for other tasks


'tell the compiler which pin we want to use for the receiver input

Config Rc5 = Pind.2 , Wait = 2000
Config Timer1 = Timer , Prescale = 1

'the interrupt routine is inserted automatic but we need to make it occur
'so enable the interrupts
Enable Interrupts

'reserve space for variables
Dim Address As Byte , Command As Byte
Print "Waiting for RC5..."

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

Добавлено: Сб янв 28, 2012 22:28:42
mr4ester
как можно вывести в терминал знак градуса? как его нарисовать?

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

Добавлено: Сб янв 28, 2012 22:35:46
vanyap1
Все у меня как у хелпе.... кроме, нет резистора у входа на приемник и подтяжки 10 кОм на плюс питания. Но там же написано - "Опционально", уже сегодня не буду паять, завтра попробую.

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

Добавлено: Сб янв 28, 2012 22:42:43
mr4ester
разобрался я таки со строковыми переменными если кому интересно то для того чтоб положить число в строковую переменную его нужно взять в кавычки пример ниже

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

Dim Dm As String * 3
Dm = "150"
Tmin1 = Dm
Tmin2 = Dm