mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm hängt sich auf (bascom)


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht sielt sich das Programm gerade in Deiner Warteschleife herum,
während Du den Taster drückst?

MfG Paul

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:

> Was kann das sein?

ALles mögliche
 Fehler in der Stromversorgung
 keine Blockkondensatoren
 Pollin Board und die Taster nicht umgebaut
 ...

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
manchmal nutzt trotz gesetztem Pullup einfach nur ein normaler 
Widerstand nach Plus. Einfach mal testen....
MfG Maxx

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wampus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Vielleicht prellt der Taster zu lange.

Du könntest es mal mit "config debounce = 50" versuchen (ohne "").

Gruß wampus

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vielleicht prellt der Taster zu lange.
was heisst das genau, und wie funktioniert debounce?
Danke

Autor: Wampus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso, ok!
aber wie kann sich das so auf ein Programm auswirken, dass das Programm 
sich aufhängt?

Gruss Alex

Autor: Wo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist Dein "Declare sub" für die beiden Sub- Routinen ?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: dd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
haste mal das end auch ans ende gestellt?

Autor: Sag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich doch: Declare sub fehlt ! "Wenn ich deinen Code via copy&paste bei 
mir kompilieren lasse, meckert
Bascom: Error 61: Label not found...blablabla"

Autor: mue-c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Declare Sub brauchst du nicht.
Aber du solltest dein Sub LED anders nennen als den Alias für PortB.1.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja klar, die sub und der alias haben gleichen Namen...jetzt läufts
Gruß

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sorry, ich habe mich vertippt.
LEDw heist die 2. sub.

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

Gruss Alex

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Entstoerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reinhard Schopf (schopfi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.