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