Hallo Leute, habe ein Problem mit meinem Programm. Es soll ein LED Herz mit verschiedenen Animationen werden. Das Herz hat 12 Reihen. Diese sind von PB0..7 und dann an PD0,1 und PD4,5 angeschlossen. Die Ansteuerung erfolgt über NPN Transistoren und funktioniert einwandfrei. Auch die einzelen Animationsabläufe funktionieren anstandslos. Aber ich habe nun das ganze wie folgt geplant: Per Interrupt (Taster - PD.2) soll eine Variable hochgezählt werden. Je nach dem welchen Wert die Variable besitzt, wird die entsprechende Subroutine geladen. Außerdem wird der Wert im EEPROM gespeichert. Leider funktioniert das Programm nicht, was mir mittlerweile seit 2 Stunden völlig schleierhaft ist. Eine abgewandelte Form, die die Variable via UART an den PC sendet funktioniert hingegen einwandfrei. Es scheint, als würde das Intterrupt nicht richtig ausgeführt werden. Vielleicht habt ihr hier eine Idee, was da falsch sein könnte. Ich bin auf jeden Fall für alle Ratschläge und Tips offen, das Programm ist in BASCOM geschrieben und angehängt. Hoffe ihr könnt mir schnell helfen, dass Teil müsste morgen fertig sein! Danke schonmal im Voraus! Siggi!
Was ist denn das Problem? Kann es sein, dass der Taster nicht entprellt ist? Dann bekommst du zufällige Ergebnise (also die Animationen werden willkürlich gewählt), weil dein count undefiniert ist, da der Interrupt durch das Nachprellen x mal ausgeführt wird.
Siggi schrieb: > dass Teil müsste morgen fertig sein! Das ist letztlich Dein Problem und nicht unseres. > Leider funktioniert das Programm nicht Und woran erkennst Du das es nicht funktioniert? Ein Tip mal vorab: Tasten am Interrupt sind nicht sinnvoll. Bascom bietet da, soweit ich weiss, eine Entprellroutine.
Es gibt gar keine Ergebnisse, ergo bleiben alle LEDs aus. Deswegen ging ich bis jetzt auch noch nicht von einem prellproblem aus. Zum Thema "mein Problem": Ja das ist es, tut mir leid, dass ich hier mal meine Situation schildere augenverdreh
Siggi schrieb: > Zum Thema "mein Problem": Ja das ist es, tut mir leid, dass ich hier mal > meine Situation schildere augenverdreh Diese Ungezogenheit ist noch ein Grund, warum man Dich am ausgestreckten Arm verhungern lassen sollte. Lies das nächstemal was über Netiquette.
Setz dir doch mal eine Ausgabeoperation (Led einschalten) in die ISR. Dann siehst du zumindest, ob die ISR ausgelöst wird. Ich sehe zwar, dass du den Tasterpin auf Eingang schaltest. Aber ich sehe dich keinen Pullup Widerstand einschalten. Benutzt du externe Pullup?
1 | '------------------------------------------------------------------------------- |
2 | 'Mainloop |
3 | |
4 | Count = Save |
5 | Do |
6 | Select Case Count |
7 | Case 1 : |
8 | Call Prog1 |
9 | Case 2 : |
10 | Call Prog2 |
11 | Case 3 : |
12 | Call Prog3 |
13 | Case 4 : |
14 | Call Prog4 |
15 | End Select |
16 | Loop |
17 | End |
18 | |
19 | |
20 | '------------------------------------------------------------------------------- |
21 | 'Interruptanweisung |
22 | Lol_int0: |
23 | Count = Count + 1 |
24 | If Count >= 5 Then |
25 | Count = 1 |
26 | End If |
27 | Save = Count |
28 | Return |
count erhöhen, save erhöhen, in count speichern, in save speichern. Entscheide dich doch mal, wer hier eigentlich die 'Führung hat'. count oder save. Aber nicht beide gleichzeitig.
Grrrr schrieb: > Diese Ungezogenheit ist noch ein Grund, warum man Dich am ausgestreckten > Arm verhungern lassen sollte. Lies das nächstemal was über Netiquette. Mich wegen 2 Sätzen als ungezogen zu bezeichnen, finde ich ehrlich gesagt sehr gewagt. Karl heinz Buchegger schrieb: > Setz dir doch mal eine Ausgabeoperation (Led einschalten) in die ISR. > Dann siehst du zumindest, ob die ISR ausgelöst wird. Werde ich sofort versuchen! :] Karl heinz Buchegger schrieb: > Ich sehe zwar, dass du den Tasterpin auf Eingang schaltest. Aber ich > sehe dich keinen Pullup Widerstand einschalten. Benutzt du externe > Pullup? Ja, ich verwende einen externen Pullup.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.