16F877A-jednoduchý příklad pro měřeni teploty čidlem DS18B20

Delam si takove “udelatko” s 16F877 a LCD kde merim na5-ti vstupech U a namerene hodnoty zobrazuji na LCD (2x16znaku). No a k tomu jeste potrebuji merit okolni teplotu. Jako cidlo uvazuji o 18B20. Prosim, nema nekdo nejaky jednoduchy priklad pro mereni teploty s vystupem na lcd display ? Mam zajem o asm, ne o script v C, tech jsem nasel nekolik na internetu, ale asm ani jeden.
Jen kdyby to nekoho zajimalo k cemu to cele je, tak jedna se o “elektrorozvodnu” pro napajeni montaze pro astronomicky dalekohled a zde potrebuji prave merit napajeci U, pak jake je U pro vyhrivani optiky, U pro casovace atd. Takze muj hlavni konicek je astronomie a k jednocipum jsem pricichl, pac jsem programoval a kdyz mi bylo tak dnes-25 roku, elektronika/bastleni byl muj raj na zemi: -) No a chci spojit “:uzitecne s prijemnym”, t.j. programovani a el;ektorniku :slight_smile:
Dekuji za pripadnou pomoc.

:arrow_right: administrator: přejmenováno z "16F877a + DS18B20"

Pozri sa tu, mozno tam bude nieco pre teba : pandatron.cz/?566&teplotni_cidlo … _pic12f629

Na ten pandatron jsem se uz dival, ale nejsem z toho moc chytry. kdybych si chtel ten script upravit pro 16f877, nevim/netusim jajk mam nastavit port na ktery pripojim to cidlo atd. Spise prave hledam nejake “hotove reseni” s lcd displejem, tam se uz nejak prokousu tim scriptem od pripojeni cidla pres nacteni a nasledne zobrazeni na display.
Kazdopadne diky za odkaz.

to zavolas pre spustenie prevodu
call KOM_S_C_1 ; meranie teploty

toto pre nacitanie nameranej hodnoty
call namerane

pricom teplota data budu v TEMP_LSB a TEMP_MSB

inak niekde je verzia thto presne pre Bckove cidlo toto je robene pre Skove v podstate by mali ist aj na B.

Skontrolovat slucky ci tu nieje nejaka navyse

[code];******************************************************
KOM_S_C_1
movlw b’00101000’ ; zakazane všechna přerušení a od přetečení TMR0
movwf INTCON
CALL A0_RESET_C ;PROCEDURA RESET
MOVLW 0xCC ;PRIKAZ ROM - SKIPROM
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
MOVLW 0x44 ;PRIKAZ ROM - prevod teploty
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
return
;******************************************************
; TEST UKONČENÍ PŘEVODU *
;*************************
; Pro zjisteni ukonceni prevodu teploty se musi vyslat “cteci casovy usek” (pekne blbej výraz :frowning: )
; toto cteni se musi provadet pokazde, kdy chceme cist stav sbernice, protoze cidlo odpovi pouze jednou na
; otazku, zda probiha prevod, takze cekaci smycka se vraci o 10 radku nahoru na nove vyslani
; cteciho casoveho useku. :wink:
namerane
g MOVLW 0X03 ;POMOCNE ZBRZDENI
MOVWF TMP2
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK - PRIPRAVA NA START CTENI
BCF ds ;LOG.0 NA TCK - START CTECIHO CASOVAHO USEKU
nop
;-------------------------------
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0

DECFSZ	TMP2,F		;DOBRZDENI NA 13us
GOTO	$-1
BTFSC	ds			;TEST UROVNE SBERNICE - VYSLANI BITU Z CIDLA
GOTO	KOM_S_C		;CIDLO POSLALO LOG.1	ukonceny prevod
CALL	BR_60us		;BRZDA 60us
goto	g

