www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer in eCos unumgänglich?


Autor: StefL_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

habe derzeit ein Problem mit eCos auf einem ARM946. Grundsätzlich ist 
die Aufgabe nicht schwer. Ich muss eine Variable alle 100µs überprüfen, 
sobald sich diese ändert, das ist ca. alle 4ms der Fall, muss eine 
Schleife in einem Task durchlaufen werden. Dies soll möglichst schnell 
nach Änderung der Variable geschehen, <30-50µs.

Lösung mit Task:
Ich brauche einen Task der alle 100µs ausgeführt wird. Ich habe aber ein 
bereits vorkonfiguriertes eCos das ich verwenden muss, wobei ich die 
Einstellungen die eCos betreffen nicht ändern kann.
Eine Pause von 1ms bekomme ich ohne Probleme mit cyg_thread_delay(1); 
hin.
Das ich bei einer 1 in cyg_thread_delay genau 1 ms Pause bekomme liegt 
an den Parametern: CYGNUM_HAL_RTC_NUMERATOR und 
CYGNUM_HAL_RTC_DENOMINATOR, oder? Aber wie mache ich jetzt eine Pause 
von 100µs???

Lösung mit Timer:
Am Anfang dachte ich mit einem Timer Interrupt wäre es sehr einfach, es 
stellte sich aber etwas anderes heraus. Mein Plan war es alle 100µs 
einen Timer Interrupt auszulösen, darin wird die Variable verglichen. 
Sobald sich diese verändert hat wird von der ISR in eine DSR gesprungen. 
Diese gibt eine Semaphore frei auf die im Task gewartet wird. Nach Plan 
sollte die Schleife im Task dann nach Änderung der Varibale durchlaufen 
werden. Soweit der Plan, bei einem Test stellte sich allerdings heraus 
das es bis zu 150µs, vom Aufruf der DSR bis zum Start der Schleife im 
Task, dauern kann.

Hat hier jemand eine Idee wie man das Problem lösen könnte.

Vielen Dank schon mal.

Autor: StefL_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist niemand hier der mit eCos arbeitet???

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht mal eventflags oder condition variables ausprobieren; könnte 
sein das die schneller sind als Semaphoren.

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
StefL_ schrieb:
> Ist niemand hier der mit eCos arbeitet???

Fast ein ganzes Jahr um, niemand hat geantwortet und jetzt weckt einer 
diesen Toten auf...

Ich sehe jedes Jahr so ein paar traurige Leute auf der Embedded in 
Nürnberg, die sich um eCos verdient machen wollen, aber auf meine Frage, 
ob man dieses tolle OS denn inzwischen auch für Fujitsus 32 Bitter 
compilieren könne, haben sie bislang stets verneint. Das sagt mir genug: 
Da ist kein Leben drin.

W.S.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.