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


von Klaus (Gast)


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:
1
if(SD_CHECK_RESP(0xfe)==0xfe)
...

Die Funktion ist wie folgt definiert:
1
char SD_CHECK_RESP(char resp)
2
{
3
  int i=0;
4
  char response_2;
5
  while(i<100)
6
  {
7
    response_2=spi_send_8_SD(0xFF);
8
    if(response_2==resp) break;
9
    i++;
10
  }
11
  
12
  return response_2;
13
}

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

von Andreas K. (a-k)


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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Schonmal unsigned char versucht?

von Klaus (Gast)


Lesenswert?

Tatsächlich - wieder was gelernt !

Danke.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

Hallo,

das geht nicht.

Da kommt irgendein ERROR.

von C. H. (_ch_)


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.
1
char, signed char: 8 Bits; Min: -128; Max: 127

Gruß
Christian

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.