Forum: Mikrocontroller und Digitale Elektronik ATxmega - Free RTOS


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Roger P. (presi007)


Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle,

ich bin neue im Forum.
kann mir jemand sagen, ob ich Free RTOS auf ATxmega128 portieren kann ?
Was benötige ich wenn ich auf C Level programmieren möchte also Hardware 
und Entwicklungsumgebung?
Das ist mein erste Projekt im Bereich Embedded.

Viele Grüße
Roger

von gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
erstmal C kenntnisse
dann AVR studio + <winAVR
dann einen Programmer .. zB AVR ISP MKII  wegen PDI
und hoffen das die Xmega lib keine groben fehler enthält

selbst wenn RTOS draufgeht .. ohne ein wort C macht der nix ...
die kleinen betribessysteme nehmen einem nur einen kleinen teil der 
arbeit ab ...
wobie man hier das wort betriebssystem eher falsch ansetzt

von :::: (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was willste mit einem RTOS ? Zuviel Rechenleistung zum Verbraten ?

von Michael G. (linuxgeek) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Roger Emile schrieb:
> Hallo an alle,
>
> ich bin neue im Forum.
> kann mir jemand sagen, ob ich Free RTOS auf ATxmega128 portieren kann ?

Also durch die Tatsache wie und dass Du diese Frage hier stellst: nein. 
Und als erstes Projekt sowieso vollkommen illusorisch.

von Roger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke an Gast , und Michael für die Rückmeldungen
Am besten stelle ich das Problem einfach vor.
Mit einem MCU soll ich ein System steuern und dabei soll ZB:
 - Sensor Daten im Echtzeit abgefragt und ausgewertet werden
 - Motoren gesteuert werden
 - usw........
das System ist auf jeden fall schon komplex
Ich kann in C programmieren und Assembler kenne ich auch bisschen.
Brauche ich unbedingt einen RTOS?

Danke

von Stefan M. (celmascant)


Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du denn unter Echtzeit?
Ein MC, egal wie schnell, wird die Senoren immer der Reihenfolge nach 
abfragen.
Du must halt nur dafür sorgen, das der MC das schnell genug macht.
Ich hbae eine komplette Menüführung auf einem mega32 programmiert und 
merke beim Bedienen nicht, das der MC nach jeder Schleife durchs Menü 
die 8 Analogeingänge jeweils 255 mal abfragt.
So ganz nebenbei berechnet er noch die anzuzeigenden Messwerte.
Ich merke davon nix... ;)

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>das System ist auf jeden fall schon komplex

Das ist eine sehr subjektive Einschätzung. Für bestimmte Leute ist 
LED-Blinken schon sehr komplex.

> - Sensor Daten im Echtzeit abgefragt und ausgewertet werden
> - Motoren gesteuert werden

Kannst du einen Motor in Echtzeit (also ohne Zeitverzögerung) vom 
Stillstand auf Nenndrehzahl bringen? Wenn nicht, hat dein µC wohl eher 
Probleme, die dazwischenliegende Zeit sinnvoll zu verbringen

MfG Spess

von gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Brauche ich unbedingt einen RTOS?


nein ... wenn man die archiktur  und das problem versteht brauchman 
soetwas nicht
es nimmt einem nur etwas arbeit bei der verwaltung der tasks und 
einstellungen der timer ab ,... mehr nicht

diese betriebssysteme sind meiner meinung nach etwas quatsch ...
wenn an sich einige OS anguckt arbeitet dort nur ein kleiner timer in 
dem die anfallenden funktionen in einer vorbestimmten zykluszeit 
abgearbeitet werden ...
dann mach ich sowas lieber in einer main wo das ganze so schnell geht 
wie der µC und der takt es zulassen


wenn man also einen gescheiten taskmanager bastelt( ich hab ein array 
mit funktionszeigern )  kommt man auf ein ähnliches prinzip und kann so 
auch wunderbar mit tasks arbeiten


von meiner seite aus:  RTOS .. nein

