www.mikrocontroller.net

Forum: GCC Korrekter Programmaufbau


Important 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.
Autor: Rainer (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi,

wie würdet Ihr das Programm aufbauen:

Aufgabe:
-bestimmte Signalfolge an 4 Pins anlegen
-an 2 AD-Pins den anliegenden Wert mehrfach messen, umrechnen und 
anzeigen

Überlegung bis jetzt:
-Interruptfunktion, die die Signalfolge steuert und dementsprechend die 
Messung aufruft
-in der Main wird jede Sekunde eine Funktion aufgerufen, die den 
aktuellen Messwert umrechnet und anzeigt

Ist dies OK? Oder gibt es einen besseren Programmaufbau (sparsamer, 
sicherer...)

Autor: Oliver (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Nun, wenn das die gesamte Aufgabenstellung ist, brauchst du dich um die 
Eingabepins gar nicht zu kümmern. Eine Signalfolge anlegen kann man da 
ja jederzeit, passieren soll damit ja nichts weiter ;)

Also einfach alle 100ms eine ADC-Messung machen, und anzeigen. Fertig.

Oliver

Autor: Rainer (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Es tut mir leid, da habe ich mich falsch ausgedrückt. Ich soll eine 
Signalfolge nach einem bestimmten Rhythmus an 4 Leitungen raus geben.

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

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Also zeitliche Steuerung.


Getreu dem Motto, dass jedes ordentliche Programm in irgendeiner Form 
einen Timer braucht, bist du auf einem guten Weg.

Autor: Rainer (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Die Frage ist, ob ich z.B. die Messung in der Main aufrufe, oder vom 
Timerinterrupt aus.
Also läuft mein Programm standardmäßig von der main-Fkt aus, nur die 
Signalfolge wird im TimerInterrupt gesteuert?

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

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Rainer schrieb:
> Die Frage ist, ob ich z.B. die Messung in der Main aufrufe, oder vom
> Timerinterrupt aus.

Ist es im kleinen µs Bereich zeitkritisch bzw. wie aufwändig ist die 
Generierung?

Wenn zeitkritisch bzw. einfach zu implementieren: Ab in die ISR damit.

> Also läuft mein Programm standardmäßig von der main-Fkt aus, nur die
> Signalfolge wird im TimerInterrupt gesteuert?

Ist zb eine Möglichkeit.

Autor: Pako (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ein Vorschlag:

Synchronisiere die main-Schleife mit einem festen Zeitintervall, z.B. 
alle 10ms. D.h. die Schleife wird alle 10ms einmal durchlaufen.

Dann kannst alle Aufgaben, die zyklisch und in einem festen Intervall 
erfolgen müssen, in diese Schleife hineintun.

Nur die Aufgaben, die eine schnelle und sofortige Reaktion benötigen, 
kommen in die ISR.


Beispiel:
Du mißt einen Wert und gibst in einmal pro Sekunde mit printf über einen 
UART aus.
-> Das printf() kommt in die Hauptschleife
-> Das Füttern des UARTs kommt in den UART-TX-Interrupt.

PS: Überleg Dir gut, was wirklich eine sofortige Reaktion benötigt. Das 
Abfragen eines Buttons muß nicht über Interrupt erfolgen.

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net