www.mikrocontroller.net

Forum: Compiler & IDEs paralleler Programmablauf (zeitkritische) in C (AVR-Studio)


Autor: Papua Papuadive (Firma: pap) (papua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
möchte gerne mehrere dinge auf einmal erledigen....
zb: tastatur (matrix) einlesen,TWI lesen/schreiben,LCD-ausgabe....)
d.h.: die durchlaufzeit darf nicht länger als 30 ms betragen.
wie realisiert man so etwas in C (AVR-STUDIO).
programmiere momentan auf einen mega 32L.
gibt es irgenwo info's, buch od. dergleichen, wo man sich einlesen kann, 
wie so etwas aufgebaut wird.
danke
papua

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Papua,

es gibt ein schönes Buch von Labrosse über uC/OS-II.
Der hat auch eine Firma gegründet: http://www.micrium.com/

Dort bekommst Du den SourceCode für den AVR-Port. Das Buch brauchst Du 
aber trotzdem.

Ein anderes Betriebssystem ist von Adam Dunkels: 
http://www.sics.se/contiki/
oder auch www.freertos.org

Selber entwickeln würde ich nur im Ausnahmefall.

Gruß

Olaf

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Tastatur sollte unkritisch sein, das erledigt ein 10ms Timer-IRQ doch in 
recht wenigen Taktzyklen und sagt Bescheid, welche Taste erkannt wurde.
TWI ist prinzipbedingt relativ langsam, die Frage ist hier, um welche 
Datenmengen in welcher Zeit es geht.
LCD kann eine Rolle spielen, wenn es um ein Grafik-Display geht, auf dem 
oft viel aktualisiert wird.

Was soll nicht länger als 30ms dauern? Der Durchlauf der main mit der 
Abarbeitung der Events? Das liegt in Deiner Hand und hängt davon ab, was 
Du da machen willst.

Ob man dazu ein OS braucht wage ich nach Deinen Angaben nicht zu 
beurteilen.

Gruß aus Berlin
Michael

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Egal, welches BS man einsetzt, schneller wird es dadurch nicht.

Für die paar Aufgaben reicht ein klassischer Programmaufbau mit ein- 
oder zwei Timer-ISR's und einer main-loop locker aus. Ganz ohne 
Echtzeit-Betriebssystem.

Und was genau nicht länger als 30ms dauern darf, ist noch zu definieren. 
Weder Reaktion auf eine Tasteneingabe noch die LCD-Ausgabe benötigen 
solch eine Zykluszeit, TWI läuft eh interruptgesteuert, da bleibt schon 
gar nichts mehr...

Oliver

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Papua Papuadive (Firma: pap) (papua)

>möchte gerne mehrere dinge auf einmal erledigen....

jaja, die Jungend ;-)

>zb: tastatur (matrix) einlesen,TWI lesen/schreiben,LCD-ausgabe....)
>d.h.: die durchlaufzeit darf nicht länger als 30 ms betragen.

Hust
Und dieses Schleichen nennst du zeitkritisch?

>wie realisiert man so etwas in C (AVR-STUDIO).
>programmiere momentan auf einen mega 32L.

Siehe Multitasking, ist ein Beispiel für den AVR dabei als Ansatz.
Ausserdem sollte man sich mit dem Thema Interrupt befassen.

>gibt es irgenwo info's,

http://www.apostroph.de

MFG
Falk

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Papua Papuadive schrieb:
> hallo!
> möchte gerne mehrere dinge auf einmal erledigen....
> zb: tastatur (matrix) einlesen,TWI lesen/schreiben,LCD-ausgabe....)

Tasten einlesen, entprellen und Flanke erkennen im Timerinterrupt, I2C 
im I2C-Interrupt, LCD im Main oder im Hintergrund per Timerinterrupt.
LCD aber nur alle 200ms aktualisieren, sonst wird der Betrachter nervös.


Peter

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.