- Labornetzteil AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 28 von 28

Thema: Ext. Interrupt löst nur unregelmässig aus

  1. #21
    Murus
    Gast
    Anzeige

    Praxistest und DIY Projekte
    Ich habs auch schon runtergestrickt, bei der die ISR nur noch eine LED toggelte ==> dasselbe Resultat, die Software ist es nicht.
    Bevor der nächste Int-IRQ kommt, ist der Timerinterrupt schon lange wieder ausgeschaltet.

  2. #22
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Ich meinte nicht die INT-IRQ, sondern andere aktive IRQs (UART, Timer, ADC, AC, etc)
    Disclaimer: none. Sue me.

  3. #23
    Murus
    Gast
    Eben net... Nach dem Ext. Interrupt wird der Timer angeworfen, der lange voro dem nächsten Ext. Interrupt wieder ausgeschaltet wird. Das sind alle Interrupts.

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von Hanni
    Allerdings kann man da ohne Code nicht allzuviel machen.
    Ich zitiere mich hier mal frecherweise selber, da das was hier im Moment läuft irgendwie an Sackhüpfen im Minenfeld erinnert ....
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  5. #25
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich habe auch schon angeboten das Programm mit meinem M16 zu testen. Aber man kann nur dem helfen der sich auch helfen lassen will.

    Hubert

  6. #26
    Murus
    Gast
    Hier der Code:

    $regfile = "m16def.dat"
    $crystal = 6000000


    Dim I As Byte

    ddra.3=1
    Porta.3=0


    Ddrd.3 = 0
    Portd.3 = 1

    On Int1 Lichtschranke

    Mcucr.2 = 1
    Mcucr.3 = 1
    Enable Interrupts

    Config Timer0 = Timer , Prescale = 8
    Enable Timer0
    On Timer0 Zeit
    Stop Timer0
    I = 0

    Enable Int1

    Do

    If I = 10 Then
    Stop Timer0
    I=0
    End If

    Loop

    Lichtschranke:
    Start Timer0
    Timer1 = 0
    Return

    Zeit:
    Toggle porta.3
    Incr I
    Return

    Es ist nun so, dass der Lichtschranken-Interrupt nicht immer ausgeführt wird, manchmal aber schon ==> auch wenn ich den Draht langsam durch die Lichtschranke bewege, wird er zum Teil ausgelöst (flache Flanke). Normalerweise läuft er schnell durch (innert 300 Mikrosekunden ist der LS-Spalt vollständig abgedeckt), aber auch dann wird nicht immer ausgelöst.

  7. #27
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    1. finde ich den Code trotz seiner kürze sehr unübersichtlich.
    2. wofür soll das gut sein: Timer1 = 0
    3. wonach verifizierst du, das der Interupt ausgelöst wurde ?
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  8. #28
    Murus
    Gast
    Timer1=0 stellt ihn auf einen definierten Wert ein.
    Ich seh ja, falls etwas blinkt ==> Interrupt, falls nicht ==> kein Interrupt.

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress