mikrocontroller.net

Forum: PC-Programmierung static Variable wirklich nötig?


Autor: GameBoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich hab ein code fragment im netz gefunden und frage mich warum die 
variable
var mit static deklariert wird?

In diesem fall kann man doch auch das static weglassen oder? denn ist 
doch nicht schlimm wenn die variavle bei jedem Interrupt Aufruf neu 
initialisiert wird oder?
ISR(USART_RXC_vect)
{
  static unsigned char var=0;

  var=UDR;
  buff[k]=var;
  
}

grusse

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In diesem Fragment ergibt das keinen Sinn. Nur ergibt das Fragment 
selbst auch keinen Sinn, also lässt sich das nicht abschliessend 
beuteilen.

Autor: volltroll.de (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In diesem fall kannste auch schreiben :
ISR(USART_RXC_vect)
{
  buff[k]=UDR;
}

Kanns sein, daß du es mit Volatile verwechselst? (passt aber auch nicht 
in diesen Code)

Autor: volltroll.de (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS. wenn k nicht volatile ist, ist dein Code eh mist ;)

Autor: efrewr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den code gibts hier:
http://www.htw-dresden.de/~beck/Atmel/V6.html


ISR(USART_RXC_vect)
{
  static unsigned char zeichen=0;

  zeichen=UDR;
  buffer[irw]=zeichen;
  irw+=1; if (irw==RING_SIZE) irw=0;
  count ++;
}


Also macht kein Sinn, da die variable eh im nächsten schritt mit UDR 
überschrieben wird?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Variable ist Unsinn.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermutung:
Die Idee könnte gewesen sein, eine Variable zu haben, an die man mit dem 
Debugger einfach rankommt.
static deshalb, damit nicht wegen dieser einen Variablen ein Stackframe 
für die ISR aufgebaut werden muss.

Autor: efrewr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso...ja das kann sein :=)

danke..

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ausserdem hilft dir das static gegen einen stackoverflow zur laufzeit. 
wennst zu wenig ram hast, schreit spätestens avrdude beim flashen :-)

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.