Hi.. Mein Programmchen hat mich grade zur verzweiflung gebracht, im Simulator funktionierte es wunderbar doch auf meine ATmega8 machte es was es möchte.. Habe dann in meinem code u.A. soetwas drin: sbrc R4, 7 reti D.h. der rücksprungbefehl aus dem interrupt wird ausgeführt wenn das 7. Bit in R4 gesetzt ist. wenn ich nun dieses bit setze und die versorgungsspannung komplett wegnehme und dann wieder anschließe, passiert es dass in R4 doch wohl noch irgendetwas drin ist und der rücksprungbefehl ausgeführt wird obwohl er das an dieser stelle noch auf keinen Fall soll... werden die register beim reset nicht zurückgesetzt? d.h. muss ich alle register die ich mal benutzen werde mit 0x00 vorbelegen? mfg Paul H.
Man sollte sich generell nicht darauf verlassen, daß beim Start irgendwo im Speicher, oder in Registern etwas sinnvolles steht - es sei denn, es ist ausdrücklich in den Datenblättern spezifiziert.
PoWl wrote:
> muss ich alle register die ich mal benutzen werde mit 0x00 vorbelegen?
Ja, musst du. Ebenso den RAM. Nur die Peripherie Register werden auf
einen festen Wert gesetzt.
Danke, das hat der Funktionalität meines Programmes schon sehr weitergeholfen, leider funktionieren nun andere dinge so überhaupt nicht aber ich versuch mich weiterhin..
1 | cpr R28, R2 |
2 | cpr R29, R3 |
3 | brne timer1 |
Ich möchte zwei 16-bit zahlen vergleichen und wenn sie ungleich sind zu timer1 springen. Das müsste doch so gehen oder? mfg Paul H.
CPR? In meiner AVR-Studio Hilfe gibts kein CPR... Das könnte aber gehen:
1 | cp R28, R2 |
2 | cpc R29, R3 |
3 | brne timer1 |
sry, war ein schreibfehler, weiß auch nich wie ich das nun wieder hingekrigt hab. Ja genau cp und dann cpc.. so hab ichs gemacht.. mag trotzdem irgendwie nicht funktionieren..
timer1 ist ein normales label. Inzwischen funktioniert immer mehr, ist halt dumm wenn man vergisst eine wichtige 16bit variable hochzählen zu lassen -.-"
>timer1 ist ein normales label. OK, dann ist es gut. Für mich klingt "timer1" etwas nach ISR oder ähnlichem, deshalb war ich etwas skeptisch. Simon Küppers schrieb: >cp R28, R2 >cpc R29, R3 >brne timer1 Danke für den Hinweis, mein AVR-Assembler ist momentan doch stark eingerostet. Ich wollte auch nur darauf hinweisen, dass zwei identische "compare" nicht sinnvoll sind.
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.