;******************************************************
KOM_S_C ; TEST KOMUNIKACE (z cidla musi byt nactena hodnota +85st.C. (0550h A PO UPRAVE V TEMP_MSB bit0 =0 A V TEMP_LSB=0xAA));
;******************************************************
CALL A0_RESET_C ;PROCEDURA RESET
MOVLW 0xCC ;PRIKAZ ROM - SKIPROM
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
MOVLW 0xBE ;FUNKCNI PRIKAZ - READ SCRATCHPAD
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
CALL A0_CTI_Z_C ;CTENI DAT Z CIDLA - NACTENA DATA JSOU V TMP0 reg.
MOVF TMP0,W
MOVWF TEMP_LSB
CALL A0_CTI_Z_C ;CTENI DAT Z CIDLA - NACTENA DATA JSOU V TMP0 reg.
MOVF TMP0,W
MOVWF TEMP_MSB

;movlw	b'10101000'	; povolena všechna přerušení a od přetečení TMR0
;movwf	INTCON
	RETURN

;******************************************************
; Ovladaci ROUTINE pro cidlo DS18B20
; Casovani je pro pouziti krystalu 4MHz
; Casova smycka je 10us, 25us, 60us, 100us, 160us, 490us
; Cidlo je napajeno pres Ucc pin
;…
;PRSENTACNI CAST;
A0_RESET_C
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA4 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_490us ;CEKEJ CCA 490us
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0
CALL BR_100us ;CEKEJ CCA 100us

BTFSC	ds			;TEST PRESENTACNIHO PULSU OD CIDLA

chyba goto chyba; call chyba

CALL	BR_490us	;CEKEJ CCA 490us
RETURN

;------------------------------------------------------
;TEST KOMUNIKACE (z cidla musi byt nactena hodnota +85st.C. (0550h));
;------------------------------------------------------
;VYSLANI 8BITU DO CIDLA (DATA NEBO PRIKAZ)
;ODESILANA DATA (1 BAJT) MUSI BYT V W REGISTRU
A0_WR_DO_C
MOVWF TMP0
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK
MOVLW 0X08 ;POCET BITU DO CIDLA (8)
MOVWF TMP1

A0_ZAPISS
BTFSS TMP0,0 ;TEST BITU 0 REG. TMP0
GOTO A0_ZAPIS0
GOTO A0_ZAPIS1
;-------------------------------
A0_ZAPIS0 ;TAKTO ZAPISUJE LOG.0
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_100us ;BRZDA 100us
BSF ds ;LOG.1 NA TCK
GOTO A0_POSUNN
;-------------------------------
A0_ZAPIS1 ;TAKTO ZAPISUJE LOG.1
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_10us ;BRZDA 10us
BSF ds ;LOG.1 NA TCK
CALL BR_100us ;BRZDA 100us
GOTO A0_POSUNN
;------------------------------------------------------
A0_POSUNN
RRF TMP0,F ;POSUN OBSAHU REGISTRU O JEDEN BIT DOPRAVA
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_ZAPISS ;JESTE NEBYLO ODESLANO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;------------------------------------------------------
; PRIJMUTI 8BITU Z CIDLA
; (DATA Z CIDLA JSOU V REG.TMP0)
A0_CTI_Z_C
BCF STATUS,RP0 ;BANKA0
MOVLW 0X08 ;POCET BITU PRO PRIKAZ (8)
MOVWF TMP1
CLRF TMP0
A0_CTI_Z_C1
bcf status,C
RRF TMP0,F
MOVLW 0X03 ;POMOCNE ZBRZDENI
MOVWF TMP2
BSF ds
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK - PRIPRAVA NA START CTENI
BCF ds ;LOG.0 NA TCK - START CTECIHO CASOVAHO USEKU
nop
;-------------------------------
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0

DECFSZ	TMP2,F		;DOBRZDENI NA 13us
GOTO	$-1

BTFSS	ds			;TEST UROVNE SBERNICE - VYSLANI BITU Z CIDLA
GOTO	A0_CTI_0	;CIDLO POSLALO LOG.0
GOTO	A0_CTI_1	;CIDLO POSLALO LOG.1

