PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : doppelte Auführung der ISR



Furtion
03.01.2009, 01:12
Hi,

wie der Name schon sagt habe ich ständig einen Doppel Interrupt an den
Interruptpins, d.h. wenn ich einen Taster drücke wird die ISR ausgeführt
danach direkt noch mal, ohne das der Taster dedrückt ist. Hier mal mein
Code:



$regfile = "m8def.dat"
$crystal = 14745000
$baud = 115200

Portd.3 = 1

Config Int1 = Falling
On Int1 Take Nosave 'Nosave
Enable Int1
Enable Interrupts

Do

Loop

Take:
Print "h"
Waitms 1000
Return

End

s.o.
03.01.2009, 10:09
sind die Taster entprellt?
(Ich hasse zwar Bascom, aber afaik gibt es einen Entprellfunktion. Glaube die heiß debounce)...

Furtion
03.01.2009, 10:16
Hi,

der Eingang ist nicht entprellt, wobei es sich dabei eigendlich gar nicht um
einen Taster handelt sondern um das TxD Signal, dass in der ISR ausgelesen
wird, ich hatte das hier nur noch zur Vereinfachung mit nem Taster. Ich
vermute ja dass sich der Mega8 merkt das noch ein Interrupt vorliegt, und
den dann darauffolgend ausführt. Wenn das so ist müsste man das iwie
wieder auf 0 setzen...

s.o.
03.01.2009, 10:21
Du kannst ein Interruptanfrage löschen, wenn du die Interterruptflag clearst.

Bauteiltöter
03.01.2009, 12:48
naja, das TxD-Signal ist ja nicht ein Pegel, sondern sieht z.B. so aus


--- --- --- --- ---
--- --- --- --- ---


Da ist es logisch, das der Interrupt mehrmals auftritt.
Ich empfehle den URXC-Interrupt zu nutzern, bei dem hast du das Problem nicht.

MfG

jeffrey
03.01.2009, 13:37
hoi,
du musst dann halt in der isr die interrupts abschalten. aber dann verpasst du natürlich die nächsten impulse.
mfg jeffrey