www.elektronik.si
DS18B20 v bascom avr
Pojdi na stran Prejšnja  1, 2  :||:
www.elektronik.si -> Osnove programiranja AVR-jev

Avtor: MadMax PrispevekObjavljeno: Sre Maj 01, 2013 8:55 am    Naslov sporočila:  
----------------------------------------------------------------------------
No, nekaj si se naučil.
1. maso moraš imeti vedno skupno, pa še je pri razmetanih vezjih lahko problem. V bistvu si imel srečo, na ta način bi komot uničil mego.
2. minipin je enostavna, čeprav ima butasto "obratno" logiko za LEDice na njej. Ampak se navadiš.

Avtor: HeBirdKraj: Domžale PrispevekObjavljeno: Čet Apr 03, 2014 6:12 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Rad bi prebral bite iz nastavitvenega registra z Ds18b20, pa mi ne uspe sestaviti kode, ker ne skapiram funkcij arraya in oklepajev. Nadgradnja tega bi bila, da bi nastavil čip, kakršno ločljivost bi rad imel.
Sama ločljivost tu ne igra vloge, ampak imamo v službi napravo, ki zna komunicirati z 1-wire, ne zna pa obdelovati podatkov in je možno, da kdaj pokaže 2x, 4x ali 8x višjo temperaturo, kot dejansko je.

Poskušam s tem, pa mi ne uspe:

Koda:
Dim Konfiguracija As Byte

Do
...
   1wreset
   1wwrite &HCC
   1wwrite &HB8                                             'Ukažem prenos eeproma v scratchpad
   Waitms 500

   1wreset
   1wwrite &HCC
   1wwrite &HBE                                             'Ukažem branje scratchpada
   Waitms 500

   Konfiguracija = 1wread(4)                                'Zapišem četrti byte v Konfiguracija

Lcd Konfiguracija

...
Loop


Rezultat je tak da mi je na začetku pokazal 37, in se viša za 1 na vsakih nekaj ciklov.

Mi lahko kdo prosim pomaga razložiti, kaj delam narobe, da mi ne prebere pravilno 4. bajta konfiguracijskega registra. Sem že precej primerov pregledal, pa mi res ni jasno.. npr. tale primer mi je sploh "trd oreh", nič mi ni jasno, kaj naredi s temi podatki Brick wall Brick wall Brick wall:

Koda:

...
Sc(1) = 1wread(9) 'read bytes into array
 if sc(9) = crc8(sc(1),8) then
 DG = DeciGrades(sc(9)
...

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Ned Jan 28, 2018 3:36 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hi

Jaz pa bi rad, da se mi na LCD izpiše vrednost temperature samo v celih številih, brez decimalke. Kako napisati kodo?
Delček kode, ki sedaj izpisuje na pol stopinje natančno:

Koda:


Ts = T
Ts = Ts/2  ; na pol stopinje natančno
Locate 1,1 : LCD "T= " ; Ts
'sedaj izpiše naprimer T= 21.0



lp,marko

Avtor: kose19Kraj: okolica Kobarida PrispevekObjavljeno: Ned Jan 28, 2018 5:09 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Koda:
Read1820:

   1wreset                                                  'reset
   1wwrite &H55                                             '1Wire ukaz za pricakovanje kode
   1wwrite Ar(1) , 8                                        'posiljanje kode
   1wwrite &HBE                                             'ukaz za branje internega RAM-a
   Bd(1) = 1wread(9)                                        'branje RAM-a v polje
   1wreset                                                  'reset

      T2 = Makeint(bd(1) , Bd(2))                           'zruzevanje 1.in 2.byta iz polja v eno spremenjlivko
      T2 = T2 / 2                         'T2 delimo z 2,da iznicimo decimalke

Return

Avtor: BranezKraj: Koprivnica HR PrispevekObjavljeno: Ned Jan 28, 2018 7:26 pm    Naslov sporočila:  
----------------------------------------------------------------------------
marko11 je napisal/a:
Jaz pa bi rad, da se mi na LCD izpiše vrednost temperature samo v celih številih, brez decimalke. Kako napisati kodo?
Delček kode, ki sedaj izpisuje na pol stopinje natančno:
Išči v Bascom Help pod "Fusing". Imaš možnost z ali brez zaokroževanja.

Stran 2 od 2

Powered by phpBB © 2001,2002 phpBB Group