-         

Ergebnis 1 bis 4 von 4

Thema: Seltsames Problem bei Array; Werte wandern

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987

    Seltsames Problem bei Array; Werte wandern

    Anzeige

    Moin.

    Mal wieder ein kniffligeres Problem, bei dem ich wieder garnicht weiss, wo das herkommt.
    Der Einfachheit halber hier das gesamte AVR-Studio-Projekt:

    http://www.cihome.de/forendaten/rn/powermonitor.zip

    Kurze Erklärung zum Projekt:
    Diese Software läuft auf einer Schaltung mit ATmega32 und einem KS0108-LCD. Eine Lichtschranke am Stromzähler überwacht die rote Markierung und liefert an INT0 einen Puls. Durch die Dauer einer Umdrehung lässt sich der Stromfluss berechnen.
    Dabei sollen die Messungen u.a. in verschiedenen Diagrammen dargestellt werden.
    Im Array diagBuf_Power_W[] liegen die Messwerte der letzten 25 Umdrehungen. Die Verarbeitung dieser Daten klappt soweit.

    Jetzt das Problem:
    Im Array diagBuf_DayTrend_Revs[] soll jeweils die Anzahl Umdrehungen der letzten 25 Stunden abgelegt werden. Also jeder Puls zählt DayTrend_Cnt hoch. Nach jeder Stunde (im Projekt für Debugzwecke aktuell nach jeder Minute) werden die Werte im Array weitergeschoben und DayTrend_Cnt kommt auf Platz 0.
    So wie auch bei diagBuf_Power_W[], nur dass hier das Durchschieben nach jeder Umdrehung erfolgt.

    Das Problem nun: Die Werte in diagBuf_DayTrend_Revs[] werden nicht erst beim Stunden-/Minutenwechsel durchgeschoben, sondern ebenfalls nach jeder Umdrehung.

    Erwartet:
    Code:
    Arrayinhalt: { 0, 0, 0, ...} 
    Puls => { 1, 0, 0, ...}
    Puls => { 2, 0, 0, ...}
    Puls => { 3, 0, 0, ...}
    Stundenwechsel => { 0, 3, 0, ...}
    Puls => { 1, 3, 0, ...}
    Puls => { 2, 3, 0, ...}
    Stundenwechsel => { 0, 2, 3, ...}
    Puls => { 1, 2, 3, ...}
    Puls => { 2, 2, 3, ...}
    ...
    Aber wie es tatsächlich abläuft:
    Code:
    Arrayinhalt: { 0, 0, 0, ...} 
    Puls => { 1, 0, 0, ...}
    Puls => { 2, 1, 0, ...}
    Puls => { 3, 2, 1, ...}
    Puls => { 4, 3, 2, ...}
    Das ganze ist unabhängig davon, ob das Diagramm angezeigt wird oder nicht; auch die Debug-Ausgabe der Werte (main.c, Zeilen 136-141) beinhaltet schon die falschen Daten. Ebenso machts keinen Unterschied, ob ich DayTrend_Cnt verwende, oder direkt diagBuf_DayTrend_Revs[0] hochzähle.

    Und eben hier kommt die Frage: Why?

    Hab ich da schon wieder was übersehen? Bug im Compiler? AVR defekt?

    mfG
    #ifndef MfG
    #define MfG

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Schau doch mal, wofür sizeof() den Wert zurückgibt,
    Code:
    for (cnt8 = sizeof(diagBuf_DayTrend_Revs) - 1; cnt8 > 0; cnt8--)
    den Du dann hier als Index benutzt:
    Code:
    diagBuf_DayTrend_Revs[cnt8] = diagBuf_DayTrend_Revs[cnt8-1];

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Thx... wars tatsächlich.
    Klassiker... v.a. hab ich genau das Problem an anderen Stellen im Code ja schon behoben; nur bei der for() hab ichs übersehen.
    #ifndef MfG
    #define MfG

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Jaecko Beitrag anzeigen
    an anderen Stellen im Code ja schon behoben
    Jep, da hat die Filterfunktion des Hirns zugeschlagen

Ähnliche Themen

  1. Byte-array, alle werte auf einmal festlegen
    Von Roboman93 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 27.11.2008, 20:02
  2. Probleme mit Array auslesen - falsche Werte
    Von Ozzy im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 04.01.2008, 18:19
  3. 400- Werte- Array in C (PIC18F4550)
    Von MHK im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 22.01.2007, 20:23
  4. Seltsames Problem (Erledigt)
    Von sledge77 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 13.12.2006, 00:19
  5. hexadezimale Werte im Array !
    Von casa74 im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 18.08.2005, 20:45

Berechtigungen

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