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

Máš pravdu, jsem si toho ani nevšiml. Ani nevím, kde se to tam tak blbě vzalo :smiley: :smiley:

Nejdrive me ten komentar zmatl, docela me to potrapilo, ale ted uz aspon vim jak to bylo mysleno a jsem zase o neco chytrejsi (vice az necekane jsem se ponoril do studovani datasheetu) :slight_smile:

Do jakého datasheetu si se více než nečekaně ponořil ? :smiley:

To by mě taky jen ze zvědavosti zajímalo :smiley: :smiley: :smiley: :smiley: :smiley:

No ja jsem reagoval na

;portA
   banksel   TRISA      ; vyber banky
   movlw   b'00000000'   ; 0 vstup, 1 vystup
   movwf   TRISA      ; sup do TRISu 

No a ja se svou lamavou anglictinou si stahl pdf ww1.microchip.com/downloads/en/D … 30292c.pdf
No a na strane c.38…:
Setting a
TRISA bit (= 1) will make the corresponding PORTA pin
an input (i.e., put the corresponding output driver in a
Hi-Impedance mode). Clearing a TRISA bit (= 0) will
make the corresponding PORTA pin an output (i.e., put
the contents of the output latch on the selected pin).
No a zde jsem zjistil ze 0-vystup, 1-vstup

Proč tedy nestuduješ raději český datasheet, když ti eng moc nejde.

Inak na druhej stranke som upozornoval… popis vstup vystup…

A proc ne anglicky ? Aspon me to donuti se ucit cizi jazyky :slight_smile: Stejne uz mam i knizku z BENu 16F87x

Ja vim, vsiml jsem si toho.

Myslim si ze je uz nejvyssi cas ukoncit toto OT a pripadne se vratit k puvodnimu zameru tohoto vlakna, tedy pokud bude potreba.

Nechapu proc mi nefunguje AD prevod na portu AN5, AN6 a AN7.

	banksel	OPTION_REG
	movlw	b'00000000'
	movwf	OPTION_REG
;portA
;zapnuti AD	
	banksel	ADCON0		; vyber banky
	movlw	b'01000001'	; FRC,ADC is ON			
	movwf	ADCON0		
	banksel	ADCON1		; vyber banky
	movlw	b'10000000'	; vlevo, VSS, VDD		
	movwf	ADCON1		; 
;PORTB
	banksel	TRISB		; vyber banky
	movlw	b'00000000'	; 1 vstup, 0 vystup
	movwf	TRISB		; sup do TRISu
;PORTC
	banksel	TRISC		; vyber banky
	movlw	b'11111110'	; 1 vstup, 0 vystup
	movwf	TRISC		; sup do TRISu
;PORTD
	banksel	TRISD		; vyber banky
	movlw	b'00000000'	; 1 vstup, 0 vystup
	movwf	TRISD		; sup do TRISu
;PORTE
	banksel	TRISE		; vyber banky
	movlw	b'00000000'	; 1 vstup, 0 vystup
	movwf	TRISE		; sup do TRISu

	banksel	PORTA
	clrf	PORTD

Mam nejakou chybu v inicializaci ?
Kdyz chci cist data z AN5

	movlw	b'01101001'	; FRC,ADC is OFF			
	movwf	ADCON0		

	BSF		ADCON0, 2			; ADC start
ADCloop
	BTFSC	ADCON0, 2			; je ADC nacteni ukonceno ?
	GOTO	ADCloop				; ne, zpet na ADCloop
	movfw	ADRESH				; horni  2 Bit vyber
	movwf	f1					; horni  2-Bit podle U1H
	bsf		STATUS,RP0			; Bank1
	movfw	ADRESL				; dolni 8 Bit vyber
	bcf		STATUS,RP0			; Bank0
	movwf	f0					; dolni 8-Bit podle U1L

No a zde ma v f1 a f0 ulozene data z AD portu AN5. Tedy nemam, jedine co tam mam tak bud 00000000 (d 0) nebo 00000101 (d 5). Stejny problem mam i pri cteni z portu AN6 a AN7.
Kdyz ctu data z AN4, AN3, AN2, AN1, AN0, tak to je v pohode, funguje to a v f1 a f0 mam data ktere odpovidaji hodnote pri cteni z AD portu.

AN5,AN6,AN7 jsou na PORTE a vy máte celý PORTE nastaven jako výstupní. takže nejspíš tim to bude.

Diky za nakopnuti, vzdyt to je i v datashhetu napsane
RA5/AN4
RE0/AN5
RE1/AN6
RE2/AN7
Ja do toho cucim uz druhy den a nevsiml jsem si toho, takova “ostudna chyba”.

a jen menší dodatek, ale to už jistě víte, TRISE obsahuje konfigurační bity pro paralelní port tak aby jste nenastavil celý TRISE jako vstupní a pak se nedivil že nefunguje celý PORTD :slight_smile: