ISR auslösen bei Empfang von bestimmtem Zeichen.

OP #433748
Lesenswert?

Hallo Experten,
kann mir jemand sagen, ob es möglich ist, bei einem M16C62 , 
programmiert in C++ mit HEW4, einen Interrupt auszulösen, sobald ein 
BESTIMMTES ZEICHEN empfangen wird ? Im Moment wird in meinem Programm 
ein DMA-Interrupt ausgelöst, wenn eine BESTIMMTE ANZAHL von Zeichen 
empfangen wurde... (tcr0 = 0x7).
Ist es möglich beim Empfang z.B. eines Enter-Zeichens einen Interrupt 
auszulösen ?
Danke für jede Hilfe.
Tilman

so sieht die Inititlaisierung des DMA und des Counters i.M. aus:

void Readinit(void)
{
dm0sl = 0x0D;      // DMA0 trigger select UART2 RECEIVE
dm0con = 0x2B;      // Repeat ransfer
sar0 = (unsigned long)&u2rb;   // source=adress of uart2 transmit buffer
dar0 = (unsigned long)&tpacket[0];  // destination register to beginning
tcr0 = 0x07;    // set transfer counter to transfer 7 bytes
dm0ic = 0x04;    // set interrupt priority for DMA int to 4
}
Gast #433938
Lesenswert?

sollte die UART nicht bei jedem empfangenen Zeichen einen Int auslösen 
???
Eine Hardware UART arbeitet eigentlich so.
Du brauchst doch dann nur das Zeichen vergleichen.
Wenn ja Int sonst RETI und fertig.
Gast #434113
Lesenswert?

Für eine sehr Stromsparende Implementierung wäre sowas schon nicht zu 
verachten. Dann bräuchte man die CPU erst hochzufahren, wenn das 
richtige Zeichen von der UART empfangen wurde.
Aber ich habe sowas auch noch nie gesehen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren