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


von Papua P. (Firma: pap) (papua)


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

von Olaf D. (Firma: O.D.I.S.) (dreyero)


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

von Michael U. (amiga)


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

von Oliver (Gast)


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

von Falk B. (falk)


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

von Peter D. (peda)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.