atmega16 problem z DS18B20 BASCOM
kobi - 07 Mar 2009 00:16
Witam
Mam problem z tym czujnikiem. Poprostu brak jakiejkolwiek odpowiedzi z jego strony.
Obecnie zapuscilem mu taki kod i na ekranie 0 stopni pokazuje.
Wczesniej zapuszczalem mu proste programy w celu odczytu rejestrow czujnika i nic Tak jak by czujnika nie bylo Juz nie wiem o co chodzi? Myslalem ze czujnik walniety ale po podlaczeniu drugiego to samo.
Moze trzeba jakos skonfigurować kompilator(BASCOM-AVR)? Uzywam troche nie standarowego kwarcu ale to chyba nic do tego?
Czujnik jest podlaczony standardowo czyli GND do masy zasilanie do +5 i pindanych do procka.
$regfile = "m16def.dat"
$crystal = 14745600
$lib "glcdKS108.lbx"
Config Porta = Output
Config 1wire = Portc.1
Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 3 , Ce2 = 4 , Cd = 7 , Rd = 6 , Reset = 2 , Enable = 5
Setfont Font8x8
Dim Odczyt(2) As Byte
Dim A As Byte
Dim Licznik As Byte
Dim T As Integer
Dim T1 As Single
Cls
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Odczyt(1) = 1wread(2)
T = Odczyt(2)
Shift T , Left , 8
T = T + Odczyt(1)
T1 = T / 16
T1 = T / 2
Lcdat 2 , 1 , "temp=" ; T1 ; "oC"
Loop
End
$include "font8x8.font"
Proszę używać znaczników [code] - uzupełniłem.
[zumek]
atom1477 - 07 Mar 2009 00:38
Takie coś:
T = 1wread(2)
też zadziała.
Może Twoja wersja nie działa. Nie wiadomo co BASCOM z tym zrobił.
A tak w ogóle to spróbuj wyświetlić samo T. Wtedy będzie wiadomo czy to wina komunikacji z czujnikiem czy przeliczania wartości.
kobi - 07 Mar 2009 00:57
Dobra dziala okazalo sie ze uP korzysta z oscylatora wewnetrznego i wpisanie $crystal = 10000000
zamiast $crystal = 14745600 pomoglo Ale teraz pytanie. Gdzies w fusebitach mozna przestawic ze by kozystal z zewnetrznego zegara?
zumek - 07 Mar 2009 11:08
Temat fusebitów i nie działających DS18B20, omawiano już w tym dziale wielokrotnie i nie widzę potrzeby, by robić to ponownie.
Regulamin p.14