[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