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 }
Das wäre ein spezielles Feature der Hardware-UART Deines Controllers. Ob das geht oder nicht hängt nicht vom verwendeten Compiler ab, sondern eben von der UART selbst. Ein Blick ins Datenblatt/Programmierhandbuch sollte Aufklärung bringen (ich kann Dir inhaltlich nicht weiterhelfen, da ich Deinen Controller nicht kenne).
OK. Trotzdem Danke, ich werd mal das Datenblatt checken, sind ja nur 600 Seiten :-))
Das Datenblatt hat sicherlich ein Inhaltsverzeichnis, und die Funktion der Hardware-UART wird in einem entsprechend benannten Abschnitt des Datenblatts beschrieben sein. Die 600 Seiten musst Du daher gar nicht alle durchlesen.
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.
Ja, natürlich; ich habe das jetzt auch so gemacht. Nur dachte ich noch heute Vormittag, dass dieses Procedere Speicher- und Rechenzeit fressen würde - wenn es direkt gegangen wäre, wäre es halt sehr nett gewesen, aber so geht es jetzt auch. Danke.
weis ja nicht wie schnell Deine Kiste ist, aber 5 oder 6 Befehle Zeit hat man doch immer übrig....
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.