Programm hängt sich auf (bascom)

Gast #1977321
Lesenswert?

hallo!
ich habe ein simples Programm, dass eine LED einschaltet, wenn ich den 
Taster drücke.
So sieht das Programm aus:

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 80
$framesize = 90

Config Pinc.0 = Input
Portc.0 = 1
Config Portb.1 = Output

Taster Alias Pinc.0
Led Alias Portb.1

Do
Debounce Pinc.0 , 0 , LED , Sub
Loop
End

LED:

Led = 1
Gosub warten
Led = 0
Return

Warten:
wait 2
return


das Funktioniert eigentlich soweit, aber ab und zu (ziehmlich selten) 
hängt sich das Programm auf.
Die LED Bleibt an, und geht nicht mehr aus, oder die geht beim Tasten 
nicht an usw.

Was kann das sein?

Danke
mfG Alex
Gast #1977406
Lesenswert?

Das Ganze habe ich auf dem Lochraster aufgebaut.
als Schaltplan habe ich die Standartverdrahtung des Atmega8 von 
roboternetz genommen.
Die 100nF sind alle da, wo sie sein müssen.
Der Taster hat einen 5k-Pull-Up.

Noch Jemand eine Idee?

mfg Alex
Gast #1977443
Lesenswert?

Wenn Du einen Taster drückst, hast Du nicht schlagartig Kontakt. Durch 
Federwirkung und Verschmutzungen kommt es kurzzeitig zu einem 
An-aus-an-aus- ... -Effekt. Die Entprellroutine debounce prüft den 
Tasterzustand standardmäßig nach 25 ms ein zweites Mal. Wenn der Zustand 
stabil bleibt, wird die nächste Aktion eingeleitet. Mit config debounce 
kannst Du die Zeit in Millisekunden nach Deinen Bedürfnissen einstellen.

Es gibt aber auch intelligente Routinen (z.B. von Peter Dannegger), die 
viel effektiver arbeiten. Das muss man aber von Hand programmieren. Es 
gibt auch in Bascom genug Beispiele.

Gruß wampus
Gast #1977537
Lesenswert?

Ich habe gerade einen Versuch durchgeführt.
Wenn ich mich nicht irre/täusche, dann hängt sich das Programm auf, wenn 
ich die Platine von Unten (Lötseite) anfasse.
Kann ich solche Störungen verursachen, dass der µC damit nicht zurecht 
kommt?
mfG Alex
Gast #1977601
Lesenswert?

>>>Kann ich solche Störungen verursachen, dass der µC damit nicht zurecht
kommt?

1. 10k gegen V+ am RESET Pin sind da?
2. evtl.Spannungsschwankungen und BOD ist an
3. Quarz ewig weit vom Atmel entfernt/ keine 22p Cs

Wenn ich deinen Code via copy&paste bei mir kompilieren lasse, meckert 
Bascom: Error 61: Label not found...blablabla

Gruß
Gast #1978760
Lesenswert?

Hallo,

> Aber woran kann das liegen, dass sich das Programm aufhängt?

> Wenn ich mich nicht irre/täusche, dann hängt sich das Programm auf, wenn
> ich die Platine von Unten (Lötseite) anfasse.

Unbeschaltete Pins sollten auf festen Pegel gelegt werden. Daher die 
nicht verwendeten Anschlüsse entweder auf Ausgang programmieren und z.B. 
auf Low setzen oder als Eingänge belassen und die Pullups einschalten.

(Ich bevorzuge die Variante mit den Ausgängen; hat sich als 
unempfindlicher erwiesen.)

Gruss

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren