mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Register nach Reset nicht leer?


Autor: PoWl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.


Autor: PoWl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das hat der Funktionalität meines Programmes schon sehr 
weitergeholfen, leider funktionieren nun andere dinge so überhaupt nicht 
aber ich versuch mich weiterhin..
cpr        R28, R2
cpr        R29, R3
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.

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wohl eher so:

cpr        R28, R2
brne       timer1
cpr        R29, R3
brne       timer1

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cpr ? Was ist denn das für ein µC ? Sieht nach AVR aus, aber der kennt 
kein cpr...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CPR? In meiner AVR-Studio Hilfe gibts kein CPR...

Das könnte aber gehen:
cp R28, R2
cpc R29, R3
brne timer1

Autor: PoWl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn timer1, ein Label, eine Function oder was anderes?

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
timer1 ist ein normales label. Inzwischen funktioniert immer mehr, ist 
halt dumm wenn man vergisst eine wichtige 16bit variable hochzählen zu 
lassen -.-"

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.