-         
Ergebnis 1 bis 5 von 5

Thema: Problem mit den interrupts bei Bascom

  1. #1

    Problem mit den interrupts bei Bascom

    Anzeige

    tach allesamt,

    Ich versuche gerade mit einem mega8 in Bascom eine schaltung zu realisieren, die standartmässig die rote LED auf meinem myAVR Board leuchten lässt und sobald man den Taster drückt, für die Dauer des Drucks die rote abschaltet und die grüne erleuchten lässt.
    Das will ich über die externen interrupts realisieren.
    Hier mal mein Code, das problem schildere ich unten:
    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Dim Pressed As Bit
    Pressed = 0
    
    Config Int0 = Falling                                       'INT0 wird aufgerufen, sobald der Taster gedrückt wird.
    Enable Interrupts
    Enable Int0
    Config Portd = Input
    Portd = &B11111111                                          ' Pull-up Widerstatände aktivieren
    Config Portb = Output
    Portb = &B00000001                                          'nach reset soll rot leuchten
    
    On Int0 Isrint0
    
    Isrint0:
    If Pressed = 0 Then
       Portb = &B00000010                                       'grüne LED anmachen (an PinB.1)
       Config Int0 = Rising
       Pressed = 1
    Elseif Pressed = 1 Then
       Portb = &B00000001                                       'rote LED wieder anmachen (an PinB.0)
       Config Int0 = Falling
       Pressed = 0
    End If
    Return
    
    Do
    Loop
    
    End
    problem ist jetzt, dass statt der roten immer die grüne leuchtet, dazu leuchtet auch noch die rote standig , aber nur ganz dunkel. Wenn ich jetzt den Taster drücke, passiert nichts, außer dass abundzu einmal die rote heller aufflackert.

    ich hoffe ihr könnt mir helfen, wobei mir wirklich wichtig ist, das über die interrupts zu steuern.
    *Danke*

    EDIT:
    mir ist aufgefallen, dass WENN die rote LED mal flackert, dass dann auch gleichzeitig die grüne mit erlischt. Immerhin etwas wie es sein soll.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Kann das Programm so funktionieren? Die ISRInt0 wird VOR der Do-Loop-Schleife ausgeführt; Welche Reaktion da dann das Return auslöst, weiss ich nicht; aber ich denke mal keine sinnvolle. Setz die gesamte ISR mal hinter das END und prüfs nochmal.
    #ifndef MfG
    #define MfG

  3. #3
    Ich hab jetzt die ISR mal hinter das End gestellt und... du bist genial
    Jetzt läuft alles einwandfrei.
    Danke dir

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.01.2008
    Beiträge
    164
    du solltest mal das tut von Bascom vorher richtig lesen.
    dann anfangen zu proggen.

    es wird hier nur drauf los geproggt ohne nachzudenken.

    nach dem motto..schnell....schnell..

  5. #5
    Hätte nicht gedacht, dass ich den Fred noch einmal rauskrame
    @sechsrad:

    Das hatte ziemlich wenig damit zu tun, dass ich irgendein tut von Bascom nicht richtig gelesen habe. Aus Mangel an richtig guten Tuts im Inet dazu sucht man sich halt einiges zusammen, und laut den meisten dieser Tutorials ist die Reihenfolge entweder egal oder andersherum.

    Nichtsdestotrotz hast du natürlich iwie recht, nur möchte ich das in diesem Fall nicht speziell auf mich beziehen.

    LG

Berechtigungen

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