typloser pointer verarbeiten

OP #1218104
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
Gast #1218110
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.

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