Forum: Mikrocontroller und Digitale Elektronik Crumb128 springt aus Endlosschleife! Resetproblem?


von Niklas R. (niklas)


Lesenswert?

Hallo.

Ich arbeite gerade mit einem Crumb128-Modul, das ich in Bascom 
programmiere. Das Programm besteht nur aus dem Initialisierungsteil und 
einer Endlosschleife. Eigentlich erwarte ich, dass der Controller den 
Initialisierungsteil einmal ausführt und danach in der Endlosschleife 
hängen bleibt (deshalb heißt sie ja "Endlos-"). Macht er aber nicht. 
Stattdessen führt er auch immer wieder den Code vor der Endlosschleife 
aus.

Um das Problem einzukreisen habe ich folgenden kleinen Code verwendet:
-----------------------------------------------------------------
$regfile = "m128def.dat"  'Atmega128-declarations
$crystal = 14745600

Ddrb = &B10000000    'piezo speaker on port b.7

Dim I As Byte      'general purpose counter var

For I = 1 To 128
Portb.7 = Not Portb.7    'invert piezo speaker
Waitms 3
Next I


Main:
Portb.7 = Not Portb.7    'invert piezo speaker
Waitms 10
Goto Main
-----------------------------------------------------------------
An portb.7 hängt ein Piezospeaker, sonst gibt es in meinem Aufbau keine 
Peripherie.

Während der Initialisierung wird der Speaker nun 128 mal zum Schwingen 
gebracht - jeweils mit 3ms Pause. Ich kann dann einen hohen Ton hören. 
Nun geht das Programm über in die Hauptschleife und aus dem Speaker 
kommt ein tieferer Ton (da 10ms Pause).

Soweit läuft alles wie erwartet. Nun folgt das Verwirrende: Der tiefe 
Ton wird nicht ewig gespielt, sondern nur etwa doppelt so lange wie der 
hohe. Anschließend höre ich wieder den hohen Ton und das Ganze beginnt 
von vorne.

Auf mich macht es den Eindruck, als würde der Controller etwa jede 
Sekunde einen Reset durchführen, zumal auch alle Variablenwerte verloren 
gehen (habe ich mit einem anderen Test herausgefunden).

Ich habe das mit zwei unterschiedlichen Crumb128-Modulen getestet - das 
Ergebnis war jeweils gleich. Auf einem Atmega8 habe ich den Code auch 
getestet - der verhält sich allerdings wie erwartet und spielt den hohen 
Ton nur einmal ab, anschließend durchgehend den tiefen.

Ich hoffe jemand hat einen heißen Tipp, wo die Ursache meines Problems 
liegt und Danke schonmal!

Niklas.

von johnny.m (Gast)


Lesenswert?

Watchdog-Timer deaktiviert?

von Niklas R. (niklas)


Lesenswert?

WDTON=0, also deaktiviert. Das Problem scheint ein anderes zu sein.

von Niklas R. (niklas)


Lesenswert?

Hah, nee, Sorry! Vielen Dank, Johnny! Das war das Problem! Jippie! Die 
Scheiße läuft!

Niklas :-)

von johnny.m (Gast)


Lesenswert?

> ...Die Scheiße läuft!

Igitt...

von Magnus Müller (Gast)


Lesenswert?

johnny.m wrote:
>> ...Die Scheiße läuft!
>
> Igitt...

Klingt stark nach Durchfall ;o)

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
Noch kein Account? Hier anmelden.