PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega88, Assemblerproblem, Timer



bin_wolf01
16.01.2005, 19:40
Hallo an alle, ich suche wieder einmal Hilfe, diesmal bei einem etwas komischen Problem.

Der Code wurde im AVR-Studio für ATmega88 getestet. Ich schreibe mir kleine Routinen, um in die Assemblerprogrammierung reinzukommen.

Der Code lief einwandfrei. Als ich Ihn auf das Notwendige reduzieren wollte, gings nicht mehr. Ursache war die Zeile 36 "out PIND, temp" (unten extra gekennzeichnet).

Mit dem 5-zeiligen Codeblock hatte ich im AVR-Simulator die Taster SW2 / SW3 simuliert, weil ich zu faul war, die einzelnen Portbits mit der Maus (im AVR-Workspace) anzuklicken.

Das Programm initialisiert den 16-Bit Timer 1, und lädt die Vergleichsregister OCR1AL und H mit 40H. Erreicht der Timer die 40H soll er in die ISR T1_MatchA laufen, und dort ein paar LED´s an Port B toggeln.

Das funktioniert einwandfrei bis zu dem Zeitpunkt, an dem die Zeile 36 auskommentiert wird. Das Programm bleibt dann nicht mehr im Loop hängen bis die 40H erreicht ist, sondern läuft in einer Schleife immer wieder durch die IS-Routine ohne den Compare mit den Vergleichsregistern abzuwarten.

Meiner Meinung nach hat die Zeile mit dem eigentlichen Programm gar nichts zu tun, und sollte sich aus dem Ablauf raushalten. Aber so ist es immer - ich hab überhaupt nix gemacht, aber es geht nicht mehr.

Für Hilfe im voraus vielen Dank, ich melde mich immer nur, wenn´s nach längerem probieren, testen, Datenblatt verfluchen absolut nicht mehr geht.

Danke, Servus, Wolfram

PS: Das funktionierende Programm läuft im übrigen auch mit Pescaler 1024 und ffffH in den Vergleichsregistern nicht. Die LED´s bleiben im einmal maskierten Zustand. Das ist aber ein anderes Problem, da muß ich vorher selber noch mal ran.

Der Vairniss halber weis ich wieder darauf hin, daß ich den gleichen Beitrag im roboternetz poste.

bin_wolf01
18.01.2005, 09:53
In eigener Sache,

jetzt klappt es, Grund waren Bugs im AVR-Studio beim debuggen, habe jetzt die neueste Version, damit funktioniert alles.

Servus, Wolfram