Re: PIC16F15225 a synchronní sériový port

Petr Labaj labaj na volny.cz
Pondělí Duben 29 19:26:13 CEST 2024


A to navrhované přeprogramování sync-async-sync nezabralo?
Pokud by ten rozjetý byte neodstranil, tak při nastavení na async a 
nějaký ďábelský baudrate by ho musel "dopřijímat" velmi rychle, a pak by 
se prostě přečetl.

PL

******************

Dne 29.4.2024 v 16:35 Jindrich Fucik napsal(a):
> Ahoj,
>
> obávám se, že tady se nám sešlo "flush" a "reset". Flush se používá pro vyčtení všech dat, ale to není můj případ. Tedy není to nic co by mne trápilo. Já potřebuji reset, který řekne, že to co přijde od teď tak bude určitě bit 0 od dalšího bajtu. A pokud máš něco v posuvném registru, tak to zahoď, nebo i klidně odevzdej, ale už v tom nepokračuj, protože tohle prostě bude nový začátek.
>
> Mimochodem - ve světě SPI je tohle vyřešeno použitím vstupu "Enable" nebo "Select" nebo tak. Ale bohužel SPI má obrácené pořadí bitů. A je docela zvláštní, že na sériovce to není nějak řešené. Asi se špatně koukám nebo co.
>
> ---------- Původní e-mail ----------
> Od: Pavel Hudeček <edizon na seznam.cz>
> Komu: hw-list na list.hw.cz
> Datum: 28. 4. 2024 22:54:12
> Předmět: Re: PIC16F15225 a synchronní sériový port
>
>      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ší informace o konferenci Hw-list