PIC16F15225 a synchronní sériový port

Jindrich Fucik fulda na seznam.cz
Čtvrtek Leden 11 20:32:16 CET 2024


Ahoj,

mějme aplikaci, kde master a slave komunikují pomocí synchronní sériové 
linky. Celkem nic zvláštního, až na jednu drobnost. Protokol říká, že 
pokud by se ztratil nějaký bit, tak vlastní sériový port nemá šanci to 
poznat. Proto je v definovaných okamžicích na lince ticho delší než X 
milisekund, kdy se všichni zresetují a vědí, že toto je nový začátek.
To je celkem dobré a na tomto procesoru docela hezky řešitelné. Prostě 
si nastavím časovač na těch X milisekund, který se spouští sestupnou 
hranou CLK signálu (aktivní hrana komunikace) a když dojde k naplnění 
časovače, vím, že mám resetovat komunikaci.
Drobný nedostatek je v tom, že je to každých X milisekund, bez toho, aby 
se mezitím muselo komunikovat. Tedy časovač dá signál i za 2*X, 3*X,... 
milisekund. A tady už moc nepoznám, jestli dočlo k tomu, že prostě 
nastal násobek, nebo jestli mezitím prošla nějaká poškozená komunikace, 
která se načetla jako pár bitů a právě posunula ten port.

Pro asynchronní komunikaci je to jednoduché, vezmu bit BAUD1CON,RCIDL. 
Ten říká, že receiver je aktuálně idle. Ale ten bit zdá se nefunguje v 
synchronním režimu.

Mám si tedy hledat ještě nějaký další spouštěč, podle kterého bych 
poznal, v jakém stavu je komunikace?

Díky za nápady


Další informace o konferenci Hw-list