Máš pravdu, jsem si toho ani nevšiml. Ani nevím, kde se to tam tak blbě vzalo
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)
Do jakého datasheetu si se více než nečekaně ponořil ?
To by mě taky jen ze zvědavosti zajímalo
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 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