und RT in der regelungstechnik ... der µC muss nur so schnell fertig 
sein wie man es brauch .. also in einer vorher berechnetetn zykluszeit

das kann man wunderbar im avrstudio simulieren

von dago (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>das kann man wunderbar im avrstudio simulieren
lool, wenn man ein RTOS drauf hat, simulier mal den 7268ten Taskswitch 
bei 3 Tasks. Dann verpasst man noch was :P

von anonamous (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde Betriebssysteme auf so kleinen Systemen nicht prinzipiell 
ausschließen, vorallem wenn man Preemptives Verhalten benötigt, was mit 
"Eine Große Schleife" oder "Array mit Funktionszeigern" nicht so elegant 
erreichen kann:

Fiktive Anwendung:
Task1: f=  5Hz, Laufzeit 20-40ms
Task2: f=100Hz, Laufzeit 2-5ms
Taskxy (...)
Verschiedene Interrupts: geforderte Reaktionszeit <200µs

Wobei ich zugeben muss, dass man dieses Problem auch durch Timer mit 
Interruptprioritäten lösen kann, allerdings erst ab einem atXmega, die 
alten AVR haben sowas ja nicht.
Kann man nur hoffen, dass man genügend Interruptprioritäten hat.

Alternativ kann man auch Software-Interruptprioritäten basteln...

Für so eine Anwendung halte ich einen kleinen preemtiven taskmanager für 
eleganter.

Arbeite mit FreeRTOS auf einem AT90CAN128. Meine Probleme sind:
Beim Taskwechsel werden ALLE Interrupts blockiert (cli();) und ein 
Taskwechsel dauert etwas -> lange&schwankende Interrupt-latenz.
ansonsten lässts sich damit gut arbeiten.

von Roger P. (presi007)


Bewertung
0 lesenswert
nicht lesenswert
Hi spess53 ,

> Kannst du einen Motor in Echtzeit (also ohne Zeitverzögerung) vom
  Stillstand auf Nenndrehzahl bringen? Wenn nicht, hat dein µC wohl eher
  Probleme, die dazwischenliegende Zeit sinnvoll zu verbringen

Ein Echtzeit System ist nicht was du dich hier vorgestellt hat,bitte was 
über Echtzeit System lesen .....................

> Hi  anonamous,
Wir sind auf die selbe Wellenlängen.
Die Idee mit Interruptprioritäten bzw. preemtiven taskmanager finde gut.
>Alternativ kann man auch Software-Interruptprioritäten basteln...
kannst du bitte mehr dazu sagen ?

MfG
Roger

von anonamous (Gast)


Bewertung
0 lesenswert
nicht lesenswert
bez interruptprioritäten in software: ist eigentlich nicht kompliziert.

Fiktive Anwendung:
*Atmega ohne Interruptprioritäten
*Timer0 ISR soll niedrigere Priorität als die anderen Interrupts haben
*Timer2 ISR soll wichtiger als Timer 0, aber unwichtiger als die 
restlichen ISRs sein.

->

ISR Timer0
* Am Anfang der ISR den Timer0-Interrupt deaktivieren, anschließen 
sei();
* ISR-Code
* dann cli(); und Timer0--Interrupt wieder aktivieren

ISR Timer2
* Am Anfang Interrupt-Zustand von Timer0 sichern, Timer0 und 
Timer2-Interrupt deaktivieren. sei();
* ISR-Code
* dann cli(); und die Interruptzustände von Timer0 und Timer2 wieder 
herstellen.

Die Interruptlatenz für die hochprioren Interrupts wird sich dadurch 
allerdings ein wenig vergrößern, da ja das ganze ge-push und das 
Interruptflag-handling gemacht wird, bevor mit sei(); wieder interrupts 
zugelassen werden.

Besser sind also eindeutig Hardware-Interruptprioritäten

von Helmut R. (heru01)


Bewertung
0 lesenswert
nicht lesenswert
Jetzt aber wieder zum Thema zurück: :-)

gibt es ein RTOS für den XMega?
Ist da bereits was portiert worden? Nur rein interessehalber die 
Frage....

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.