Страница 21 из 304
Добавлено: Пт окт 30, 2009 15:28:40
ravilkh
Секретный кот писал(а):ravilkh писал(а):она вообще правильно время отсчитывать может?
При правильном кварце – почему бы и нет? От внутреннего генератора сильно врёт, но это и неудивительно.
ну не в разы же? ставил - "wait 10" на внутреннем. получал на выходе секунд так 40-45. тинька13, внутренний 128кГц.
Добавлено: Пт окт 30, 2009 20:28:24
Секретный кот
У меня на 8 МГц вместо 1 минуты получалось где-то секунд 40.
Добавлено: Сб ноя 07, 2009 18:25:13
Daliusbag
Привет,напил прогу,компиляция и емуляция прошла какбы. Но на 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
Добавлено: Чт ноя 12, 2009 23:51:54
Mihaell
вот что нужно:
Датчик один? Если да, то:
много не того, ждать нужно перед считыванием данных с датчика и кода не те
Добавлено: Пт ноя 13, 2009 19:56:54
Daliusbag
Два датчика .
Добавлено: Пт ноя 13, 2009 21:11:27
Mihaell
Добавлено: Пт ноя 20, 2009 05:40:43
kilgur
Не открывается "Обучалка BASCOM AVR" от WildCat
http://avr.easycoding.org/bascom_lessons/index.htm .Помогите найти.
Добавлено: Пт ноя 20, 2009 19:28:45
Mihaell
Входи с главной страницы сайта, avr.easycoding.org
Добавлено: Пт ноя 20, 2009 22:22:44
kilgur
Пробовал ,но пишет "Internet Explorer не может отобразить эту веб-страницу"
Всё заработало. Спасибо Mihael.
Добавлено: Сб ноя 21, 2009 02:05:26
Mihaell
kilgur не за что

Добавлено: Пн ноя 23, 2009 14:16:21
Igor_67
Мяу Всем!
Ну вот, вроде как в тему.

Написал прогу для DS18B20.
Что интересно, при сдвиге В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
Кстати, применение конструкций
Shift дает более компактный код по сравнению с применением обычных арифметических действий:
/ и
*. Имейте ввиду!

Добавлено: Пт ноя 27, 2009 17:02:50
Daliusbag
Попробовал пример,работает.Но если ATtiny2313 меняю на AT90S2313 неработает. А нельзяли такойже компактный код на два датчика

а то зациклился.
Добавлено: Пт ноя 27, 2009 17:08:44
Igor_67
Это вы применительно к чему?
Добавлено: Сб ноя 28, 2009 20:41:53
Daliusbag
Во первых если меняю в PROTEUS ATtiny2313 на AT90 s2313 симуляция неработает. Т.е. lcd показывает нолъ. И даже на ATtiny2313 немогу заставитъ работатъ два датчика.
Добавлено: Пн ноя 30, 2009 23:06:19
Деня
Попробуй такую программку.
Добавлено: Чт дек 03, 2009 21:08:31
Daliusbag
На Proteus не работает.
КОНКУРС
Добавлено: Пт дек 04, 2009 09:16:54
Radan
Объявляется очередной(третий) ежегодный конкурс БАСКОМ-2010!
Более подробно о конкурсе:
http://bascomavr.3bb.ru/viewtopic.php?id=283
Организаторы конкурса обещают победителей наградить призами - лицензионным ПО БАСКОМ.
Все работы будут опубликованы на сайте
http://bascom.at.ua/.
Лучшие работы войдут в коллекцию примеров на
http://www.mcselec.com
Желаю удачи!
Вопрос знатокам.
Добавлено: Пн дек 07, 2009 01:32:16
fabrique
Всем доброго времени суток!
Только начал осваивать AVR и Васик, в схемотехнике разбираюсь тоже на уровне радиокружка, поэтому заранее прошу тапками не кидать. критиковать - пожалуйста, особенно если конструктивно, с объяснениями
Собственно, встала задача - сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике. В качестве печки и одновременно в качестве охладителя используется элемент Пельтье - реле меняет полярность его подключения, соответственно, заставляя греть или остужать.
В целях компенсации инерции нагрева или охлаждения, в программе сделана вилка в 5 градусов между границами включения.
Использовал связку ATtiny 26 и LM35. Навороты в виде LCD и органов управления не контоллере не нужны, поэтому пороговые значения прошиты в программе.
Несмотря на убогость кода и схемы, в Протеусе всё работает
Вот схема и код.
http://slil.ru/28304751 (исходник и hex)
Теперь вопрос. Было крайне полезно организвать сбор данных от нескольких подобных контроллеров (по i2C) и возможность опять же, дистанционно перешивать пороговые величины включения печки/охлажения. Как это можно сделать?
Ну и поктитикуйте увиденное, если не лень.
Спасибо!

Добавлено: Вт дек 08, 2009 07:04:06
Деня
Менять пороговые величины можно если прописать их в еепроме,
а организация i2c есть в хелпе.
Re: Вопрос знатокам.
Добавлено: Пт дек 11, 2009 02:50:29
kkozyrev
fabrique писал(а):- сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике
уж не инкубатор ли?