- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Int0 / Int1 Problem ( Prellen )

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    42
    Beiträge
    318

    Int0 / Int1 Problem ( Prellen )

    Hallo zusammen,

    ich habe mich nach mehreren anderen Bascom Projekten an den Interrupts versucht. Leider funktioniert die Sache mit Int0 und Int1 nicht wirklich. Hier erstmal die Aufgabe, welche ich zu lösen versuche:

    Ich habe eine Kette. Jedes Kettenglied wird über einen Initiator erkannt ( 24V über Optokoppler 5V ). Diesen Initiator habe ich an Int0 angeschlossen. Wenn ich die Kette laufen lasse, und folgenden Code verwende funktioniert das sehr gut.

    Code:
    $regfile = "m644pdef.dat"
    $crystal = 18432000
    $baud = 19200
    
    Config Pind.3 = Input
    Config Pind.2 = Input
    Pind.3 = 1
    Pind.2 = 1
    
    Config Int0 = Rising
    On Int0 Takt
    Enable Int0
    
    Dim takter as Word
    
    Main:
    nop
    goto main
    
    Takt:
    incr takter
    print takter 
    return
    Bei jedem Kettenglied wird die Variable Takter hochgezählt. Ich bekomme dies auch im Terminal angezeigt. An Int1 habe ich einen weiteren Initiator angeschlossen. Dieser erkennt die Kettenglieder, an denen ein weiteres Stück Metall angebracht ist ( Referenzkettengliederkennung ). Den Signalverlauf habe ich angehängt. Zuerst kommt das Signal an Int1. Kurze Zeit danach kommt Int0. Die Signale fallen in umgekehrter Reihenfolge wieder ab. Zuerst Int0 = 0 dann kurze Zeit danan Int1 = 0.

    Bei folgendem Code wird Int1 sporadisch auch 2x ausgelöst:
    Code:
    $regfile = "m644pdef.dat"
    $crystal = 18432000
    $baud = 19200
    
    Config Pind.3 = Input
    Config Pind.2 = Input
    Pind.3 = 1
    Pind.2 = 1
    
    Config Int0 = Rising
    On Int0 Takt
    Enable Int0
    
    Config Int1 = Rising
    On Int1 Referenz
    Enable Int1
    
    Enable Interrupts
    
    Dim Takter As Word
    Dim referenz as Word
    
    
    
    Print "Booting"
    
    Do
    nop
    Loop
    
    
    
    Takt:
    Incr takter
    Return
    
    Referenz:
    If Pind.3 = 1 Then
       print "referenz erkannt"
    End If
    
    Return
    Ein Hardwareproblem schließe ich vorerst aus, da die Signale über Hutschienen Optokoppler getrennt sind. Mir kommt es so vor, als würde Int1 prellen. Es wäre nett, wenn Ihr mal über den Code schauen könntet, ob der Fehler im Programm zu finden ist.

    Danke und Gruß
    BlaueLed
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken takt.png  

Berechtigungen

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

12V Akku bauen