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
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
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
Hi, nach den Änderungen in der Datei konnte ich mit AVR Studio die hex-Datei erzeugen. Funzt seit langem Super! Gruss Marcel
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.