;-------------------------------
A0_CTI_0
BCF TMP0,7 ;NASTAV BIT7 REG.TMP0 DO LOG.0
CALL BR_60us ;BRZDA 60us
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_CTI_Z_C1 ;JESTE NEBYLO ODESLANO/PRIJMUTO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;-------------------------------
A0_CTI_1
BSF TMP0,7 ;NASTAV BIT7 REG.TMP0 DO LOG.0
CALL BR_60us ;BRZDA 60us
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_CTI_Z_C1 ;JESTE NEBYLO ODESLANO/PRIJMUTO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;------------------------------------------------------
;******************************************************
;CASOVA SMYCKA PRO 4MHz
BR_10us
MOVLW 0X02 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
DECFSZ SM_AD1,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO $-1
return
;-------------------------------
BR_25us
MOVLW 0X05 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_60us
MOVLW 0X11 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_100us
MOVLW 0X1E ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_160us
MOVLW 0X32 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_490us
MOVLW 0XA0 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_MAX
MOVLW 0XFF ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0XFF
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
MOVLW 0X07
MOVWF SM_AD3
DECFSZ SM_AD3,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO $+2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
return
call BRZDA2
GOTO $-4
;----------------------------------
;-------------------------------
BRZDA2
DECFSZ SM_AD1,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO BRZDA2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
DECFSZ SM_AD2,F ;ODECTI 1 OD CISLA V PAMETI SM_AD2
GOTO BRZDA2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
RETURN
;******************************************************[/code]

:arrow_right: administrator: příspěvek byl upraven

Diky za kod, uz to studuji.
Kdy to chci zkompilovat, tak mi to napise hlasku:

Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1049 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1050 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1059 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1092 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1093 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1100 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1115 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1125 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1126 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1128 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1132 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1133 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1135 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1157 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1161 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1162 : Missing argument(s)
Error[128]   D:\STANDA\JEDNOCIPY\MPLAB\VOLTMETR_LCD\ADCLCD.ASM 1172 : Missing argument(s)

Je to na radkach kde je “ds”, napr:

0001 #include <P16f877A.INC>
0001 ERRORLEVEL      -302    	;
0003 __CONFIG	_PWRTE_ON & _WDT_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF
0004 ;* promenne pro teplomer
0005 TMP0		equ 0x30
0006 TMP1		equ 0x31			;
0007 TMP2		equ 0x32			;
0008 ds		equ 0x33			;
0009 TEMP_LSB	equ 0x34
0010 TEMP_MSB	equ 0x35
0011 SM_AD1	equ 0x36
0012 SM_AD2	equ 0x37
0013 SM_AD3	equ 0x38
0014 status	equ 0x39
...
...
0094 call KOM_S_C_1 ; meranie teploty 
0095 call namerane 
...
...
1049:  BSF   ds         ;LOG.1 NA TCK   - PRIPRAVA NA START CTENI
1050:  BCF   ds         ;LOG.0 NA TCK   - START CTECIHO 

Na jaky port mam pripojit cidlo a jak mam ten port nastavit ? Jestli premyslim spravne, tak kdybych to chtel mit na portu RC0, tak bych mel nastavit:

	MOVLW	b'11111111'			; vse jsou vstupy
	MOVWF	TRISC

a jak mam potom s parametrem zavolat ?

call KOM_S_C_1 nejaky parametr, jak ?
call namerane nejaky parametr, jak ?

DS musis yadefinovat tam kde bude pripojene cidlo…navyse je v programe uz urcene ze je pripojene na TRISA,4 ;PIN RA0 JAKO VYSTUP
Cize v tomto pripade #include ds PORTA,4 ked dobre pametam.
Blbe je to teraz v tom ze musis menit vsetko v programe ak to das na iny vyvod IO ale dalo by sa to riesit …tak ako je riesene DS

#include dso TRISA,4 dso napises namiesto toho prikazu TRISA,4

