PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit den interrupts bei Bascom



Körperkrämer
19.04.2008, 17:32
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:


$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.

Jaecko
19.04.2008, 17:41
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.

Körperkrämer
19.04.2008, 17:56
Ich hab jetzt die ISR mal hinter das End gestellt und... du bist genial ;)
Jetzt läuft alles einwandfrei.
Danke dir

sechsrad
29.04.2008, 16:38
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..

Körperkrämer
08.05.2008, 14:30
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;)