ну не в разы же? ставил - "wait 10" на внутреннем. получал на выходе секунд так 40-45. тинька13, внутренний 128кГц.Секретный кот писал(а):При правильном кварце – почему бы и нет? От внутреннего генератора сильно врёт, но это и неудивительно.ravilkh писал(а):она вообще правильно время отсчитывать может?
BASCOM AVR в вопросах и ответах
- Реклама
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Привет,напил прогу,компиляция и емуляция прошла какбы. Но на PROTEUS показывает 0 , нечитает DS18B20. Что тут плохо ?
$regfile = "2313def.dat"
$crystal = 4000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config 1wire = Portd.5
Config Portd.4 = Output
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim D As Byte
Dim I1 As Integer , S1 As String * 6 , S2 As String * 6
Dim I2 As Integer
Cursor Off
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Do
1wreset
1wwrite &H55
1wverify Dsid1(1)
1wwrite &HBE
I1 = 1wread(2)
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
I2 = 1wread(2)
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
I1 = I1 * 10
I1 = I1 / 16
If I1 > 0 Then Cls
S1 = Str(i1)
Locate 1 , 1
Lcd "B=" ; S1 ; "C"
I2 = I2 * 10
I2 = I2 / 16
If I2 > 0 Then Cls
S2 = Str(i2)
Locate 2 , 1
Lcd "K=" ; S2 ; "C"
'D = S1 - S2
'D = D + 5
'If D => 5 Then
'Portd.4 = 1
'Else
'Portd.4 = 0
'End If
Loop
End
$regfile = "2313def.dat"
$crystal = 4000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config 1wire = Portd.5
Config Portd.4 = Output
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim D As Byte
Dim I1 As Integer , S1 As String * 6 , S2 As String * 6
Dim I2 As Integer
Cursor Off
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Do
1wreset
1wwrite &H55
1wverify Dsid1(1)
1wwrite &HBE
I1 = 1wread(2)
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
I2 = 1wread(2)
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
I1 = I1 * 10
I1 = I1 / 16
If I1 > 0 Then Cls
S1 = Str(i1)
Locate 1 , 1
Lcd "B=" ; S1 ; "C"
I2 = I2 * 10
I2 = I2 / 16
If I2 > 0 Then Cls
S2 = Str(i2)
Locate 2 , 1
Lcd "K=" ; S2 ; "C"
'D = S1 - S2
'D = D + 5
'If D => 5 Then
'Portd.4 = 1
'Else
'Portd.4 = 0
'End If
Loop
End
- Реклама
-
kilgur
- Первый раз сказал Мяу!
- Сообщения: 30
- Зарегистрирован: Пт июн 05, 2009 19:55:11
- Откуда: Украина Кривой Рог
Не открывается "Обучалка BASCOM AVR" от WildCat http://avr.easycoding.org/bascom_lessons/index.htm .Помогите найти.
Входи с главной страницы сайта, avr.easycoding.orgkilgur писал(а):Не открывается "Обучалка BASCOM AVR" от WildCat http://avr.easycoding.org/bascom_lessons/index.htm .Помогите найти.
Мяу Всем!
Ну вот, вроде как в тему.
Написал прогу для DS18B20.
Что интересно, при сдвиге В0 вправо на 4 бита и В1 влево на 4 бита (по даташиту) наблюдалось удвоение показаний, т.е. вместо +18 С показывало +36 С, когда изменил на 5 и 3 все стало на свои места. В чем здесь засада?
И еще: как вывести десятичные доли градуса на индикатор (откуда их считывать?) и как вывести все это дело на 7-сегментные LED?
Кстати, применение конструкций Shift дает более компактный код по сравнению с применением обычных арифметических действий: / и *. Имейте ввиду! 
Ну вот, вроде как в тему.
Что интересно, при сдвиге В0 вправо на 4 бита и В1 влево на 4 бита (по даташиту) наблюдалось удвоение показаний, т.е. вместо +18 С показывало +36 С, когда изменил на 5 и 3 все стало на свои места. В чем здесь засада?
И еще: как вывести десятичные доли градуса на индикатор (откуда их считывать?) и как вывести все это дело на 7-сегментные LED?
Код: Выделить всё
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.1
Config 1wire = Portd.5
Dim B0 As Byte
Dim B1 As Byte
Dim T As Byte
Dim Sign As String * 1
Config Lcd = 16 * 1
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HC
1wwrite &HBE
B0 = 1wread()
B1 = 1wread()
1wreset
If B1 >= 248 Then
B0 = &HFF - B0
B1 = &HFF - B1
Sign = "-"
Else
Sign = "+"
End If
Shift B0 , Right , 5
Shift B1 , Left , 3
T = B0 + B1
Cls
Lcd Sign ; T ; "C"
Wait 2
Loop
EndЦапу крутить надо!!! Ку или не ку?
-
Radan
- Мучитель микросхем
- Сообщения: 465
- Зарегистрирован: Ср июн 21, 2006 08:24:32
- Откуда: Лисичанск
- Контактная информация:
КОНКУРС
Объявляется очередной(третий) ежегодный конкурс БАСКОМ-2010!
Более подробно о конкурсе:
http://bascomavr.3bb.ru/viewtopic.php?id=283
Организаторы конкурса обещают победителей наградить призами - лицензионным ПО БАСКОМ.
Все работы будут опубликованы на сайте http://bascom.at.ua/.
Лучшие работы войдут в коллекцию примеров на http://www.mcselec.com
Желаю удачи!
Более подробно о конкурсе:
http://bascomavr.3bb.ru/viewtopic.php?id=283
Организаторы конкурса обещают победителей наградить призами - лицензионным ПО БАСКОМ.
Все работы будут опубликованы на сайте http://bascom.at.ua/.
Лучшие работы войдут в коллекцию примеров на http://www.mcselec.com
Желаю удачи!
Вопрос знатокам.
Всем доброго времени суток!
Только начал осваивать AVR и Васик, в схемотехнике разбираюсь тоже на уровне радиокружка, поэтому заранее прошу тапками не кидать. критиковать - пожалуйста, особенно если конструктивно, с объяснениями
Собственно, встала задача - сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике. В качестве печки и одновременно в качестве охладителя используется элемент Пельтье - реле меняет полярность его подключения, соответственно, заставляя греть или остужать.
В целях компенсации инерции нагрева или охлаждения, в программе сделана вилка в 5 градусов между границами включения.
Использовал связку ATtiny 26 и LM35. Навороты в виде LCD и органов управления не контоллере не нужны, поэтому пороговые значения прошиты в программе.
Несмотря на убогость кода и схемы, в Протеусе всё работает
Вот схема и код.

