mikrocontroller.net

Forum: Compiler & IDEs initialer Wert von Variablen in Registern


Autor: weisnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

werden Variable in Registern ala "asm R12" etc, eigentlich auch mit 0 
initialisiert ?
(scheint mir nicht so...)

2. Frage: ein "sleep" in Assembler ohne vorherige Aktion führt doch zum 
IDLE-Mode (ATTINY 2313) (ohne wesentliche Strom-Ersparnis oder ?

Vielen Dank,

weisnix

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Inhalt duerfte zufaellig sein, das hat SRAM so an sich... ein 
Register zu lesen ohne es vorher initialisiert zu haben duerfte generell 
eine schlechte Idee sein -- es sei denn man will Zufall lesen ;)

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Weisnix,

WinAVR hat eine Power-Up-Routine, die alle Hardware-Register loescht, 
bevor sie main() aufruft.



Ciao
Wolfgang Horn

Autor: weisnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wat denn nu ??? ;-)


(Trotzdem vielen Dank für die Antworten !)

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Register hat nichts mit RAM zu tun. Und ich würde auch nicht darauf 
wetten, dass das Startup Script Register löscht.

Autor: weisnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Ganze mal nach oben bring

1. Frage:Initilaer Wert von Variablen in Registern: Weiß es keiner genau 
??

2. Frage
Hat jemand eine Ahnung von meinem Problem mit dem Sleep-Mode

Danke schon mal für die Antworten

Autor: anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier es doch einfach aus...

Einfach den Wert des Registers auf ein LCD ausgeben, dann siehst du die 
Werte!

Autor: weisnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht mir auch um die Zuverlässigkeit unter verschiedenen 
Startbedingungen (z.B. uC nur kurz aus usw.) - Falls die Register nicht 
0 gesetzt werden, könnte das Verhalten z.B. auch von verschiedenen 
Chargen abhängen.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Register werden nicht verändert.  Ich bin mir nicht ganz sicher,
ob sie beim power-up reset von der Hardware auf 0 gesetzt werden.

Ja, ein sleep_mode() geht by default in den idle mode.  Nein, auch
der spart schon einiges an Strom, nur eben nicht so viel wie die
Modi, die auch den Hauptoszillator ausschalten können.  Wie viel
genau, steht in den typischen Werten des Datenblatts deines AVRs.

Autor: weisnix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, dann muß ich halt noch etwas Platz einsparen und die Variablen 
ordentlich initialisieren.

Lt. Datenbalatt spart man ca 2..3 mA im Idle (bei 5V 8Mhz internem Takt 
(ATTINY 2313)) - hängt natürlich von der Idle-Zeit ab; hier war schon 
die Meinung zu hören, es würde in der Praxis keinen relevanten 
Unterschied machen.

Vielen Dank,

das hilft mir jetzt erst mal weiter.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ich finde einen Verbrauch von 1,5 mA statt 5 mA schon eine ganz
nette Einsparung, wenn man in der Zeit ohnehin nichts tun kann.  Bei
mir hat die main loop standardmäßig mittlerweile eigentlich ein
sleep_mode() am Ende.  Ob man damit nun wirklich in der Praxis was
einspart, hängt wohl wesentlich davon ab, welchen Anteil das Schlafen
am Ende hat.  Im Höchstfalle kann man offenbar etwas mehr als 2/3 der
Energie damit sparen oder anders gesagt, die dreifache Batterie-
lebensdauer erreichen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ weisnix (Gast)

>Lt. Datenbalatt spart man ca 2..3 mA im Idle (bei 5V 8Mhz internem Takt
>(ATTINY 2313)) - hängt natürlich von der Idle-Zeit ab; hier war schon
>die Meinung zu hören, es würde in der Praxis keinen relevanten
>Unterschied machen.

Sleep Mode

MFG
Falk

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.