Program na záznam teploty s PIC16F628A

Pokud chceš ukládat i časový údaj, jaký RTC chceš použít. Co se týče překladu datasheetu, porozhlédni se tady na fóru, ale pro daný typ tu asi nebude.

co myslíš tím RTC? díky

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Real Time Clock, nějaký časový a datumový obvod.

Ty hodiny fungují na bází přerušení a jsou součástí programu čili tam nebude žádný další obvod kromě teplotního čidla DS18S20 je fakt že zatím neřeším komunikaci toho čidla ale na to je čas.díky

Tady to máš celé hotové. Program pro tvůj PIC a čidlo lze jednoduše upravit.
Hodiny se musí doplnit.

pandatron.cz/?566&teplotni_cidlo … _pic12f629

To : Petr, prosim ta Peter, alebo niekto, kto uz ma s tym skusenosti. Skusam si postavit ten prenos teploty z cidla DS18B20 do PC podla stranky z pandatronu.cz. Ja som to chcel ale aplikovat so 16F690 a uz v MPLABe mi to nechcelo fungovat. Tak som potom do MPLABu natiahol original program s 12F629 a neslo to. Totiz v podprogramoch DSPINL a DSPINH kde sa nastavuje a resetuje pin “DSPIN” sa mi to neprepina ked si to pozeram v okne Watch reg. GPIO, bit 2. Preco??.. nieco robim spatne??.. Poradte prosim…Dakujem…
Vladimir…

Pro Vladimíra to se řešilo na elektroworld.info/modules.ph … ht=ds18b20

Neni snazsi casovy udaj resit jiz v ramci programu v PC ?!

Není protože jak zjistíš čas kolik bylo venku v noci stupňů pod nulou v určitou hodinu když nemáš zaznamenán čas, upozorňuji že to bude měřit přes celou noc no až ráno to připojím na PC a v terminálu který je součástí WXP si přečtu v kolik hodin bylo stupňů.díky

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

O to vím ale za prve to s 12f629 a za druhé ten program ihned posílá teplotu do PC.díky

chlapci , prosim vas, casto tu citam o “pull-up” , ale co to vlastne je?.. mohol by mi to niekto strucne vysvetlit??
dakujem… Vladimir.

To jsou rezistrory připojené mezi pin procesoru a +5V, zaručují log. 1 na vstupu nebo na výstupu s otevřeným kolektorem. Obvykle se používá 4k7 - 10k. U I2C se používá i menší, většinou 1k8.

Tak jsem si to upravil ponechávám tam emulaci usartu bude stačit změna GPIO na PORTB? nebo jak to mám upravit ?přikládám upravený zdroják díky

[code];**************************************************************************
; PIC12F629 + DS18B20 (C)Pandatron.cz, 2008
;--------------------------------------------------------------------------
;
; Processor : PIC12F629
; Clock : INTOSC (4MHz)
;
;**************************************************************************

    LIST P=16F628, R=DEC
    INCLUDE<P16F628.INC>
    
    __CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT

UARTREG equ 0x20 ; odesilani dat do PC
UARTCNT equ 0x21
UARTROT equ 0x22
PAUS1 equ 0x23 ; 10s pauza
PAUS2 equ 0x24
PAUS3 equ 0x25
DSDL1 equ 0x26 ; komunikace s DS18B20
DSREG1 equ 0x27
DSREG2 equ 0x28
TEMPL equ 0x29
TEMPH equ 0x2A
TEMPNM equ 0x2B ; ???, °C
TEMPDP equ 0x2C ; ,? °C

#define UART PORTB,0 ; UART pin
#define DSPIN PORTB,2 ; DS18B20 pin

D550US equ 200 ; 550us
D90US equ 25 ; 90us
D1US equ 1 ; 3us

SPEED equ 34 ; SPEED - Baud
; 145 - 2400
; 71 - 4800
; 34 - 9600
; 21 - 14400
; 15 - 19200
; 5 - 38400

; ========================================================================
; Start procesoru
;
org 0x00
goto INIT

INIT MOVLW 0x7 ; komparator off
MOVWF CMCON

    GOTO    START

START CALL DSSTART ; start prevodu teploty v cidlu
CALL PAUSE ; 10s
CALL DSREAD ; vyčtení teploty z cidla
CALL TMPCNV ; prevod binarni teploty na hodnotu
CALL TEMPSND ; odeslani teploty do PC
GOTO START

; ========================================================================
; DS18B20 rutiny
;
DSSTART CALL DSPINL ; start prevodu teploty
MOVLW D550US ; reset pulse
CALL DSDEL
CALL DSPINH
MOVLW D90US
CALL DSDEL
BTFSC DSPIN
RETURN ; bez odpovedi - konec
MOVLW D550US
CALL DSDEL
MOVLW 0xCC
CALL DSSEND
MOVLW 0x44
CALL DSSEND
RETURN

