Forum: Mikrocontroller und Digitale Elektronik Mal wieder DCF77


von MaG (Gast)


Lesenswert?

Hallo Leute,

sagt mal hat von euch schon mal jemand den DCF77 ASM-Code für einen
ATmega8 von www.thelastinstance.de ausprobiert? Ich stehe nämlich vor
einem Problem. Der Mega8 ist mit dem hex-file Programmiert und das
einzige was passiert ist...auf dem Display ist zu lesen "Bitte
warten" und " Firmware: v2.0" danach scheint der AVR einen Reset zu
machen und das spiel beginnt von vorn.
Da ich Newbie bin und den Code dazu nutzen wollte um mich da
reinzuarbeiten, fehlt mir irgendwie der Überblick über die Materie. Ist
zwar sehr schön zum lernen aber wenn man nicht weiter kommt auch nicht
wirklich lehrreich. Ich habe aber schon mal folgendes feststellen
können. Der ASM-Code hat einen Fehler. Es wird eine Variable timeout
definiert und ein Unterprogrammlabel mit selbem Namen. Der Builder (AVR
Studio) mochte das nicht, also habe ich kurzerhand das Label umbenannt
und alle rcalls auch entsprechend mit dem neuen Labelnamen versehen.
Danach wurde der Code schon mal ohne Fehler kompiliert. Ich habe den so
veränderten Code dann nochmal auf den Mega8 geladen aber keine Änderung.
Das Problem war das gleiche. Danach habe ich mal VMLAB bemüht und das
ganze Programm mal simuliert und siehe da ich habe folgendes
Ausgespuckt bekommen!

![PC = $0016, Time =    0.51 ms, {WDG}]: Watchdog Reset (WDR) must
always be executed before the Watchdog Timer is enabled

![PC = $0087, Time =  276.35 ms, {UND}]: SREG bit 0 (C) = X
(undetermined)

Erstes Ereignis scheint nicht störend zu sein (der Watchdog Reset
erfolgt auch bevor der Watchdog auf enable gesetzt wird...also verstehe
ich diesen Hinweis nicht ganz.

Nach dem dann an PD7 ein Signal angelegt wird (das DCF-Signal habe
dabei einfach nur mit einem Taster simuliert) erfolgt folgende Ausgabe
und die Simulation bleibt wie auch bei den Hinweisen zuvor stehen.

![PC = $0070, Time =  360.54 ms, {UND}]: SREG bit 0 (C) = X
(undetermined)

Das passiert also sobald PD7 auf Low gezogen wird (im Oszi von VM Lab
sieht es so aus als wenn es passiert wenn PD7 von Low auf High wechselt
also aufsteigende Flanke).

Kann mir da irgend jemand weiterhelfen?
Muß ich vielleicht irgendwas an den Fuse-Bits ändern?

Ja nochmal zur Simulation...nachdem man die Simulation nach dem
drittenmal stoppen fortsetzt scheint alles so zu laufen wie es soll. In
der Realumgebung (also auf dem AVR selbst) scheint immer nach etwas mehr
als einer Sekunde ein Reset zu erfolgen und das Programm startet von
neuem! Meine Schlussfolgerung das ein reset erfolgt kommt einfach
daher, dass das Display scheinbar jede Sekunde eine Neuinitialisierung
zu machen scheint. Es flakert (ungefähr) jede Sekunde einmal und der
Text wird erneut ausgegeben!

Bitte um Hilfe!

Danke

MaG

von Hobbylöt (Gast)


Lesenswert?

Das Problem hatte ich auch.
Cabal hatte mir netterweise folgendes geschrieben:

Hi

so wie das aussieht stört er sich daran das ich dem register r21 das
alias timeout gebe (zeile 68) und ausserdem eine funktion mit dem
selben
Namen existiert (zeile 387).

Ich würde jetzt versuchen die Zeile 387 zu ändern in:
'timeout_func:'

Jetzt musst du noch alle Zeilen im Programm suchen die wie folgt
aussehen: 'rcall timeout' und diese ändern in 'rcall timeout_func'

Viel Erfolg
Cabal

von MaG (Gast)


Lesenswert?

Hat es dann danach komplett bei dir funktioniert?
Denn bei mir geht es selbst nach der Änderung noch nicht!
Also es scheint ja das SREG Bit 0 irgendwie undefiniert zu sein!
Ich denke eigentlich das ich alle rcalls und das besagte Label geändert
zu haben, aber ich schaue noch einmal drüber! Aber ich glaub bei mir
liegt es an etwas anderem!

Aber erstmal danke für dein Posting...wäre nett wenn du mir mal
schreibst ob es nach der Änderung bei dir funktioniert hat!

Danke
MaG

von Hobbylöt (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

nach den Änderungen in der Datei konnte ich mit AVR Studio die
hex-Datei erzeugen. Funzt seit langem Super!

Gruss Marcel

von Hobbylöt (Gast)


Angehängte Dateien:

Lesenswert?

Sorry,

falscher Dateianhang!!!

Hier isr der richtige!

von MaG (Gast)


Lesenswert?

Also erstmal danke das du mir deinen Code nochmal angehängt hast, aber
auch der läuft bei mir nicht richtig! die LED die den POWER Status
anzeigen soll blinkt ungefähr jede Sekunde einmal auf. Ans Display
ebenfalls in diesem Rhytmus der besagte Text gesendet, aber mehr
passiert einfach nicht! Ansonsten passt auch alles andere. Nur es will
eben nicht. In der Sinulation gibts bei VMLAB auch wieder die "!" an
den vorher beschrieben Stellen.
Irgendwie scheint der Status in Bit 0 im SREG undefiniert zu sein!
Ich lade das hex-file doch einfach nur hoch in den Flash oder? Muß ich
irgendwas an den Fuses setzen?
Ach ja...in AVR-Studio läuft die Simulation seltsamerweise ohne
irgendwelche Probleme! Ich checke das nicht!

MaG

von MaG (Gast)


Lesenswert?

Mit welchem Programm lädst du das denn hoch? Wie sehen die FuseBits
aus?
An was anderes kanns ja dann schon gar nicht mehr liegen! Wenn es bei
dir geht. Bei ich kann mit AVR-Studio ja auch das hex-file erzeugen nur
leider passiert nicht großartig viel wenn ich das Hex-file in den Mega8
mit PonyProg übertrage. Es kommt wie gesagt alle Nase lang zu einem
Reset (zumindest sieht es für mich so aus!).

Danke für die Hilfe

MaG

von MaG (Gast)


Angehängte Dateien:

Lesenswert?

Ach ja - so sehen bei mir die Fuses aus!
Stimmt das so?
Wie gesagt...ich nutze PonyProg mit einem STK200 kompatiblem
Programmer.

Was kann man denn da jetzt noch großartig falsch machen?

MaG

von MaG (Gast)


Lesenswert?

Habs Raus......die Fuses sind Falsch gesetzt! Ich habe die seit dem
ersten mal Programmieren nie gesetzt! Also immer noch Originale
(Fabrik) settings! Jetzt läufts! Supie! :-)

Danke dir trotzdem!

MfG

MaG

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.