Array[i] = i will nicht

Gast #2465418
Lesenswert?

Hi,

sorry für den etwas allgemeinen Titel.

Ich habe nun vor mein erstes Array in C zu verwenden. Es ist ein uint8_ 
t Array mit 256 Elementen.
Das ganze will ich fortlaufend hochzählen und über den UART ausgeben.

Also im Grunde
Array[i] = i;
i++;

Leider tut der UART dann aber nix mehr...

Testweise auch ein j zu benutzen dass dann  Arr [i] = j macht 
funktioniert auch nicht.


Was mache ich falsch ?


bitte nicht hauen ...

1
...
2

3
uint8_t _DMX_Arr [255];
4
uint8_t i;
5

6
...
7

8
int main (void)
9
{
10

11
        i = 0;
12
  
13
  
14
  while (i<256)
15
  {
16
    _DMX_Arr[i] = i;
17
    ++i;
18
    
19
  
20
  }  
21
  
22
  
23
  setUARTtransmit();
24
  
25
  while (1)
26
  {
27
    i = 0;
28
    
29
    while (i<256)
30
    {
31
      while (!(UCSRA & (1<<UDRE)))
32
      {  }    
33
      UDR = _DMX_Arr[i];
34
      ++i;
35
      
36
    }
37
  }  
38
}


Danke
Gast #2465439
Lesenswert?

Bitte vollständigen, kompilierbaren Code posten.
Gegebenenfalls den Code so weit reduzieren, das der Fehler noch 
auftritt.

Du dimensionierst ein Array von 255 Elementen, greifst aber auf das 
Element mit dem Index 255 zu, welches das 256te Element ist.
Falls der Code stimmt, so ist das zufällig i, das mit seinem momentanen 
Wert gesetzt wird, so das es nicht auffällt. Falsch ist es trotzdem.

Der Code scheint abgesehen davon korrekt zu sein, aber wie gesagt, ist 
er ja nicht vollständig, so das das Problem noch woanders liegen kann.

Bitte denke Dir das nächstemal einen aussagekräftigen Titel aus, anstatt 
Dich für einen anderweitigen Titel zu entschuldigen.

Es fehlt im Zusammenhang eine Beschreibung, ob Du, falls Du hier kein 
Array in einer Schleife ausgibst, etwa i selbst auf dem UART erfolgreich 
ausgeben kannst. So kann es auch an der UART-Initialisierung liegen.

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