Robert,
mein Retter vor langer Zeit (du erinnerst dich noch?, bin Dir noch immer ein Kasten Bier schuldig ;o), hoffe es geht dir gut.
Zum Thema: ja, es wird noch immer 2x ausgefüht, warum auch immer.
Wenn Du sagst, es hängt am verwakelten Signal, dann Suche ich nicht mehr weiter. Wobei mir sich die Frage stellt, warum dann genau 2 mal nur???
Könnte ja auch 3x prellen??
Wie auch immer, habe deinen Rat befolgt, geht aber leider immer noch nicht.
Wäre es nicht möglich, innerhalb de Routine den INT0 auszuschalten, dann eine Wartezeit, dann code und dann wieder INT0 ein?
Wie auch immer, wenn es kein Codefehler ist, nehme ich einen anderen Taster. Schau mal bitte nur kurz über den Code, das weiß ich bescheid.
Liebe GRüße
popi
Code:$regfile "ATtiny2313.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 24 '****************************************************************************** Enable Int0 Config Int0 = Falling On Int0 Isr_von_int0 Enable Int1 Config Int1 = Falling On Int1 Isr_von_int1 Enable Interrupts Config Portd.6 = Output Config Portb.3 = Output Config Portb.4 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Dim Schleife As Integer Dim Schrittweite As Integer Schrittweite = 1 '****************************************************************************** Do For Schleife = 100 To 250 Step Schrittweite Compare1a = Schleife Compare1b = 350 - Schleife Waitms 10 Next Schleife Schrittweite = Schrittweite * -1 For Schleife = 250 To 100 Step Schrittweite Compare1a = Schleife Compare1b = 350 - Schleife Waitms 10 Next Schleife Schrittweite = Schrittweite * -1 Loop End Isr_von_int0: Waitms 1000 <-- warum wird es überhaupt noch mal angenommen, werden interrupts "gespeichert" If Pind.2 = 0 Then If Schrittweite < 5 Then Incr Schrittweite Pulseout Portd , 6 , 5000 End If End If Return 'folgendes ist zukunft, erst muss INT0 gehen Isr_von_int1: If Schrittweite < 5 Then Decr Schrittweite Pulseout Portd , 6 , 5000 End If Return







Zitieren

Lesezeichen