;---------------------

DSREAD CLRF TEMPL ; vycteni teploty z cidla
CLRF TEMPH
CALL DSPINL
MOVLW D550US ; reset pulse
CALL DSDEL
CALL DSPINH
MOVLW D90US
CALL DSDEL
BTFSC DSPIN
RETURN ; bez odpovedi - konec
MOVLW D550US
CALL DSDEL
MOVLW 0xCC
CALL DSSEND
MOVLW 0xBE
CALL DSSEND
CALL DSREC
MOVWF TEMPL
CALL DSREC
MOVWF TEMPH
RETURN

;---------------------

DSPINL BSF STATUS,RP0 ; pin DSPIN do L
BCF DSPIN
BCF STATUS,RP0
BCF DSPIN
RETURN

;---------------------

DSPINH BSF STATUS,RP0 ; pin DSPIN do H (pull-up)
BSF DSPIN
BCF STATUS,RP0
RETURN

;---------------------

DSDEL MOVWF DSDL1 ; prodleva pro komunikaci
DECFSZ DSDL1,1
GOTO $-1
RETURN

;---------------------

DSSEND MOVWF DSREG1 ; odeslani jednoho bytu z W do DS18B20
MOVLW 8
MOVWF DSREG2
DSSND1 CALL DSPINL
BTFSC DSREG1,0
CALL DSPINH
MOVLW D90US
CALL DSDEL
CALL DSPINH
RRF DSREG1,1
DECFSZ DSREG2,1
GOTO DSSND1
MOVLW D90US
CALL DSDEL
RETURN

;---------------------

DSREC CLRF DSREG1 ; vycteni jednoho bytu z DS18B20 do W
MOVLW 8
MOVWF DSREG2
DSREC1 RRF DSREG1,1
CALL DSPINL
CALL DSPINH
MOVLW D1US
CALL DSDEL
BCF DSREG1,7
BTFSC DSPIN
BSF DSREG1,7
MOVLW D90US
CALL DSDEL
DECFSZ DSREG2,1
GOTO DSREC1
MOVLW D90US
CALL DSDEL
MOVF DSREG1,0
RETURN

; ========================================================================
; Prevod binarni hodnoty ziskane z cidla na velikost teploty
TMPCNV CLRF TEMPNM
CLRF TEMPDP
BTFSS TEMPH,7
GOTO $+5
COMF TEMPH,1
COMF TEMPL,1
MOVLW 200
MOVWF TEMPNM

    MOVF    TEMPDP,0
    BTFSC   TEMPL,1
    ADDLW   1
    BTFSC   TEMPL,2
    ADDLW   2
    BTFSC   TEMPL,3
    ADDLW   5
    MOVWF   TEMPDP
    
    MOVF    TEMPNM,0
    BTFSC   TEMPL,4
    ADDLW   1
    BTFSC   TEMPL,5
    ADDLW   2
    BTFSC   TEMPL,6
    ADDLW   4
    BTFSC   TEMPL,7
    ADDLW   8

    BTFSC   TEMPH,0
    ADDLW   16
    BTFSC   TEMPH,1
    ADDLW   32
    BTFSC   TEMPH,2
    ADDLW   64
    MOVWF   TEMPNM
  
    RETURN

; ========================================================================
; Odeslani jednoho bytu z W do UARTU
;
USEND MOVWF UARTREG
BSF STATUS,RP0
BCF UART
BCF STATUS,RP0
BSF UART
CALL UARTDEL
NOP
NOP
NOP
MOVLW 8
MOVWF UARTROT
BTFSS UARTREG,0
GOTO $+3
BCF UART
GOTO $+3
BSF UART
NOP
CALL UARTDEL
RRF UARTREG,1
DECFSZ UARTROT,1
GOTO $-9
BCF UART
CALL UARTDEL
BSF STATUS,RP0
BSF UART
BCF STATUS,RP0
RETURN

UARTDEL MOVLW SPEED
MOVWF UARTCNT
DECFSZ UARTCNT,1
GOTO $-1
RETURN

