C167 Ueberlastungserkennung

Moin, zusammen,

ich verwende einen C167-Mikrocomputer fuer eine komplexe Abtastregelung. Die Abtastung steuere ich mit Interrupts durch einen Timer. Wie kann ich im Programm erkennen, dass das Abtastintervall zu kurz ist und der Mikrocomputer nicht mehr in der Lage ist, andere Aufgaben zu erfuellen?

Vielen Dank, Christian

Reply to
Christian Keck
Loading thread data ...

Christian Keck schrieb:

Hallo Christian,

am Eintritt in die Interruptroutine einen Port setzen und am Ende wieder löschen. Mit dem Scope siehst du genau, wie lange du im Interrupt bist und wieviel Zeit deinen restlichen Tasks bleibt.

Gruss Robert

Reply to
Robert.Hammann
  • simpelste Lösung ist während Interrupt einen Portpin setzen und am Oszilloskop nachsehen. So sieht man sporadischen Überlauf zwar nicht. Man kriegt aber gutes Gefühl wieviel Luft man noch hat.
  • ich kenne den Controller nicht. Aber eventuell muß man am Beginn des Interrupts das Interruptflag des Timers löschen. Eventuell kann man vor Rückkehr aus Interrupt das Register nochmal lesen und nachsehen ob das Flag bereits wieder gesetzt ist. Was offensichtlich Überlauf anzeigt.

  • wenn die Interruptroutine unterschiedlich lange Laufzeit hat ist eine FIFO im RAM oft nützlich. D.h. der Interrupt schaufelt nur Daten in die FIFO. Das Hauptprogramm liest die FIFO und führt die Berechnung aus. Beispiel wo das einfach geht wäre der RFID-Leser in
    formatting link
    Heft 10 S. 11 weil dort nur der A/D-Wandler gesampelt wird aber keine Daten in Echtzeit zurückgegeben werden müssen. Bei einem Regler würde diese FIFO zwar verhindern das Samples verlorengehen aber zu starkem Phasenjitter am Ausgang führen. Wenn man vor D/A-Wandler zweite FIFO setzt ist man zwar den Jitter los, hat aber konstant lange Totzeit was für Regler auch Gift ist. Eine FIFO am Eingang und Jitter kann guter Kompromiß sein.

MfG JRD

Reply to
Rafael Deliano

Christian Keck schrieb:

=2E=20

Hallo,

f=FChre noch eine zus=E4tzliche Interruptroutine auf niedrigster Priorit=E4= t=20 ein, als Idle Routine. Diese Routine soll alle noch freie Prozessorzeit=20 belegen. Jetzt m=FCssen wir nur noch von aussen messen k=F6nnen wann diese Idle=20 Routine aktiv ist und wie lange jeweils. Da gibt es verschiedene=20 M=F6glichkeiten, die Routine kann ein Portbit st=E4ndig togglen, oder ein= =20 nachtriggerbares Monoflop passender Zeitkonstante triggern.

Wenn Du das im Programm selbst erkennen willst m=FCsstest Du die Realzeit= =20 mit der von der Idleroutine verbrauchten Zeit vergleichen, wenn die=20 Idleroutine keine oder sehr wenig Zeit verbraucht ist es zu eng.

Bye

Reply to
Uwe Hercksen

Christian Keck schrieb:

Einen Timer beim Eintritt und beim Austritt in die Abtastroutine lesen, Differenz bilden und in Relation zum Abtastintervall setzen. Es sollte allerdings nicht grade der den Int-auslösende Timer sein, ansonsten den Interrupt wieder freigeben, falls erforderlich und eine Semaphore einbauen, die ggf. einen Überlauf detektiert ohne erneut in die Routine zu laufen. Das ist für dan Fall, dass die Abtastroutine länger als das Abtastintervall ist.

Gruss Udo

Reply to
Udo Piechottka

Hallo,

Bei den meisten Controllern kann man das Interrupt-Flag am Anfang der ISR lsöchen (muß man ja eh) und kann dieses dann am Ende der Routine vor dem Rücksprung nochmal abfragen: Ist es dort bereits wieder gesetzt, gab es einen Überlauf. Wenn man dann eine Portleitung setzt, sieht man auch Überläufe.

Tom

--

------------------------------------------------------
Bitte beachten - AntiSpam-Filter: *.com, *.cn, *.br, *.kr, *.net, *.pl, 
*.ro, *.ru
Reply to
Thomas Langhammer

Sorry, keine Antwort auf Deine Frage, sondern selber ne Frage:

gibt's für den C167 Evaluation-Boards, so daß man mit dem Teil mal ein bischen herum daddeln kann?

Und wenn ja, wo gibt's die Teile?

Gruß, Oliver

Reply to
Oliver Bandel

Hi,

formatting link
ist immer einen Blick Wert, wenn's um Eval-Boards geht

Gruss Robert

Reply to
Robert.Hammann

Dazu muss ich aber sagen hinzufuegen, dass das eigentliche Hindernis fuer das unverbindliche Rumdaddeln nicht die Verfuegbarkeit von fertigen Boards ist, sondern der Mangel an kostenguenstigen Compilern. Die kommerziellen Compiler sind wegen der geringen Anzahl potentieller Kunden ziemlich teuer, die Evaluationsversion des von mir benutzten Produkts reicht nur fuer kleinste Programme oder Konzeptstudien aus.

Christian

Reply to
Christian Keck

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.