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...)
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
Es tut mir leid, da habe ich mich falsch ausgedrückt. Ich soll eine Signalfolge nach einem bestimmten Rhythmus an 4 Leitungen raus geben.
Also zeitliche Steuerung. Getreu dem Motto, dass jedes ordentliche Programm in irgendeiner Form einen Timer braucht, bist du auf einem guten Weg.
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.