AVR mit Multitasking?

Gast #85689
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
Gast #85691
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren