- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: Frequenzmessung mit einem Mega32

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Dirk Beitrag anzeigen
    Warum setzt Du eigentlich den Wert icrcnt_start.i16h in der ISR laufend zurück, ohne dass Du ihn jemals änderst ? Nicht dass es viel ausmachen würd', aber es ist sinnlos.
    Code:
     icrcnt_start.i16h = 0;            // Reset upper 16 bits (start value)
    Für die einmalige Initialisierung hätte Dir das gereicht:
    Code:
    static icrcounter_t icrcnt_start = {.i32=0};
    Zitat Zitat von Kampi Beitrag anzeigen
    Der Compiler hat mir gar nichts zu der Variable Counter gesagt (und die Ausgabe per UART klappt auch ohne Probleme) aber trotzdem danke für den Hinweis
    ../hh10d_meas.c:48: warning: 'Counter' may be used uninitialized in this function
    Wenn der Stackspeicher nicht stark benutzt wird, dann ist es möglich dass zufällig für sich diese lokale Variable immer wieder die gleiche Adresse im Stack benutzt wird, dann geht es.
    Änderst sich die Stackbenutzung kann dort ein anderer Wert stehen, mit entsprechendem Ergebnis.
    Grundsätzlich hat eine lokale Variable als verloren betrachtet zu werden, außer sie wird static deklariert, dann bleibt sie im Speicher erhalten.

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Warum setzt Du eigentlich den Wert icrcnt_start.i16h in der ISR laufend zurück, ohne dass Du ihn jemals änderst ? Nicht dass es viel ausmachen würd', aber es ist sinnlos.
    Code:
     icrcnt_start.i16h = 0;            // Reset upper 16 bits (start value)
    Für die einmalige Initialisierung hätte Dir das gereicht:
    Code:
    static icrcounter_t icrcnt_start = {.i32=0};

    Wenn der Stackspeicher nicht stark benutzt wird, dann ist es möglich dass zufällig für sich diese lokale Variable immer wieder die gleiche Adresse im Stack benutzt wird, dann geht es.
    Änderst sich die Stackbenutzung kann dort ein anderer Wert stehen, mit entsprechendem Ergebnis.
    Grundsätzlich hat eine lokale Variable als verloren betrachtet zu werden, außer sie wird static deklariert, dann bleibt sie im Speicher erhalten.
    Ok dank dir für den Hinweis
    Ich programmiere nicht so viel und so oft in C, daher sind mir solche Feinheiten nicht ganz klar.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. USB + Frequenzmessung
    Von Tux12Fun im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 20.06.2011, 00:06
  2. Problem mit Frequenzmessung
    Von TB1 im Forum PIC Controller
    Antworten: 5
    Letzter Beitrag: 28.09.2006, 11:40
  3. Kann mann ein Program aus einem Mega32 wieder auslesen????
    Von jozefowicz im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 3
    Letzter Beitrag: 30.03.2006, 12:17
  4. Frequenzmessung mit AVR
    Von teslanikola im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 21
    Letzter Beitrag: 14.11.2005, 22:43
  5. Frequenzmessung autonom?
    Von RG im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 06.12.2004, 11:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen