Forum: Mikrocontroller und Digitale Elektronik Subtraktion funktioniert scheinbar nicht


von Snobi (Gast)


Lesenswert?

Hallo!

Ich benötige Eure Hilfe. Was mache ich falsch?

Controller: Atmega8
Compiler: Studio 4


Folgende Variablen sind deklariert:

  uint16_t buffer[6][15] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0}};

  int32_t diff1=0;


im späteren Verlauf wird folgendes gemacht:

In einer Schleife wird der Variablen diff1 die Differenz zweier 
Array-Elemente übergeben:

    diff1=((buffer[i][0])-(buffer[i][13]));

Möchte ich nun mit dem Ergebnis "diff1" was auch immer machen (z.B. über 
RS-232 den Wert zum Debuggen ausgeben), bleibt mein Controller scheinbar 
stehen (zumindest wird bei nichts mehr ausgegeben und der Controller 
reagiert nicht mehr).

Über Infos zum Fehler bin ich euch sehr dankbar!

Viele Grüße

Snobi

von Stefan B. (stefan) Benutzerseite


Lesenswert?

int32_t diff1 = (int32_t)buffer[i][0] - (int32_t)buffer[i][13];

Achte darauf, dass i innerhalb 0..5 bleibt!

von Snobi (Gast)


Lesenswert?

Hallo Stefan B.,

besten Dank für Deine Antwort und den Hinweisen. Es war tatsächlich das 
[i] das einen Überlauf verursachte. Meist sind es die kleinen Dinge die 
alles schwierig erscheinen lassen.

Nochmals vielen Dank!

Gruß
Snobi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.