Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Taste über Interrupt abfragen

ATMega-Controller in BASIC programmieren

Postby el_caputo » Mon Nov 10, 2008 12:00 am

So nun bin ich auch mal wieder da.

Ich hätte da mal wieder eine Frage

Ich habe ein teils fertiiges programm das ich jetzt mal zur seite gelegt habe, denn ich möchte ein testprogramm erstellen das später in das hauptprogramm eingebunden wird.
Das testprogramm sieht folgendermaßen aus:

Vorgae ist der Mega 32 :

An Port b.2 (int2) ist eine Taste mit einem Widerstand gegen 5V angeschlossen.
An Port b.0 ist eine LED angeschlossen.

Ich möchte dass ein Programm normal abläuft, bis die Taste gedrückt wird und somit ein Interrupt entsteht. Durch den Interrupt soll dann die LED angehen, eine vorgegebene Zeit leuchten und danach wieder ausgehen. Danach soll wieder das Hauptprogramm ablaufen bis ein erneuter interrupt kommt.

Meine Fragen sind nun:

1.) Wie konfiguriere ich den Interrupt 2 so dass die anderen ext. interrupts nicht aktiv sind sondern nur int 2.

2.) wie sage ich dem controller dass wenn der Interrupt auftritt er in ein unterprogramm springen soll und wie wieder zurück.

Ich wäre sehr froh wenn mir da jemand weiterhelfen könnte.

MfG Frank
el_caputo
 
Posts: 24
Joined: Fri Jan 03, 2014 1:52 pm

Postby burkhard kainka » Tue Nov 11, 2008 12:00 am

Im Kurs, Folge 3 gibt es Beispiele dafür. Mit ON Ovf2 Name ... springt maq rein, mit Return zurück.

Test3:
Dim Ad0 As Word
Dim Ad0_mean As Word
Config Adc = Single , Prescaler = 64 , Reference = Off
Config Timer2 = Timer , Prescale = 64
On Ovf2 Tim2_isr
Enable Timer2
Enable Interrupts

Do
Ad0_mean = Ad0_mean / 25
Print Ad0_mean
Waitms 100
Loop

Tim2_isr:
'800 µs
Timer2 = 56
Ticks = Ticks + 1
Ad0 = Ad0 + Getadc(0)
If Ticks > 24 Then
Ticks = 0
Ad0_mean = Ad0
Ad0 = 0
End If
Return
burkhard kainka
 
Posts: 736
Joined: Thu Jan 02, 2014 10:41 am


Return to BASCOM-AVR-Kurs

Who is online

Users browsing this forum: No registered users and 1 guest