Forum: Mikrocontroller und Digitale Elektronik AVR mit Multitasking?


von Jens (Gast)


Lesenswert?

Hallo!
Bin noch Anfänger in sachen Mikrocontroller und Programmieren.
Nun habe ich es geschafft,
ein Display anzusteuern.
Nach drücken einer Taste erscheint ein Text für 3s,
und dann wird das Display gelöscht.
Diese Zeitverzögerung habe ich in C mit delay programmiert.

Nun mein Problem: Der Kontroller soll ständig kurze Impulse ausgeben.
Wenn ich das nun mit dem Display einbinden möchte,
geht das natürlich nicht, da das ganze Programm dann für die 3s steht.
Wie kann ich das Problem lösen, dass sowohl Impulse ausgegeben werden,
als auch die Zeitverzögerung funktioniert?
Mit einem Timer und und einer Schleife die hochzählt?
Ein kurzes Codebeispiel in C wäre echt super,
da ich noch nie einen timer benutzt habe.
Habt schonmal vielen Dank!
mfG
Jens

von Peter D. (peda)


Lesenswert?


von harry (Gast)


Lesenswert?

hi,

elegant könntest du das mit einem timer-interrupt lösen.
der timer sprint immer bei einem überlauf in die von dir anzugebende
routine und führt den code aus, der hinterlegt ist. den timer kannst du
aus der betriebsfrequenz des avr speisen oder durch ein externes
clock-signal, muss dann in der configuration festgelegt werden.

wenn du sysclock (= quarz oder interner oszillator) verwendest, kannst
du die intervalle mit dem prescaler und dem 'vorladewert' des timers
festlegen.
da der timer (8bit bei 256, 16bit bei 16536) überläuft und der
interrupt ausgelöst wird, kannst du z.b. 'timer0 = 240' vorgeben,
dann sind es nur 16 ticks bis zum nächsten überlauf -> interrupt.
must nur aufpassen, dass der code innerhalb dieser zeitspanne
abgearbeitet werden kann.

gruss, harry

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.