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

Обсуждаем контроллеры компании Atmel.
ravilkh
Родился
Сообщения: 14
Зарегистрирован: Вс сен 27, 2009 14:21:54

Сообщение ravilkh »

Секретный кот писал(а):
ravilkh писал(а):она вообще правильно время отсчитывать может?

При правильном кварце – почему бы и нет? От внутреннего генератора сильно врёт, но это и неудивительно.

ну не в разы же? ставил - "wait 10" на внутреннем. получал на выходе секунд так 40-45. тинька13, внутренний 128кГц.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Сообщение Секретный кот »

У меня на 8 МГц вместо 1 минуты получалось где-то секунд 40.
Даже остановленные часы два раза в сутки показывают правильное время.
Daliusbag
Родился
Сообщения: 12
Зарегистрирован: Сб ноя 07, 2009 17:41:33

Сообщение 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
Аватара пользователя
Mihaell
Родился
Сообщения: 10
Зарегистрирован: Чт май 08, 2008 19:32:08

Сообщение Mihaell »

вот что нужно:

Датчик один? Если да, то:

много не того, ждать нужно перед считыванием данных с датчика и кода не те
Daliusbag
Родился
Сообщения: 12
Зарегистрирован: Сб ноя 07, 2009 17:41:33

Сообщение Daliusbag »

Два датчика .
Аватара пользователя
Mihaell
Родился
Сообщения: 10
Зарегистрирован: Чт май 08, 2008 19:32:08

Сообщение Mihaell »

Тут отличный пример с 2-мя :)
http://bascomavr.3bb.ru/viewtopic.php?id=169
kilgur
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пт июн 05, 2009 19:55:11
Откуда: Украина Кривой Рог

Сообщение kilgur »

Не открывается "Обучалка BASCOM AVR" от WildCat http://avr.easycoding.org/bascom_lessons/index.htm .Помогите найти.
Аватара пользователя
Mihaell
Родился
Сообщения: 10
Зарегистрирован: Чт май 08, 2008 19:32:08

Сообщение Mihaell »

kilgur писал(а):Не открывается "Обучалка BASCOM AVR" от WildCat http://avr.easycoding.org/bascom_lessons/index.htm .Помогите найти.

Входи с главной страницы сайта, avr.easycoding.org
kilgur
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пт июн 05, 2009 19:55:11
Откуда: Украина Кривой Рог

Сообщение kilgur »

Пробовал ,но пишет "Internet Explorer не может отобразить эту веб-страницу"

Всё заработало. Спасибо Mihael.
Аватара пользователя
Mihaell
Родился
Сообщения: 10
Зарегистрирован: Чт май 08, 2008 19:32:08

Сообщение Mihaell »

kilgur не за что :)
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение 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 дает более компактный код по сравнению с применением обычных арифметических действий: / и *. Имейте ввиду! :tea:
Цапу крутить надо!!! Ку или не ку?
Daliusbag
Родился
Сообщения: 12
Зарегистрирован: Сб ноя 07, 2009 17:41:33

Сообщение Daliusbag »

Попробовал пример,работает.Но если ATtiny2313 меняю на AT90S2313 неработает. А нельзяли такойже компактный код на два датчика :)) а то зациклился.
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Это вы применительно к чему?
Цапу крутить надо!!! Ку или не ку?
Daliusbag
Родился
Сообщения: 12
Зарегистрирован: Сб ноя 07, 2009 17:41:33

Сообщение Daliusbag »

Во первых если меняю в PROTEUS ATtiny2313 на AT90 s2313 симуляция неработает. Т.е. lcd показывает нолъ. И даже на ATtiny2313 немогу заставитъ работатъ два датчика.
Аватара пользователя
Деня
Открыл глаза
Сообщения: 43
Зарегистрирован: Вс дек 07, 2008 00:45:10
Откуда: Задворки родины

Сообщение Деня »

Попробуй такую программку.
Вложения
18B20 2шт.rar
(798 байт) 314 скачиваний
Daliusbag
Родился
Сообщения: 12
Зарегистрирован: Сб ноя 07, 2009 17:41:33

Сообщение Daliusbag »

На Proteus не работает.
Вложения
aaaaaaaaaaaaa.rar
(9.01 КБ) 229 скачиваний
Radan
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск
Контактная информация:

КОНКУРС

Сообщение Radan »

Объявляется очередной(третий) ежегодный конкурс БАСКОМ-2010!
Более подробно о конкурсе:
http://bascomavr.3bb.ru/viewtopic.php?id=283

Организаторы конкурса обещают победителей наградить призами - лицензионным ПО БАСКОМ.
Все работы будут опубликованы на сайте http://bascom.at.ua/.
Лучшие работы войдут в коллекцию примеров на http://www.mcselec.com

Желаю удачи!
fabrique
Родился
Сообщения: 3
Зарегистрирован: Пн дек 07, 2009 01:08:27

Вопрос знатокам.

Сообщение fabrique »

Всем доброго времени суток!
Только начал осваивать AVR и Васик, в схемотехнике разбираюсь тоже на уровне радиокружка, поэтому заранее прошу тапками не кидать. критиковать - пожалуйста, особенно если конструктивно, с объяснениями :)

Собственно, встала задача - сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике. В качестве печки и одновременно в качестве охладителя используется элемент Пельтье - реле меняет полярность его подключения, соответственно, заставляя греть или остужать.
В целях компенсации инерции нагрева или охлаждения, в программе сделана вилка в 5 градусов между границами включения.

Использовал связку ATtiny 26 и LM35. Навороты в виде LCD и органов управления не контоллере не нужны, поэтому пороговые значения прошиты в программе.

Несмотря на убогость кода и схемы, в Протеусе всё работает :)

Вот схема и код.
Изображение

http://slil.ru/28304751 (исходник и hex)


Теперь вопрос. Было крайне полезно организвать сбор данных от нескольких подобных контроллеров (по i2C) и возможность опять же, дистанционно перешивать пороговые величины включения печки/охлажения. Как это можно сделать?

Ну и поктитикуйте увиденное, если не лень.
Спасибо!

:shock:
Аватара пользователя
Деня
Открыл глаза
Сообщения: 43
Зарегистрирован: Вс дек 07, 2008 00:45:10
Откуда: Задворки родины

Сообщение Деня »

Менять пороговые величины можно если прописать их в еепроме,
а организация i2c есть в хелпе.
Аватара пользователя
kkozyrev
Открыл глаза
Сообщения: 67
Зарегистрирован: Пт дек 11, 2009 02:40:44
Откуда: C-Петербург
Контактная информация:

Re: Вопрос знатокам.

Сообщение kkozyrev »

fabrique писал(а):- сделать термоконтроллер
который помогал бы выдерживать определенную температуру в небольшом ящике


уж не инкубатор ли?
не судите, я учусь -)
Ответить

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