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