PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich einen Interrupt benutzen?



MartinITM
24.08.2004, 23:28
Hallo,

ich würde gern Interrupts bei einem ATmega16 in Bascom benutzen.
Leider bin ich bis jetzt auf kein einfaches Programm gestoßen, wo ich sehen konnte, wie dies funktioniert.

Vielleicht hat hier einer Links für mich, wo ich sowas nachlesen bzw. sehen kann.

Danke

mfg Martin

24.08.2004, 23:46
Hi

Ich kann dir nen Beispiel geben, wenns dir hilft:

$regfile = "m8def.dat"
$crystal = 14745600

config int0 = rising

on int0 int0_isr

enable interrupts

do
loop

end

int0_isr:
return

das programm tut nichts, außer auf den int0 horchen.
wenn der nun von logisch 0 auf logisch 1 wechselt, dann wird die routine int0_isr ausgeführt.

Falls du Fragen hast, kannst du gerne Fragen!

Martin

MartinITM
24.08.2004, 23:59
wie, das ist alles?
"bin ich schon drin? das ist ja einfach"
super danke für die schnelle antwort

was bewirkt config int0 = rising
könnte ich das auch
config meinint = rising benennen oder muss das int0 heißen
und rising ist eine konstante?

Frank
25.08.2004, 00:06
Ich sag ja immer das man in Basic am wenigsten Quellcode für die Aufgaben benötigt.

Es muss INT0 oder INT1 heißen (je nachdem wieviel Interrupts der AVR hat) . Und RISING bedeutet das der Interrupt bei fallendem Pegel (von 5V nach 0V) ausgelöst wird.

MartinITM
25.08.2004, 11:30
ahjo
gibts dann auch einen Interrupt von 0V auf 5V ?

25.08.2004, 12:40
währe dann ja config int0 = falling.
Versuch dich mal in der Bascomhilfe zurechtzufinden (ist manchmal etwas umständlich). Da sind die Befehle mit kleinen Programmschnipseln erklärt. Und wenns nüscht hilft - einfach mal am µC direkt ausprobieren oder den Simulator benutzen.

Frank
25.08.2004, 12:44
Sorry, RISING ist steigend (von 0 nach 5V) und Falling ist von 5V nach 0V.
So stimmts!

09.09.2004, 06:35
Hi Frank,
bedeutet "RISING" nicht steigender Pegel (0V nach 5Volt) und "FALLING"
fallender Pegel (5Volt nach 0Volt)?
Berichtige mich, wenn ich mich täusche.

cu Matula

09.09.2004, 06:38
Sorry, mein Posting zurück !! Ist ja schon beantwortet worden.....

cu Matula

RCO
12.10.2004, 13:16
Ist es möglich nur einen bestimmten port zu fragen?
Also z.B. sind drei US - sensoren angeschlossen an Pin PortB.0 bis B.2.
Nur da soll gefragt werden.

MFG Moritz

E-Fan
12.10.2004, 14:35
Ich werd zwar aus Deinem Post nicht so schlau, vermute aber mal, das Du wenn ein externer Interrupt verursacht wir, nur die Pegel an diesen Ports einlesen willst. !??!?
Das brauchst Du doch nur in die Routine reinzuschreiben.
Wenn ich falsch liege, dann schau mal nach "Enable, Disable, Start und Stop" und der Bascom Hilfe.
Die Befehle brauchste für die IRQ's.

RCO
12.10.2004, 19:59
Tut mir leid, wenn ich das etwas unverständlich geschrieben habe.
Also nochmal:
Ich wollte nur wissen, ob man einen bestimmmten Port, z.B. portD.5, auf Flankenwechsel hin überwachen kann, oder ob bestimmte Ports je nach Controller vorgegeben sind, oder, Fall NR 3, ob alle Interrupts, also alle Ports, die Routine auslösen.

Ich wollte eine Geschwindigkeitsmessung für einen Motor bauen, habe das Problem aber mit Pulsein gelöst. Auch wenn das immer auch sehr fragwürdige Werte liefert.

MFG Moritz

RCO
13.10.2004, 11:16
Hat sich erledigt: