Forum: Compiler & IDEs typloser pointer verarbeiten


von Pier S. (bigpier)


Lesenswert?

Hallo,
kann mir bitte jemand sagen wie ich folgende Fehlermeldung weg kriege ??
../Fuction.c:74: error: void value not ignored as it ought to be
1
//********************************************* SPI_MasterTransmit **********************************************************************
2
3
void SPI_MasterTransmit(void *cData,uint8_t len)
4
{
5
    uint8_t i;
6
  PORTB &= ~(1 << PB4);    // Start transmission
7
  for (i=0;i<len;i++)
8
  {
9
    SPDR = (*cData);        // shift out data
10
      while(!(SPSR & (1<<SPIF))); // Wait for transmission complete
11
    cData++;
12
  }
13
  
14
    PORTB |= (1 << PB4);     // disable \ss
15
16
}

Vielen Dank für Eure Hilfe vorab

Gruß
Pier

von (prx) A. K. (prx)


Lesenswert?

SPDR = *(uint8_t *)cData;

Was soll *cData denn sein? "void" ist nichts, was man verarbeiten kann, 
und der Typ links vom "=" beeinflusst die Seite rechts davon nicht..

von Sven P. (Gast)


Lesenswert?

Pier S. wrote:
> Hallo,
> kann mir bitte jemand sagen wie ich folgende Fehlermeldung weg kriege ??
> ../Fuction.c:74: error: void value not ignored as it ought to be
Wo ist Zeile 74?

>
1
> //********************************************* SPI_MasterTransmit
2
> **********************************************************************
3
> 
4
> void SPI_MasterTransmit(void *cData,uint8_t len)
5
> {
6
>     uint8_t i;
7
>   PORTB &= ~(1 << PB4);    // Start transmission
8
9
>   for (i=0;i<len;i++)
10
>   {
Es ginge auch 'while (len-- > 0)'.
1
>     SPDR = (*cData);        // shift out data
Einen Zeiger auf void darf man normalerweise nicht dereferenzieren (*).
1
>       while(!(SPSR & (1<<SPIF))); // Wait for transmission complete
2
>     cData++;
Das ist auch verboten. Da void keine Größe hat, ist nicht definiert, wie 
weit das '++' den cData-Zeiger versetzen soll.
[c]
>   }
>
>     PORTB |= (1 << PB4);     // disable \ss
>
> }
/c]
Mach statt void mal uint8_t oder char.

von Pier S. (bigpier)


Lesenswert?

Danke für die rasche Hilfe !!

Gruß
Pier

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.