www.mikrocontroller.net

Forum: Compiler & IDEs typloser pointer verarbeiten


Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht 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
//********************************************* SPI_MasterTransmit **********************************************************************

void SPI_MasterTransmit(void *cData,uint8_t len)
{
    uint8_t i;
  PORTB &= ~(1 << PB4);    // Start transmission
  for (i=0;i<len;i++)
  {
    SPDR = (*cData);        // shift out data
      while(!(SPSR & (1<<SPIF))); // Wait for transmission complete
    cData++;
  }
  
    PORTB |= (1 << PB4);     // disable \ss

}

Vielen Dank für Eure Hilfe vorab

Gruß
Pier

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

>
> //********************************************* SPI_MasterTransmit
> **********************************************************************
> 
> void SPI_MasterTransmit(void *cData,uint8_t len)
> {
>     uint8_t i;
>   PORTB &= ~(1 << PB4);    // Start transmission

>   for (i=0;i<len;i++)
>   {
Es ginge auch 'while (len-- > 0)'.
>     SPDR = (*cData);        // shift out data
Einen Zeiger auf void darf man normalerweise nicht dereferenzieren (*).
>       while(!(SPSR & (1<<SPIF))); // Wait for transmission complete
>     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.

Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die rasche Hilfe !!

Gruß
Pier

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.