Simulator Bug MplabX 3.65?

OP #5117687
Lesenswert?

Hallo zusammen,

ich versuche gerade einen Teil meines Codes über den Simulator in MplabX 
zu debuggen.
1
while (1)
2
{
3

4
    diffPressureBuffer[diffPressureBufferIndex] = debug;
5
            
6
    if (diffPressureBufferIndex < 20
7
    {
8
         diffPressureBufferIndex++;
9
    }
10
    else diffPressureBufferIndex = 0;
11
 
12
}


Die Variable debug wird später durch einen Wert der über I2C übertragen 
wird ersetzt. Dient aktuell nur zum Testen. Ebenso das While(1), da ich 
das Problem auf die o.g. Zeilen einschränken konnte.

Das ganze ist Teil eines Ringbuffers zur Mittelwertbildung.

Sobald die else Bedingung greift, wird debug ebenfalls verändert. Sprich 
er schreibt exakt 20x den Wert ins Array diffPressureBuffer und sobald 
der Index auf 0 springt, wird debug ebenfalls auf 0 gesetzt. Habe ich 
was übersehen oder ist das ein Simulator Bug?

Gruß
Gast #5117861
Lesenswert?

Bitte poste einen vernünftigen Code-Ausschnitt der auch compiliert. Der 
den du gepostet hast, compiliert mit Sicherheit nicht weil mindestens 
eine Klammer fehlt. Ausserdem wäre interessant was für Datentypen die 
Variablen sind, ob sie nur deklariert oder auch initialisiert werden und 
und und ...
OP #5117908
Lesenswert?

Hi,

hier nochmal eine kompilierbare Aufstellung:
1
#include <xc.h>
2

3
void main (void)
4
{
5

6
unsigned int diffPressureBuffer[20] = {0};
7
unsigned char diffPressureBufferIndex = 0x00;  
8
unsigned int debug = 0;
9
  
10
  
11
     while (1)
12
     {
13
          diffPressureBuffer[diffPressureBufferIndex] = debug;
14
            
15
          if (diffPressureBufferIndex < 20)
16
          {
17
               diffPressureBufferIndex++;
18
          }
19
          else diffPressureBufferIndex = 0;
20
     }
21
}


Wie gesagt, debug wird nur genutzt, um im Simulator Werte eingeben zu 
können. Sobald diffPressureBufferIndex auf 0 gesetzt wird, wird debug es 
ebenfalls. Debug wird im gesammten Programm nur an dieser Stelle 
genutzt.


Das While(1) dient ebenfalls nur dem debuggen über den Simulator.
OP #5117938
Lesenswert?

Der oben gepostete Ausschnitt ist Teil eines größeren Programms. Ich 
bekomme Werte über I2C übermittelt und möchte gerne einen gleitenden 
Mittelwert über 20 Werte bilden. Dazu der oben gezeigte Ringbuffer.

Die Variable debug ist zu Testzwecken eingebaut und wird im späteren 
Programm durch eine I2C Leseoperation ersetzt. Habe akutell aber die 
Hardware noch nicht auf dem Tisch.

Im Simulator kann ich über die Variable debug Werte zum Testen des Codes 
eingeben (da wie gesagt Hardware noch nicht hier).

Das Array (diffPressureBuffer[]) lässt sich auch wunderbar mit Werten 
füllen. Sobald ich dann aber an Index 20 angekommen bin und meine 
Indexvariable (diffPressureBufferIndex) auf 0 gesetzt wird, ist der Wert 
in debug ebenfalls 0.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren