Panove prosim o pomoc. Kto mi strucne vysvetli funkciu tohto useku programu: Jedna sa o emulaciu USARTU na PIC (12F626; 16F676) .
Mne to akosi nedava zmysel. Alebo je v tom nejaka finta??
no prave, to som ja vobec nepisal, vsetko je to z internetu a je to ve spojenim s DS18B20, no to ja viem ze portA je v banke 0 a trisA je v banke 1, ale co to ma za mysel, kedze sa tam v tom useku pracuje len s portomA??
Cau, jestli je to “ve spojenim s DS18B20” tak je to dobre, DS18B20 komunikuje po 1 vodici , vastavis UART jako vystup , posila uC do DS18… , vastavis UART jako vstup posila DS18… do uC, pokud si projedes tu komunikaci s DS tak je to tam vydet, jak to komunikuje,
pokud se tu porozhlidnes najdes tu “Český překlad Datasheetu čidla DS18B20”
To MiloPS3: ten usek programu sa tyka komunikacie s PC a nie s cidlom DS18B20…asi si ma nerozumel, ja nerozumiem tomu, ze pocas toho useku programu sa pracuje len s portomA , tak naco sa tam prepinaju banky??
Vladimir…
Tak jak je to napsané to nebude dělat nic, protože je definován registr PORTA a ten je v bance 0. Odstraň ze zápisu přepínání bank, vypni comparátor CMCON = 7, nastav TRISA,0 na log0 a mělo by to přepínat.
Platí pouze pro 16F676. PIC12F626 neexistuje…
to Petr: Ahoj Peter, ale ten usek programu je “original” z tejto web stranky: pandatron.cz/?530&uart_na_pic_-_ … covy_rs232 , prosim ta pozri sa na to… je to aj s PIC12F629 a aj s PIC16F676.
dakujem…
Vladimir…
To Honza3: Honzo, to co si odpvoedal je presne pravda a aj som od teba taku odpoved cakal. ja le n nechapem ako sa moze prepinat (nastavovat) bit v PorteA, ked som prepnuty v banke1 , teda na TrisA??..A naco a preco sa tam prepina TrisA??. ked je UART definovany na pin 0 portuA?? Toto keby mi niekto vysvetli ako to funguje a preco to tak je??
Dakujem vsetkym, Vladimir…
To Vladimir : my to jaksi nedocvaklo ze pin “UART” neni na komunikaci s DS18… ale funguje to podobne
jinak k problemu,
pokud mas UART nastavenej jako vystup tak prikazem BSF UART ho nastavis na log1, prikazem BCF UART na log 0,za predpokladu ze ses v Bance 0 neboli BCF STATUS,RP0 ,kdyz ho chces nastavit jako vstup tak to muzes napsat takle , prepnes Banku0 na 1 prikazem BSF STATUS,RP0 a prikazem BSF UART nastavis na vstup, ten UART mas nedefinovanej jako 0x05,0 (nebo PortA,0)pokud ses v bance 0 a 0x85,0 (nebo TrisA,0)pokud ses v bance 1, snad to pochopis
chalani Milo a Honza… to co vy mne odpovedaate to ja vsetko davno viem, ale nachapem preco je to tak zapisane a ako to funguje, lebo to nema logiku. Tam sa predsa pracuje s pinom 0 na porteA a nie s TrisA?? a ked to simulujem v MPLABE tak sa mi prepina TrisA a nie bit 0 na potrA!! Tam je nejaka finta?? A ja neviem aka?? Ja verim ze to urcite funguje na PIC12F629 a 16F676 , ale ja to chcem aplikovat na 16F690 a na 16F887, a s tym mam problemy ci tam tento zapis bude fungovat??.. Ja sa obavam ze nie. Mate nejaky navrh ako to prepisat na 16F690, alebo 16F887??
Dakujem…
a kde berus tu jistotu ze se pracuje jenom s pinom 0 na porteA ?? protoze je to napsany v definici ?? #define UART PORTA,0 ; UART pin
je to stejny jako kdyz napises #define UART 0x05,0 , pokud ses v Bance 0 tak s tim pracujes jako PortA,0 pokud ses v bance1 tak TrisA,0 , chapes ?? to ze je tam definovano jako PortA neznamena ze se stim nemuze pracovat jinak nez jako s PortemA, to ze se prepina TrisA,0 na 0 je dobre , potrebujes ho nastavit jako vystup
s prominutim co na tom este nechapes ? , na zacatku USEND je UART nastaven jako vystup (bude se vysilat z PICu do PC), na konci USEND se USART nastavuje jako vstup, je to mozna kvuli skratu na zbernici ci kompabilite s dalsimy priklady ( + rychlejsi prijem dat )
Jestli se muzu este zeptat , k cemu todle potrebujes ? delas nakou upravu ? ten puvodni kod funguje
BSF STATUS,RP0 / nastaveni banky 1
BCF UART / ses uz v bance1 takze nastavujes TrisA,0
BCF STATUS,RP0 / nastaveni banky 0
BSF UART / ses v bance0 (PortA,0),nastaveni pinu UART na log 1
tento kod je na zacatku odeslani bitu USEND
tydle radky ti prepinaj vystupni log uroven na pinu USART za predpokladu ze mas TrisA,0 nastavenej jako vystup (TrisA,0=0)
Prosim te hot sem kus kodu kde se to nachazi at to muzem lepe vysvetlit
tato uprava neni spatna , zalezi o co ti de , jestli o nastaveni PortuA,0 nebo TrisuA,0, (v tomdle pripade nastavujes PortA,0),ale jak sem uz psal je nutny nastavit na zacatku USEND pin USART jako vystup a nakonci USEND pin USART jako vstup z duvodu jaky uz sem popsal driv