Simulator Bug MplabX 3.65?

OP #5117687
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.