www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MPLAB IDE - Sinnloses Warning ?


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich programmiere hier mit dem MPLAB IDE eine SD-Kartenansteuerung.
Mit einem MSP hat das wunderbar funktioniert.

Ich portiere das Programm nun auf den dsPIC.

Der Compiler meldet hier ein Warning, was ich nicht nachvollziehen kann.
Aber es tritt im PROGRAMM genauso auf, wie er der Compiler es voraussagt 
!
Das gleiche Problem tritt beim MSP nicht auf !


Hier die Stelle:
if(SD_CHECK_RESP(0xfe)==0xfe)
...

Die Funktion ist wie folgt definiert:
char SD_CHECK_RESP(char resp)
{
  int i=0;
  char response_2;
  while(i<100)
  {
    response_2=spi_send_8_SD(0xFF);
    if(response_2==resp) break;
    i++;
  }
  
  return response_2;
}

spi_send_8_SD() liefert einen char zurück.

WARNING:

SD_CARD.c: In function 'SD_READ_REGISTER':
SD_CARD.c:225: warning: comparison is always false due to limited range 
of data type

Obwohl SD_CHECK_REP() 0xFE zurückliefert, schlägt der Vergleich fehl ?

Beim MSP geht das wunderbar.

Bitte helft mir.

MfG
Klaus

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char ist offensichtlich auf dieser Plattform ein Datentyp für die Werte 
-128..+127. Da
  SD_CHECK_RESP(0xfe)
ebendies zurückgibt, kann das nie 0xfe = 254 werden. Das Bitpattern 0xFE 
wird in diesem Kontext als -2 interpretiert.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schonmal unsigned char versucht?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich - wieder was gelernt !

Danke.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was (vermutlich) auch gehen würde: if(SD_CHECK_RESP(0xfe)==(char)0xfe)
Aber nimm besser ne passenden Datentyp :)

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das geht nicht.

Da kommt irgendein ERROR.

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

welchen Kompiler verwendest du denn?
Für den C30 gibt es z.B. ein Dokument "dsPIC Language Tools Quick 
Reference Card". Darin sind die Datentypen beschrieben.
char, signed char: 8 Bits; Min: -128; Max: 127

Gruß
Christian

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.