paralleler Programmablauf (zeitkritische) in C (AVR-Studio)

OP (Firma: pap) #1279236
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
(Firma: O.D.I.S.) #1279272
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
#1279338
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
Gast #1279360
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
#1279474
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
#1279496
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.