
MCP2150 - Microchip се изложиха ама много....
Надявам се да не съм сбъркал раздела. Все пак тоя МСР е просто PIC с ROM...
Та четейки документацията виждаме че тая ИС има UART буфер 64 байта. Това дали може да се пише в него се индицира от сигнал CTS. Каква е точно зависимостта на тоя сигнал от приетите данни не се казва... Това го пише в други два документа - AN927 и AN858.
В AN858 се споменава че има временен прозорец от 11,9ms, който е максималното време за което може да се пише в буфера. За скорост 9600 това са 12 байта (има табличка с другите скорости). CTS е 0 точно за 11,9ms или докато в буфера не се запишат 60 байта (което възникне първо).
Всичко добре си викам - четем CTS и ако е 0 тогава пишем в буфера. Да ама неее.... Част от данните се губят някъде, което означава че хоста предава когато CTS е 1 и всъщност се предават само тези които са успели да се проврат.
Викам си - явно нещо не се чете правилно CTS. Меря с осцилоскопа - 23ms.

. Хм...
Четем AN927. Там на същата тема се споменават 22ms

. А сега де...
Накрая проблема се реши така - четем CTS. Като стане 0, предаваме 12 байта и чакаме 1. Като стане 1, чакаме 0 и наново 12 байта...
Хамалогия... Цял ден с глупости се занимавам...
