<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    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.<br>
    <b>Flushing the Receive Buffer<br>
    </b>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.<br>
    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:-)<br>
    <br>
    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í.<br>
    <br>
    PH<br>
    <br>
    <div class="moz-cite-prefix">Dne 28.04.2024 v 22:21 Jindrich Fucik
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:09c23bd7-b76d-4792-8c8a-cc5bad0f47fa@seznam.cz">Ahoj,
      <br>
      <br>
      mám takový problém, kterému moc nerozumím.
      <br>
      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.
      <br>
      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ě.
      <br>
      <br>
      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.
      <br>
      Nezná někdo nějakou chytřejší metodu?
      <br>
    </blockquote>
  </body>
</html>