[elektro] PIC TX interrupt (C nyelven)

Móczik Gábor pm_levlista at progzmaster.hu
Wed Dec 18 01:01:52 CET 2013


2013.12.17. 23:53 keltezéssel, Gábor írta:
> PIC-et használókat szeretnék megcélozni a következő kérdésemmel. Van egy 16bites mikrovezérlőm (PIC24F), UART modullal RS232 kábelen fogadok adatokat interruptos rendszerben. Az adatokkal feltöltök egy tömböt, ellenőrzöm, feldolgozom stb. Ez tökéletesen működik. Viszont a válaszüzenet azonban nem megy. Lenne egy 10 elemű tömböm, amit el kellene küldenem a PC-nek. Próbálkoztam már pár dologgal, eddig sikertelenül. Tömb feltöltés után a  TXIE-t kellene 1be állítanom, ami megszakítást generál és a megszakításkezelő küldené el az adatokat? Lehet valamit nem veszek észre. UART beállításnál mi az, amit TX interrupthoz be kell állítani, a megszakítás engedélyezés és megszakításbit törlésén kívül? Kérhetnék esetleg egy példakódot (a küldésről, esetleg az UART TX interrupt beállításokról)? Nagyon szépen köszönöm!

24F-en nem tudom van-e valami trükk, de a 8 bites verziókban csak a TXIE 
bitet kell engedélyezni.

Alapvetően semmilyen perifériában semmit nem kell állítani az interrupt 
működéshez, az xxIF bit beáll minden esetben. Ha a hozzá való xxIE be 
van állítva akkor megkapja a CPU az interruptot, ha nem akkor nem, de 
pollingolni lehet az xxIF bitet.

Arra figyelj, hogy még a TX interruptban ellenőrid a küldés után, hogy 
lesz-e még további adat, ha nincs, akkor ott tiltsd le a TXIE-t.
Ha úgy lépsz ki a TX interruptból, hogy nem tiltod le, és a perifériát 
sem szolgálod ki, kvázi lefagy a rendszer. Az történik, hogy amint 
kilépsz, azonnal beüt újra az interrupt, mivel a TXIF továbbra is 1 
(egészen addig, amíg fel nem töltöd a TXREG-et).



More information about the Elektro mailing list