Gast
#359653
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
