www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Beispiel von scheduler


Autor: paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

ich möchte gern ein scheduler entwickelt, das jede 2s ein String über 
UART senden kann. Womit ich anfangen soll, habe ich keine Ahnung. Ich 
habe paar Beispiele hier im Forum gesehen aber finde ich sehr 
kompliziert für einen Anfänger.
Bitte kann jemanden mir helfen oder Hinweise geben.

Danke

MFG

Paul

: Verschoben durch Moderator
Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) Auf welchem Rechenknecht soll das laufen und womit programmierst du?

2) Klappen diese Teilaufgaben bereits:

2a) String über UART ausgeben

2b) Timer für 2s Intervalle

2c) Scheduler

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

zum Senden eines Strings alle 2s über UART brauchste keinen sceduler, 
sondern nur nen Timer Interrupt.

Ansonsten:
Für den Einstieg hab ich mal nen supereinfachen kooperativen 
Funktions-Sceduler geschrieben, also Funktionen werden nach Prio 
aufgerufen und müssen sich selbst wieder beenden. War interessant, wie 
sehr das dingen schon die Arbeit auf einem uC vereinfachte und 
entzerrte.

Mittlerweile arbeite ich mit Keil RTX, und will ein RTOS nicht mehr 
missen auf nem uC :-)


VG,
/th.

Autor: paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

a) Ich programmiere in C den Mikrocontroller AT90CAN128

b) Zur Zeit Sende ich ohne Problem String über UART. Ich habe auch ein 
Timer konfiguriert aber für die Überwachung von CAN-Kabel.

c) Mein Programm hat als Aufgabe: String über UART zum empfangen und 
weiter über CAN-Bus zu senden.

d)Jetzt möchte ich ein bestimmtes String jedes 2s über UART senden und 
gleichzeitig(parallel) mein aktuelles Programm laufen lassen.

e) Ich vermute dieses Parallismus ist der Scheduler oder?

Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann das mit einem Scheduler machen, muss es aber nicht.

Wenn du bereits einen Timer mit feinerer Auflösung als 2s laufen hast, 
könntest du einen UART-Puffer für den 2s-String anlegen und aus dem alle 
2s ausgeben. Idealerweise nicht den kompletten String auf einmal, 
sondern in einzelne Zeichen oder Zeichenpakete gestückelt und per per 
UART-TX-Interrupt, so dass dein Hauptprogramm öfters zum Zug kommt.

Lies mal auf Wikipedia den Artikel über Scheduler. Da sind ein paar 
Fragen zu Realtime und Prioritäten drin, die du dir bei deinem System 
auch stellen musst.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Multitasking

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.