Ak to chces mat na C0 musis prepisat NA TRISC,0 a PORTC,0 ked pouzijes to co som pisal predtym definovanie ds a dso… moze s poto mjednoducho zmenenim len dvoch riadkov prehadzovat cidlo kam budes chciet …tak ako je to teraz budes musiet nahradzat v programe TRISA,4 za TRISC,0 + upravit res doplni DS definiciu

co sa tyka definovania portu staci MOVLW b’00000001’ ; vse jsou vstupy
MOVWF TRISC
vstup len pre dane cidlo…pozor na ostatne vyvody na C nastavene ako OUT aby si neskratopval

call KOM_S_C_1 :bez parsametru nejaky parametr, jak ?
call namerane : bez parametru nejaky parametr, jak ?

Prve zavola cidlo a spusti meranie teploty… citat teploty mozes po 500ms to si zisti v datasite tak ze druhy prikaz by mal ist po tomto case.

status a ds nesu registre RAM, status prepis v programe NA velke pismena STATUS

Keby som bol doma tak ti nalinkujem cele ako ma byt…

Ja se v tom placam az hruza. Prosim, nema nekdo funkcni zdrojak v asm pro ds18b20, 16f877 a lcd ? Chtel jsem se podivat jeste na pandatron.cz/?566&teplotni_cidlo … _pic12f629 a predelat si vystup z com portu na zobrazeni na lcd, ale nejak ten web nefunguje.

Jeste bych dodal, hledal jsem nejake zxapojeni i s asm, ale co jsem nasel, bylo vzdy psane v c-ecku :frowning:

Zkus přílohu.
Opravena 1 chyba + převod teploty
TEMP.asm (18 KB)

to honza3: diky za prilohu. Uz zacinam tusit co a jak, muzu Te ale jeste poizadat o schema zapojeni (cidlo, procer, lcd) ? Podle asm tusim ze cidlo se pripojuje na RA0, ale jak je to s lcd, nechapuy kdyz podle toho scriptu jsou vsechny porty jako vstupni.

Jak se da porovat namerena hodnota s hodnotou ulozenou v promenne ? Pr.: merim napeti a to je 12V, nyni je aktualni “spicka” 12.8V a tuto hodnotu chci ulozit do promenne a nasledne zobrazit na lcd kdyz zmacknu tlacitko. Zmacknuti tlacitka a zobrazeni nejakeho textu mam vyresene.

Když si přečteš ASM, tak z toho vyčteš, co je kam připojené.

#define ds PORTC,0 #define RS PORTD,1 #define E PORTD,0 #define LCD_PORT PORTD ; 4 - 7

Program pro DS nemám jak vyzkoušet, ale vzal jsem ho z čtvrtého příspěvku a upravil.

Na rutiny se mrkni sem. Je tam i Lo < x x < Hi atd.

Uz to ted studuji, diky za vse. Zitra to vyzkousim. Dokonce i ty rutiny pro obsluhu lcd display mas lepsi, dobre se mi z toho uci.

Kedze v tom mam tiez prsty tak to skusim aj ja … keby to nahodou nesslo

Sosněte to znovu, opravil jsem 1 chybu. Když to nebude fungovat, svedem to na** Atlan**a, když v tom má taky prsty. :smiley: :smiley: LCD, přepočet teploty s DS a vše okolo je funkční, DS nemám jak zkusit :frowning:

Tak si s tim hraju uz cely den a funguje to nejak divne, nemuzu prijit proc to tak je.

  1. kdyz pripojim DS18B20, tak se mi zobrazi +085,0 a nemeri to teplotu
  2. kdyz pripoijim DS18S20, meri mi to teplotu, ale spatne (doma mam 20C a udaj na LCD ukazuje 3,2C). Zde jsem zjistil ze TEMP_MSB obsahuje porad 00000000, TEMP_LSB uz ma binarni kod rozdily podle toho jak cidlo rahrivam/ochlazuji.

Pokud nezrusim ve scriptu radek c.161 a 162,

