SW UART18xxx - vysledek
Marek Pavlu
pavlu@hwg.cz
Sobota Srpen 13 18:04:33 CEST 2005
Zdravim,
Pak chapu, UARTu neni nikdy dost:).
Docela mne stve, ze se nedela neco jako 16F628 nebo 18F1220 s 2xUART:(.
S pozdravem,
Marek Pavlu
// -----Original Message-----
// From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
// Behalf Of Michal HW
// Sent: Friday, August 12, 2005 10:20 AM
// To: HW-news
// Subject: Re: SW UART18xxx - vysledek
//
// Ten pic uz ma 2x HW UART...
// Chtelo by to tak 4x...
// Michal
// ----- Original Message -----
// From: "Marek Pavlu" <pavlu@hwg.cz>
// To: "'HW-news'" <hw-list@list.hw.cz>
// Sent: Friday, August 12, 2005 1:19 AM
// Subject: RE: SW UART18xxx - vysledek
//
//
// Zdravim,
//
// Jen trosku rypalska otazka.
// Co je cilem projektu?
// Ja bych se s tim, pokud neni VAZNY duvod vubec nepral.
// Nebo toho budete delay milionovou serii, ze se Vam to vyplati?
// Radsi tam vrazit PIC s HW UART.
//
//
// S pozdravem,
// Marek Pavlu
//
// // -----Original Message-----
// // From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz]
// On
// // Behalf Of Michal HW
// // Sent: Thursday, August 11, 2005 10:55 AM
// // To: HW-News
// // Subject: SW UART18xxx - vysledek
// //
// // Jak jsem jiz psal pokousim se optimalizovat SW UART. 1200Bd, 20MHz.
// Bezi
// // v
// // preruseni, nezavisle na hlavnim programu. Jedno preruseni trva kolem
// 30
// // cyklu to je zatizeni procesoru 7%. Samotny prijem bere 14-16cyklu.
// Pocet
// // cyklu jsem moc nesnizil, ale mam vyreseno i 3x vzorkovani vstupnich
// dat.
// // Chci snizit pocet cyklu, kvuli vyssi rychlost.Nepriklad na 9600Bd SW
// UART
// // bere 62% vykonu.
// // (Odladeno pouze v MPLABU)
// //
// // Cas_RD1 res 1 ;pro seriový vstup
// // RD1_Faze res 1 ;START/data/STOP
// // RD1_Buf res 1 ;Právě přijímaný BYT
// //
// // RD1_Data res 1 ;Tady se ukláda přijmutý BYT
// // RD1_Bity res 1 ;Vzorkování bitů
// // ;*********************************************************
// // Navrat_ISR macro
// //
// // incf RD1_Faze,F ;Dalsi fáze
// //
// // dcfsnz Cas_TD,F
// // bra Vysilej
// //
// // movff PCLATH_Temp,PCLATH
// // retfie FAST
// //
// // endm
// // ;---------------------------------------------------------
// // Vysli_Navrat_Zvys macro
// //
// // incf TD_Faze,F
// // movff PCLATH_Temp,PCLATH
// // retfie FAST
// //
// // endm
// // ;*********************************************************
// // ;*********************************************************
// // Reset_Page code
// // nop
// // bcf INTCON,GIE
// // goto Start
// // ;*********************************************************
// // ;Přerušení jen CCP1
// // ;Po 520 cyklech a tedy 1200/8 (20M/ CPU(4)/ TMR1(520))
// //
// //
// // ISR_Code code 0x16
// // movff PCLATH,PCLATH_Temp
// //
// // bcf PIR1,CCP1IF
// //
// // clrf PCLATH
// // rlncf RD1_Faze,W
// // addwf PCL
// //
// // ;Start
// // bra Cekej_Start
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Kontrola_Start
// // bra Byt_Ini
// //
// // ;Bit0
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B0
// // bra Konec_Prijmu
// //
// // ;Bit1
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B1
// // bra Konec_Prijmu
// //
// // ;Bit2
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B2
// // bra Konec_Prijmu
// //
// // ;Bit3
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B3
// // bra Konec_Prijmu
// //
// // ;Bit4
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B4
// // bra Konec_Prijmu
// //
// // ;Bit5
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B5
// // bra Konec_Prijmu
// //
// // ;Bit6
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B6
// // bra Konec_Prijmu
// //
// // ;Bit7
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Zapis_B7
// // bra Konec_Prijmu
// //
// // ;STOP
// // bra Konec_Prijmu
// // bra Prijmi_Bit_Ini
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Prijmi_Bit
// // bra Kontrola_Stop
// // bra Zapis_Byte
// // ;---------------------------------------------------------
// // Prijmi_Bit_Ini
// // clrf RD1_Bity
// //
// // Navrat_ISR ;Macro
// // ;---------------------------------------------------------
// // Prijmi_Bit
// // btfsc Data_In
// // incf RD1_Bity,F ;3x se pocita vstupni hodnota
// //
// // Navrat_ISR ;Macro
// // ;---------------------------------------------------------
// // Byt_Ini
// // clrf RD1_Buf
// //
// // Navrat_ISR ;Macro
// // ;*********************************************************
// // ;Spouštění vysilání
// // ;vloženo do příjmu kvůli PCLATH
// //
// // Vysilej bsf Cas_TD,3 ;8
// //
// // rlncf TD_Faze,W
// // addwf PCL
// //
// // bra Vysli_Cekej ;0
// // bra Vysli_B0 ;2
// // bra Vysli_B1 ;3
// // bra Vysli_B2 ;4
// // bra Vysli_B3 ;5
// // bra Vysli_B4 ;6
// // bra Vysli_B5 ;7
// // bra Vysli_B6 ;8
// // bra Vysli_B7 ;9
// // bra Vysli_Stop ;10
// // bra Vysli_Navrat_Ini ;11
// // bra Vysli_Navrat_Ini ;12
// // bra Vysli_Navrat_Ini ;13
// // bra Vysli_Navrat_Ini ;14
// // bra Vysli_Navrat_Ini ;15
// // ;*********************************************************
// // Konec_Prijmu
// // Navrat_ISR
// // ;---------------------------------------------------------
// // ;Cekame na START bit
// //
// // Cekej_Start
// // btfss Data_In ;Výsledek vzorkování
// // incf RD1_Faze,F
// //
// // dcfsnz Cas_TD,F
// // bra Vysilej
// // movff PCLATH_Temp,PCLATH
// // retfie FAST
// // ;---------------------------------------------------------
// // Kontrola_Start
// // btfsc RD1_Bity,1 ;Výsledek vzorkování
// // setf RD1_Faze
// //
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B0
// // btfsc RD1_Bity,1 ;Výsledek vzorkování
// // bsf RD1_Buf,0
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B1
// // btfsc RD1_Bity,1 ;Výsledek vzorkování
// // bsf RD1_Buf,1
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B2
// // btfsc RD1_Bity,2 ;Výsledek vzorkování
// // bsf RD1_Buf,2
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B3
// // btfsc RD1_Bity,3 ;Výsledek vzorkování
// // bsf RD1_Buf,3
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B4
// // btfsc RD1_Bity,4 ;Výsledek vzorkování
// // bsf RD1_Buf,4
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B5
// // btfsc RD1_Bity,5 ;Výsledek vzorkování
// // bsf RD1_Buf,5
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B6
// // btfsc RD1_Bity,6 ;Výsledek vzorkování
// // bsf RD1_Buf,6
// // Navrat_ISR
// // ;---------------------------------------------------------------------
// // Zapis_B7
// // btfsc RD1_Bity,7 ;Výsledek vzorkování
// // bsf RD1_Buf,7
// // Navrat_ISR
// // ;---------------------------------------------------------
// // Kontrola_Stop
// // btfss RD1_Bity,1 ;Výsledek vzorkování
// // setf RD1_Faze
// //
// // Navrat_ISR
// // ;---------------------------------------------------------
// // Zapis_Byte
// // bcf Time_Out_Rx1 ;Přijat byt
// // movlw K_CAS_BYT
// // movwf Rx1_Cas_B
// //
// // movff RD1_Buf,RD1_Data
// // bsf RD1_F
// //
// // clrf RD1_Faze
// //
// // dcfsnz Cas_TD,F
// // bra Vysilej
// // movff PCLATH_Temp,PCLATH
// // retfie FAST
// // ;*********************************************************
// // ;Vysilani dat
// // ;---------------------------------------------------------
// // ;Nemá co vysílat, jsou nové data?
// // ;(Nová data z TD_Buf přesunout do TD_Shift)
// //
// // Vysli_Cekej
// // movff PCLATH_Temp,PCLATH
// // btfsc TD_F
// // retfie FAST
// //
// // bsf TD_F ;Prazdný Bufer
// // bcf TD_Klid ;Vysiláme
// // movff TD_Buf,TD_Shift
// //
// // ;START bit
// // bcf Data_Out
// // Vysli_Navrat_Zvys
// // ;---------------------------------------------------------------------
// // ;Datové bity
// //
// // Vysli_B0
// // btfss TD_Shift,2
// // bcf Data_Out
// // btfsc TD_Shift,2
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B1
// // btfss TD_Shift,2
// // bcf Data_Out
// // btfsc TD_Shift,2
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B2
// // btfss TD_Shift,2
// // bcf Data_Out
// // btfsc TD_Shift,2
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B3
// // btfss TD_Shift,3
// // bcf Data_Out
// // btfsc TD_Shift,3
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B4
// // btfss TD_Shift,4
// // bcf Data_Out
// // btfsc TD_Shift,4
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B5
// // btfss TD_Shift,5
// // bcf Data_Out
// // btfsc TD_Shift,5
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B6
// // btfss TD_Shift,6
// // bcf Data_Out
// // btfsc TD_Shift,6
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// //
// // Vysli_B7
// // btfss TD_Shift,7
// // bcf Data_Out
// // btfsc TD_Shift,7
// // bsf Data_Out
// //
// // Vysli_Navrat_Zvys
// // ;---------------------------------------------------------------------
// // ;Nové data se testují pouze na začátku vysílací rutiny,
// // ;takže pro zjištění konce vysílání se musí zkusit oba bity TD_F a
// TD_Klid
// //
// // Vysli_Stop
// // bsf Data_Out ;Stop bit
// // bsf TD_Klid ;Nevysílá se
// //
// // ; bra Vysli_Navrat_Ini
// // ;---------------------------------------------------------
// // ;Navrat z ISR
// //
// // Vysli_Navrat_Ini
// // clrf TD_Faze
// //
// // Vysli_Navrat
// // movff PCLATH_Temp,PCLATH
// // retfie FAST
// // ;*********************************************************
// //
// // _______________________________________________
// // HW-list mailing list - sponsored by www.HW.cz
// // Hw-list@list.hw.cz
// // http://list.hw.cz/mailman/listinfo/hw-list
// ---
// avast! Antivirus: Odchozi zprava cista.
// Virova databaze (VPS): 0532-3, 10/08/2005
// Testovano: 11.8.2005 20:18:03
// avast! (c) copyright 2000-2003 ALWIL Software.
// http://www.avast.com
//
//
//
//
// _______________________________________________
// HW-list mailing list - sponsored by www.HW.cz
// Hw-list@list.hw.cz
// http://list.hw.cz/mailman/listinfo/hw-list
//
// _______________________________________________
// HW-list mailing list - sponsored by www.HW.cz
// Hw-list@list.hw.cz
// http://list.hw.cz/mailman/listinfo/hw-list
---
avast! Antivirus: Odchozi zprava cista.
Virova databaze (VPS): 0532-5, 12/08/2005
Testovano: 13.8.2005 2:19:41
avast! (c) copyright 2000-2003 ALWIL Software.
http://www.avast.com
Další informace o konferenci Hw-list