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
Vielleicht sielt sich das Programm gerade in Deiner Warteschleife herum, während Du den Taster drückst? MfG Paul
Alex schrieb: > Was kann das sein? ALles mögliche Fehler in der Stromversorgung keine Blockkondensatoren Pollin Board und die Taster nicht umgebaut ...
Hi, manchmal nutzt trotz gesetztem Pullup einfach nur ein normaler Widerstand nach Plus. Einfach mal testen.... MfG Maxx
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
Hallo! Vielleicht prellt der Taster zu lange. Du könntest es mal mit "config debounce = 50" versuchen (ohne ""). Gruß wampus
>Vielleicht prellt der Taster zu lange.
was heisst das genau, und wie funktioniert debounce?
Danke
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
achso, ok! aber wie kann sich das so auf ein Programm auswirken, dass das Programm sich aufhängt? Gruss Alex
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
>>>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ß
ich doch: Declare sub fehlt ! "Wenn ich deinen Code via copy&paste bei mir kompilieren lasse, meckert Bascom: Error 61: Label not found...blablabla"
Declare Sub brauchst du nicht. Aber du solltest dein Sub LED anders nennen als den Alias für PortB.1.
ja klar, die sub und der alias haben gleichen Namen...jetzt läufts Gruß
Ja, sorry, ich habe mich vertippt. LEDw heist die 2. sub. Aber woran kann das liegen, dass sich das Programm aufhängt? Gruss Alex
Alex schrieb: > Das Ganze habe ich auf dem Lochraster aufgebaut. > als Schaltplan habe ich die Standartverdrahtung des Atmega8 von > roboternetz genommen. Und die sieht wie aus? > Noch Jemand eine Idee? Ich tippe mal auf 80:20 zugunsten eines Hardwarefehlers.
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
hi ! verwendest du absichtlich so hohe stackwerte ?? setze die mal auf standard für den mega8 zurück , du schaltest ja nur ne LED und hast keine unzähligen gosub´s probier mal die 24 - 8 - 24. vielleicht hilfts ja, ansonsten würd ich auch auf die HW tippen :-) lg
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.