Die Zauberworte heißen Interrupts und Timer...
->Timer erzeugt Blinkfrequenz, in seinem Compare-Interrupt prüft er ein globales Flag, das vom Hauptprogramm gesetzt wird, um das Blinken zu aktivieren. Wenn Flag gesetzt-> LED-Pin toggeln...
Hallo,
ich fange gerade an mich mit dem ATMega zu beschäftigen und diesen mit C zu programmieren.
Dabei kam jetzt die Frage auf ob es möglich ist Funktionen im µC gleichzeitig ablaufen zu lassen.
Beispiel:
es soll ein Programm ablaufen welches Daten aufzeichnet und bei einem bestimmten ereignis soll eine LED anfangen zu blinken. Nun soll aber die LED in einem Takt blinken (Funktion blinken) und das eigentliche Programm soll trotzdem weiter ablaufen.
Zu Übungszwecken habe ich im Moment einen Takt wie folgt erzeugt:
aber wenn ich das richtig gelesen habe bleibt ja der µC stehen beim Aufruf von delay_ms und somit kann ja nichts weiter ausgeführt werden.Code:int main() { while(1) { PORTD= (1<<PD2); delay_ms(50); PORTD= (0<<PD2); delay_ms(300); } }
Kann mir da jemand sagen ob es möglich ist funktionen parallel ausfüheren zu lassen?
Danke schon einmal
Die Zauberworte heißen Interrupts und Timer...
->Timer erzeugt Blinkfrequenz, in seinem Compare-Interrupt prüft er ein globales Flag, das vom Hauptprogramm gesetzt wird, um das Blinken zu aktivieren. Wenn Flag gesetzt-> LED-Pin toggeln...
Danke,
dann werde ich mal danach suchen und mal schauen ob ich darüber etwas finde was anfängertauglich ist
mfG Henry
Parallel geht nicht, nur nebenläufig. Ansonsten hat uweg Dir ja schon die entsprechenden Stichworte genannt.
Entsprechende Informationen findest Du auch in der wikipedia
http://de.wikipedia.org/wiki/Nebenl%...Programmierung
Wenn du zwei prozesse "gleichzeitig" ablaufen lassen willst (vorrausgesetzt etwas schwieriger wie LED´s Blinken) kann dir ein Multitaskingsystem helfen das läuft auch auf einem 16er wenn man mit dem speicher etwas sorgfältig umgeht
Hallo Zusammen,
ich habe ein ähnliches Problem.
Gerne würde ich eine Drehzahlmessung realisieren, die permanent Werte liefern soll. Desweiteren sollen im "Hintergrund" Temperaturmesswerte erfasst werden. Die Werten soll dann im Controller abgespeichert werden und zusätzlich per RS232 übertragen werden.
Zur Zeit plane ich eine Lösung mit 2 Controllern.
Hat jemand eine Bessere Idee?
DANKE!
GRuss Alex
Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
Bild hier
wie oft pro sekunde sollen die werte denn ausgemessen werden?
es reicht auch sie hintereinander auszulesen....
Die Anzeige (LCD) sowie die Übertragung per RS232 reicht im Sekunden Takt.
Die Frage ist nur, wie realisere ich dann die Drehzahlerfassung? Die soll ja permanet erfolgen.
Und die Daten sollen dann auch noch im Sekundentakt abgespeichert werden. Die Frage ist halt nur, wie lange der Speicher dann reicht!
Gruss Alex
Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
Bild hier
schaue dir bitte nochmal die geschwindigkeit eines avrs an im besten fall 16 MHz
wenn die daten im sekundentakt abgespeichert werden reicht doch eine messung pro sekunde? selbst dann würde sich der AVR noch langweilen
soweit ich weiß kann man den speicher auch erweitern...
ja, ich muss mir das datenblatt nochmal genau anschauen.
wie kann ich den speicher den erweitern?
gruss alex
Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
Bild hier
Lesezeichen