; ========================================================================
; Odeslani textu a teploty do PC
;
TEMPSND MOVLW ‘T’ ; T
CALL USEND
MOVLW ‘e’ ; e
CALL USEND
MOVLW ‘p’ ; p
CALL USEND
MOVLW ‘l’ ; l
CALL USEND
MOVLW ‘o’ ; o
CALL USEND
MOVLW ‘t’ ; t
CALL USEND
MOVLW ‘a’ ; a
CALL USEND
MOVLW ‘:’ ; :
CALL USEND
MOVLW ’ ’ ;
CALL USEND

    MOVLW   200
    SUBWF   TEMPNM,1
    BTFSS   STATUS,C
    GOTO    $+4
    MOVLW   '-'             ; -
    CALL    USEND
    GOTO    $+2
    ADDWF   TEMPNM,1

    MOVLW   100
    SUBWF   TEMPNM,1
    BTFSS   STATUS,C
    GOTO    $+4
    MOVLW   '1'             ; 100°C
    CALL    USEND
    GOTO    $+2
    ADDWF   TEMPNM,1
    
    CLRF    TEMPH
    MOVLW   10
    SUBWF   TEMPNM,1
    BTFSS   STATUS,C
    GOTO    $+3
    INCF    TEMPH,1
    GOTO    $-4
    ADDWF   TEMPNM,1
    MOVF    TEMPH,0
    ADDLW   0x30
    CALL    USEND           ; 10°C
    
    CLRF    TEMPH
    MOVLW   1
    SUBWF   TEMPNM,1
    BTFSS   STATUS,C
    GOTO    $+3
    INCF    TEMPH,1
    GOTO    $-4
    ADDWF   TEMPNM,1
    MOVF    TEMPH,0
    ADDLW   0x30
    CALL    USEND           ; 1°C
    
    MOVLW   ','             ; ,
    CALL    USEND
    
    CLRF    TEMPH
    MOVLW   1
    SUBWF   TEMPDP,1
    BTFSS   STATUS,C
    GOTO    $+3
    INCF    TEMPH,1
    GOTO    $-4
    ADDWF   TEMPDP,1
    MOVF    TEMPH,0
    ADDLW   0x30
    CALL    USEND           ; 0,1°C
 
    MOVLW   '°'             ; °
    CALL    USEND
    MOVLW   'C'             ; C
    CALL    USEND
    
    MOVLW   0x0A
    CALL    USEND           ; Enter
    MOVLW   0x0D
    CALL    USEND
    RETURN

; ========================================================================
; Prodleva cca. 10s
; ------------------------------------------------------------------------
PAUSE MOVLW 50
MOVWF PAUS3
CLRF PAUS2
CLRF PAUS1
DECFSZ PAUS1,1
GOTO $-1
DECFSZ PAUS2,1
GOTO $-3
DECFSZ PAUS3,1
GOTO $-5
RETURN

    END

[/code]

Pokud vzorkuješ v pravidelných intervalech, tak programu v PC stačí si pamatovat okamžik posledního čtení dat a časy k novým datů ze známé periody měření může dopočítat.

To Meloun: Ten program, jak ho máš teď ,tak by mohl fungovat.

Cau, jen bych chtel upozornit na ten SW uart, kdysi sem ho pouzil v 12f6xx (int osc) pro komunikaci s PC i s PICem (PIC rizen kristalem,HW uart), pri zmene prijmaciho zarizeni (PC,PIC) sem musel upravit rychlost zmenou SPEED , nerikam ze to nekomu jinymu nebude fungovat se zadanyma hodnotam ale jen naznacuju ze se muze vyskytnout chyba i tam , Dekuji za pozornost

Tady jsem našel takový projekt bogdi.ro/electronics/digital … _18s20.zip
kdo by měl zájem si něco takového postavit.

Zdravím.
Podobné zapojenie ako hľadáš sa nachádza v PE3/2007.
Relatko.

Zdravím
Mám problém konečně mě došel PIC16F628 a chtěl jsem ho napálit tím programem ve formátu hex který jsem si sehnal na tu konstrukci která vyšla v PE 03/07 str.18 Registrační teploměr a vyhazuje mě toto

Connecting to MPLAB ICD 2 ...Connected ICDWarn0030: MPLAB ICD2 is about to download a new operating system. If MPLAB IDE is just starting, it will appear to "hang" at the splash screen. Please be patient. MPLAB IDE will finish it's intialization after the OS is downloaded. (Note: You may wish to select to ignore this warning in the future.) Downloading Operating System Connecting to MPLAB ICD 2 ...Connected Setting Vdd source to MPLAB ICD 2 ...Reading ICD Product ID Running ICD Self Test ...Passed ...Download Operating System Succeeded Setting Vdd source to MPLAB ICD 2 ...Reading ICD Product ID Running ICD Self Test ...Passed MPLAB ICD 2 Ready Programming Target... ...Validating configuration fields ...Erasing Part ...Programming Program Memory (0x0 - 0x5F3) ...Programming User IDs Verifying... ...Program Memory ICD0161: Verify failed (MemType = Program, Address = 0x8, Expected Val = 0x3006, Val Read = 0x1803) ICD0275: Programming failed. MPLAB ICD 2 Ready
mužete mi najít chybu které se dopouštím? díky.

To na začátku je hláška, že byl tomu ICD2 aktualizován firmware (nemám ICD2, takže nevím, jak se to chová)?