Forum: Mikrocontroller und Digitale Elektronik C - Pointer - IAR


von Heschdy (Gast)


Lesenswert?

Hi,

irgendwie stehe ich gerade etwas auf dem schlauch.....
möchte gerne auf eine adresse abprüfen aber bekomme es nicht hin...
1
unsigned char APPFLASH *address;
2
3
....
4
5
6
do
7
{
8
    __watchdog_reset();
9
    address++;
10
    if(address == *0x08)
11
    {......

Vielen Dank schon mal

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

if(address == *0x08)


Lass mal den Stern weg und caste den Wert nach (void *)

    if (address == (void *) 0x08)


Ich nehme zumindest an, daß Du überprüfen möchtest, ob "address" den 
Wert 8 enthält.

von Heschdy (Gast)


Lesenswert?

das ganze ist für die programmierung des eeprom und ich möchte das beim 
durchlauf gewisse register nicht überschrieben werden. möchte also 
überprüfen ob die adrresse = 8 ist.

von Heschdy (Gast)


Lesenswert?

leider hat es nicht funktioniert

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

"es hat nicht funktioniert" ist nicht wirklich aussagekräftig.

von Heschdy (Gast)


Lesenswert?

Entschuldige, :-)

ich kann leider nciht sehr viel mehr dazu sagen, da ich keine 
möglichkeit zum debuggen habe.

villeicht nochmals ein wenig ausführlicherer programmausschnit:
1
unsigned char APPFLASH *address;
2
3
....
4
5
6
do
7
{
8
  __watchdog_reset();
9
  address++;
10
  if(address == (void *) 0x08)
11
  {
12
  //nichts tun (Speicherplatz der Seriennummer)
13
  }
14
  else
15
  {
16
  spmEEWriteByte((unsigned long)address & 0xffff, *p++);
17
  }
18
}
19
while....

Das ist ein bootloader mit welchem ich unter anderem das eeprom 
"flashe", nur an gewissen stellen sollen eben die informationen nicht 
überschrieben werden, weil dort presets gespeichert sind.

von Rahul D. (rahul)


Lesenswert?

>spmEEWriteByte((unsigned long)address & 0xffff, *p++);

adress ist doch gar kein Pointer, oder die Funktion ist auch 
unfunktionsfähig.
Du musst dich schon entscheiden, ob du einen Pointer oder eine Variable 
benutzen willst.

>(unsigned long)address & 0xffff
                          ^^^^^^ kannst du dir sparen.

von Heschdy (Gast)


Lesenswert?

Mache ich das so, bekomme ich den folgenden Fehler
1
if(address == 0x08)

Error[Pe042]: operand types are incompatible ("unsigned char __flash *" 
and "int") C:\.....\loader.c 302

von Heschdy (Gast)


Lesenswert?

Niemand eine Idee?

Vielen Vielen Dank schon mal im vorraus... :-)

von Ralf H. (heschdy)


Lesenswert?

habe den fehler gefunden....


muss so heißen:
1
if((unsigned long)address == 0x08)

Vielen Dank....

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.