143 ;******************************************************
144 ; Ovladaci ROUTINE pro cidlo DS18B20
145 ; Casovani je pro pouziti krystalu 4MHz
146 ; Casova smycka je 10us, 25us, 60us, 100us, 160us, 490us
147 ; Cidlo je napajeno pres Ucc pin
148 ;......................................................
149 ;PRSENTACNI CAST;
150 A0_RESET_C   
151 BANKSEL      TRISC        ;BANKA1
152 BCF          ds           ;PIN ds JAKO VYSTUP
153 BANKSEL      PORTC        ;BANKA0
154 BSF          ds           ;LOG.1 NA TCK
155 BCF          ds           ;LOG.0 NA TCK
156 CALL         BR_490us     ;CEKEJ CCA 490us
157 BANKSEL      TRISC        ;BANKA1
158 BSF          ds           ;PIN ds JAKO VSTUP
159 BANKSEL      PORTC        ;BANKA0
160 CALL         BR_100us     ;CEKEJ CCA 100us
161 BTFSC        ds           ;TEST PRESENTACNIHO PULSU OD CIDLA
162 chyba        goto chyba   ;call   chyba
163 CALL         BR_490us     ;CEKEJ CCA 490us
164 RETURN

tak se nehnu z mista (zacykli se to).

To uz je mozna dotaz na Atlana :wink:

Zapojeni DS18x20 mam 1-Zem, 2-Vystup dat, 3-plus. Mezi 2 a 3 mam odpor 4k7.

Mam tam chybu.

Opraven převod teploty. Máš opravenou i chybu** goto chyba**
TEMP.asm (18 KB)

goto chyba; call chyba
tak to nemusi a nebude fungovat malo by tam byt

goto A0_RESET_C

; ide o to ze posleme do cidla sekvenciu tym sa spytame ci uz skoncil prevod a ak odpovedou je log0 tak skoncil ak log 1 este prebieha. cize ak chceme zistit znova musime poslat a testovat dany bit.

Ono to je sposobene aj tym ze ty urcite spustis prevod a hned potom aj naitavas data teploty z cidla. je dobre medzi tymi dvoma vecami vykonat nejaku inu cinnost…program potom zbytocne nestoji a nedotazuje cidlo ci uz skoncil prevod.

18B20 pri prvom citani teploty to zobrazuje spravne tych 85st tym sa da overit ci je cidlo ok spravne pripojene

Tak ze rozbehaj to s 18S20 a doladime to na Bcko…to ma tusim standartne 12 prevod teda ked to uz kolega nezaprACOVAL DO PROGRAMU…

Atlan: goto chyba; call chyba jsem upravil jak si uvedl na goto A0_RESET_C a uz to vypada ze je to OK.
Vicemene porad jsem se nezbavil problemu kde do TEMP_MSB se nacitaji porad jen same log.0 a v TEMP_LSB se nacitaji hodnoty jak maji (u 18B20 se zobrazi opet 085,0 - to se doladi tedy pozdeji). Uz jsem nad tim stravil celou noc :frowning: a porad na to nemuzu prijit proc to tak dela.

18s20 funguje …respektive meni sa aspon nieco ? pri ohrievani.

Ca sa tyka 18b20 na kolko bitov to potrebujes ? da sa nastavit prevofd od 9-12bitov

a este detil teplota pr 18s20 sa meni po 0,5st celzia… problem by mohol byt tam v prevode …idem podumat

Frekvenciu oscilatora mas 4MHZ ?

  1. kdyz cidlo ohrivam/chladim, meni se bity v TEMP_LSB

  2. TEMP_MSB ma stale bity 00000000 i kdybych to cidlo snad i teplem roztavil nebo zamrznul :wink:
    Podle me je problem v tom, ze se nenactou bity do TEMP_MBS. Kdyz jsem si “rucne” nastavil TEMP_MBS a TEMP_LSB, prevod na stupne C podle datasheetu je OK.

  3. 18B20 nechme prozatim “u ledu”

  4. pouzivam krystal 4MHz, kdyby bylo zapotrebi, mam v supliku i 10MHz