Re: PIC16F15225 a synchronní sériový port
Jindrich Fucik
fulda na seznam.cz
Pondělí Duben 29 20:21:53 CEST 2024
Musím to vyzkoušet, já jsem "hobbík" a tak tohle patlám až večer po
zprávách.
Dne 29.04.2024 v 19:26 Petr Labaj napsal(a):
> 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?
>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list