http://slil.ru/28304751 (исходник и hex)
Теперь вопрос. Было крайне полезно организвать сбор данных от нескольких подобных контроллеров (по i2C) и возможность опять же, дистанционно перешивать пороговые величины включения печки/охлажения. Как это можно сделать?
Ну и поктитикуйте увиденное, если не лень.
Спасибо!

Только начал осваивать AVR и Васик, в схемотехнике разбираюсь тоже на уровне радиокружка, поэтому заранее прошу тапками не кидать. критиковать - пожалуйста, особенно если конструктивно, с объяснениями
Собственно, встала задача - сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике. В качестве печки и одновременно в качестве охладителя используется элемент Пельтье - реле меняет полярность его подключения, соответственно, заставляя греть или остужать.
В целях компенсации инерции нагрева или охлаждения, в программе сделана вилка в 5 градусов между границами включения.
Использовал связку ATtiny 26 и LM35. Навороты в виде LCD и органов управления не контоллере не нужны, поэтому пороговые значения прошиты в программе.
Несмотря на убогость кода и схемы, в Протеусе всё работает
Вот схема и код.

http://slil.ru/28304751 (исходник и hex)
Теперь вопрос. Было крайне полезно организвать сбор данных от нескольких подобных контроллеров (по i2C) и возможность опять же, дистанционно перешивать пороговые величины включения печки/охлажения. Как это можно сделать?
Ну и поктитикуйте увиденное, если не лень.
Спасибо!
- kkozyrev
- Открыл глаза
- Сообщения: 67
- Зарегистрирован: Пт дек 11, 2009 02:40:44
- Откуда: C-Петербург
- Контактная информация:
Re: Вопрос знатокам.
уж не инкубатор ли?fabrique писал(а):- сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике
не судите, я учусь -)


