Forum: Compiler & IDEs Fehler bei Benutzung von crc16.h


von Gast (Gast)


Lesenswert?

Hallo,
vieleicht kann mir einer helfen bei meinem Problem??
Versuche die crc16 einzusetzen, aber es kommt die Fehlermeldung
"warning: implicit declaration of function"
hier mein Code:


#include <avr\io.h>
#include <avr\interrupt.h>
#include <avr\pgmspace.h>
#include <avr\wdt.h>
#include <util/crc16.h>

//Makro-Definitionen
#define SETBIT(ADRESS,BIT) (ADRESS|=(1<<BIT))
#define CLEARBIT(ADRESS,BIT) (ADRESS&=~(1<<BIT))
#define CHECKBIT(ADRESS,BIT) (ADRESS&(1<<BIT))


unsigned int crc_flash;
uint16_t p_flash;

//Ausgänge definieren auf Port B
#define Ausgang    PORTB
#define out1    PB0
#define Eingang    PORTD
#define test    PD0


void Port_Init(void)
 {
    PORTB = 0x00 ;
    DDRB = 0x01 ;
    PORTD = 0x41;
    DDRD = 0x00;
 }

void Flash_test(void)
{
  unsigned char temp;
  for(p_flash = 0; p_flash < FLASHEND; p_flash++);
  {
    temp = pgm_read_byte(&p_flash);
    crc_flash = crc_update(crc_flash, temp);            //Überprüfung 
des Flashspeichers
    wdt_reset();
    if(crc_flash == 1234)
    {
      CLEARBIT(PORTB, out1);
    }
  }
}



int main()
{

  while(1)
  {

    if(!(CHECKBIT(Eingang, test)))    //Test aktiv ? (bei aktiv low)
    {
      SETBIT(PORTB, out1);

      //hier erfolgt der Speichertest
      Flash_test();
    }
    else
    {
      CLEARBIT(PORTB, out1);
    }
  }
  return 0;
}

von Stefan E. (sternst)


Lesenswert?

Und auf welche Zeile bezieht sich die Meldung?

von Gast (Gast)


Lesenswert?

auf die Zeile mit der crc_update

von Stefan E. (sternst)


Lesenswert?

Es gibt ja auch keine Funktion mit dem Namen in util/crc16.h.

von Gast (Gast)


Lesenswert?

Aber ich muss den Ordner für die crc16.h angeben oder nicht??

von Stefan E. (sternst)


Lesenswert?

Ja. Du hast einen falschen Namen bei der Funktion angegeben.

von Gast (Gast)


Lesenswert?

Verstehe ich nicht ganz, welchen falschen Namen?

von Kai G. (runtimeterror)


Lesenswert?

Kann es sein, dass du in der Zeile "crc16_update" meinst? Die habe ich 
der .h-Datei zumindest gefunden...

von Stefan E. (sternst)


Lesenswert?

"crc16_update" ist zwar auch falsch, aber schon näher dran. ;-)

von Gast (Gast)


Lesenswert?

Es kommt bei mir folgende Meldung:
warning: implicit declaration of function 'crc_update'
und zeigt auf die Zeile:
crc_flash = crc_update(crc_flash, temp);

von Stefan E. (sternst)


Lesenswert?

Der Name "crc_update" ist falsch.

Ich weiß nicht, was du daran nicht verstehst. Noch deutlicher kann ich 
es nicht sagen, ohne dir den richtigen Namen zu nennen, was ich 
prinzipiell nicht will.

von Gast (Gast)


Lesenswert?

Habe nun auf crc16_update geändert ohne Erfolg, kommt die
selbe Fehlermeldung.
Stehe glaube voll auf dem Schlauch.

von Kai G. (runtimeterror)


Lesenswert?

@Gast
Zeig doch mal in der util/crc16.h, welche Funktion du aufrufen willst 
(Zeile rauskopieren)

von Kai G. (runtimeterror)


Lesenswert?

>Habe nun auf crc16_update geändert ohne Erfolg, kommt die
>selbe Fehlermeldung.

Weil die Parameterzahl nicht stimmt!?
http://www.algorithm-code.com/wiki/CRC16_Algorithm

von Stefan E. (sternst)


Lesenswert?

Ok, ich gebe auf, die Funktion heißt richtig:
_crc16_update

von Kai G. (runtimeterror)


Lesenswert?

Mal eine Frage als C-nur-peripher-Kenner: Wo kommt der Unterstrich her? 
Ich hatte jetzt ganz blauäugig in die crc16.h geschaut - oder habe ich 
die falsche erwischt?

von Gast (Gast)


Lesenswert?

Ich danke Stefan für die Auflösung, was so ein Strich alles ausmacht.

von Stefan E. (sternst)


Lesenswert?

Kai Giebeler schrieb:
> Mal eine Frage als C-nur-peripher-Kenner: Wo kommt der Unterstrich her?
> Ich hatte jetzt ganz blauäugig in die crc16.h geschaut - oder habe ich
> die falsche erwischt?

In deiner crc16.h ist der Unterstrich nicht drin? Schwer zu glauben.

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.