Hallo zusammen, mein Atmega8 soll ca. alle 100 µSekunden einen Porteingang prüfen und dann per incrementellem counter zählen wie lange der Port diesen Zustand behält. Bei einem Wechsel des Zustands soll er dann von 0 anfangen zu zählen. Dies würde ich in einem ISR des Timers2 machen (Timer, Prescaller, Compare, etc. sind bereits auf die MHz des Quarzes und die Zeit abgestimmt). Nun zu meiner Frage, nach jedem Zustandwechsel soll er ebenfalls per UART den Zählerstand ausgeben. Sollte die Ausgabe auch in dem ISR erfolgen oder besser im main? Oder wie würdet Ihr das lösen? Andere Aufgaben erledigt der Atmega8 im Moment nicht, also könnte man evtl. alles per polling im main erledigen, jedoch wäre dann der 100 µSekunden Interval nicht so einfach zu bewerkstelligen. Danke für Anregungen. VG
@pico: maximal ein Zustandswechsel kann während der messphase von 100µS auftreten.
dann würde ich einen zweiten timer benutzen, in dessen isr geprüft wird ob es was zusenden gibt und ggf dann auch sendet! bedenke aber auch, das das senden über den uard zeit frißt. 100µs -> 10khz selbst wenn du nur ein byte sendest sind das mit start und stop bit in der summe 10 bit. dh du mußt mit viel viel mehr als 100kbaud senden um die andere isr nicht zu behindern! gruß pico
@pico: würde es nicht mehr sinn machen im main per uart zu senden? dadurch könnte die timer2-isr immer zeitgenau messen und sogar bei bedarf das main inklusive uart unterbrechen. uart ist mit 115200 kbaud angbunden und es wird maximal 1 byte pro andzahl der zustandswechsel übertragen.
kanste machen, aber nur wenn der µc nichts anders tun soll als zeitmessen und daten senden! gruß pico
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.