Re: PIC16F15225 a synchronní sériový port

Pavel Hudeček edizon na seznam.cz
Neděle Duben 28 22:49:54 CEST 2024


Mám téměř 0 zkušeností s PIC, ale na AVR, starých od Armelu, i nových od 
Microchipu, jde flush udělat tak, že se dokola čte datový registr, dokud 
nezmizí příznak dokončení předchozího příjmu.
*Flushing the Receive Buffer
*If the RX buffer has to be flushed during normal operation, repeatedly 
read the DATA location (USARTn.RXDATAH and USARTn.RXDATAL registers) 
until the Receive Complete Interrupt Flag (the RXCIF bit in the 
USARTn.RXDATAH register) is cleared.
Ale trochu se obávám, že to platí jen pro async. Pak by to asi 
vyžadovalo si tam ty clocky nějak vyrobit, třeba přepnout na async s 
dostatečně vysokým baudrate:-)

Na starých v ATmega v DS doporučovali i disable/enable, na těch nových 
od Microchipu už ne. Tak bych Microchip PIC zkusil to čtení.

PH

Dne 28.04.2024 v 22:21 Jindrich Fucik napsal(a):
> Ahoj,
>
> mám takový problém, kterému moc nerozumím.
> Mám synchronní sériovou komunikaci, ve které jsem slave. Master 
> generuje clock i data. Protokol je takový, že běží komunikace, clock 
> je generovaný v rozsahu 10 až 500 µs. Občas ale udělá pauzu delší než 
> 8 ms a podle toho slave pozná, že tady začíná nový bajt a má začít 
> odpočítávat začátek.
> Komunikaci čtu pomocí USART v režimu sync a continuous receiver, pauzu 
> delší než 8ms čtu pomocí Timer 2 s externím resetem nastaveným na 
> clock, to funguje správně.
>
> A teď můj problém - nevím jak vyresetovat ten USART, respektive jak mu 
> říci, že má zahodit co doposud nasbíral do posuvného registru a má 
> začít znovu. Myslel jsem, že bude stačit shodit SPEN (disable serial 
> port) a pak jej zase nahodit (enable serial port). To ale evidentně 
> nefunguje.
> Nezná někdo nějakou chytřejší metodu?
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240428/29cbb728/attachment.htm>


Další informace o konferenci Hw-list