Array initialisiert nicht richtig

Gast #2488527
Lesenswert?

Hallo die Herren,

Ich versuche gerade ein Array zu initialisieren.
Leider klappt dies nicht wie gewünscht.

Anbei der Code
1
// Variablendeklaration
2
unsigned int k = 0;
3
unsigned int BufferSize = 300;
4
unsigned int zeiger = 0;
5
unsigned char Ringbuffer[BufferSize];  
6

7

8
// Alle Werte im Array auf 0 setzten (eigentlich überflüssig da: unsigned char Ringbuffer[BufferSize];  dies ja schon machen sollte)
9

10
      for (k=0;k<=BufferSize-1;k++)   
11
      {
12
        Ringbuffer[k]=0;  
13
        printf("\n\rLösche Ringbuffer[%u]:",k) ;
14
        delay_ms (10);  
15
      }
16

17
// Ausgabe über RS232
18

19
do
20
{
21
            printf("\n\rRingbuffer[%u]:%u",zeiger ,Ringbuffer[zeiger]) ; 
22
                          
23
            if(zeiger>=BufferSize-1)
24
            {
25
                zeiger = 0;
26
            }
27
            else
28
            {
29
                 zeiger++;
30
            }
31
}
32
while(1);

Nun lese ich aber leider immer folgendes aus:
// Erster Durchlauf
Ringbuffer[2]:0
Ringbuffer[3]:0
Ringbuffer[4]:4
Ringbuffer[5]:0
Ringbuffer[6]:0
Ringbuffer[7]:0
Ringbuffer[8]:0
Ringbuffer[9]:0
Ringbuffer[10]:0
Ringbuffer[11]:0
Ringbuffer[12]:0
Ringbuffer[13]:0
Ringbuffer[14]:51
Ringbuffer[15]:93
Ringbuffer[16]:93
Ringbuffer[17]:93
Ringbuffer[18]:93
Ringbuffer[19]:93
Ringbuffer[20]:93
Ringbuffer[21]:93
Ringbuffer[22]:0
Ringbuffer[23]:0
Ringbuffer[24]:0
Ringbuffer[25]:0
Ringbuffer[26]:0


// 2ter Druchlauf
Ringbuffer[2]:0
Ringbuffer[3]:0
Ringbuffer[4]:4
Ringbuffer[5]:0
Ringbuffer[6]:0
Ringbuffer[7]:0
Ringbuffer[8]:0
Ringbuffer[9]:0
Ringbuffer[10]:0
Ringbuffer[11]:0
Ringbuffer[12]:0
Ringbuffer[13]:0
Ringbuffer[14]:58
Ringbuffer[15]:53
Ringbuffer[16]:53
Ringbuffer[17]:53
Ringbuffer[18]:53
Ringbuffer[19]:53
Ringbuffer[20]:53
Ringbuffer[21]:53
Ringbuffer[22]:0
Ringbuffer[23]:0
Ringbuffer[24]:0
Ringbuffer[25]:0
Ringbuffer[26]:0

// 3er Druchlauf
Ringbuffer[2]:0
Ringbuffer[3]:0
Ringbuffer[4]:4
Ringbuffer[5]:0
Ringbuffer[6]:0
Ringbuffer[7]:0
Ringbuffer[8]:0
Ringbuffer[9]:0
Ringbuffer[10]:0
Ringbuffer[11]:0
Ringbuffer[12]:0
Ringbuffer[13]:0
Ringbuffer[14]:101
Ringbuffer[15]:49
Ringbuffer[16]:57
Ringbuffer[17]:55
Ringbuffer[18]:53
Ringbuffer[19]:51
Ringbuffer[20]:49
Ringbuffer[21]:57
Ringbuffer[22]:0
Ringbuffer[23]:0
Ringbuffer[24]:0
Ringbuffer[25]:0
Ringbuffer[26]:0
usw.

Was mache ich den hier bitte falsch???

Ich verwende einen ATmega32 und programmiere mit CodeVision

Danke für alle Tipps
mfg
Patrick
Gast #2488591
Lesenswert?

Mamoent mal,
Patrick schrieb:
> // Alle Werte im Array auf 0 setzten (eigentlich überflüssig da: unsigned char 
Ringbuffer[BufferSize];  dies ja schon machen sollte)

In welchem Scope ist denn der Ringbuffer definiert?
global: dann gibt es kein VLA
lokal :  dann werden die Variablen nicht mit 0 initialisiert
Gast #2488593
Lesenswert?

Zeig am besten mal kompletten, kompilierbaren Code.
Reduziere den Code auf das Minimum, so das der Fehler nocht auftritt.

Was für einen Prozessor und welchen Compiler verwendest Du?

Und noch eins. Du hast zwar nicht danach gefragt aber Konstruktionen wie
1
k <= BufferSize - 1
sind äquivalent zu
1
k < BufferSize

was es überflüssig macht, zur Laufzeit noch Buffersize - 1 zu rechnen. 
(Wenn auch möglicherweise dieser Wert wegen Optimierung 
zwischengespeichert wird).

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