Unterstützung bei Warteschleife (delay.h)

OP #1525290
Lesenswert?

Hallo,

kann mir einmal bitte jemand folgendes erklären:

Ich habe ein ganz einfaches Blinken einer LED simuliert.

(STK 600, Atmel2650, mit 16MHZ)

#include<avr/io.h>

//#ifndef F_CPU
//#define F_CPU 1600000000UL
//#endif

#include<util/delay.h>



int main(void){

  DDRB = (1<<PB0);


  while(1){

  PORTB^= (1<<PB0);
  _delay_ms(1);


  }
  return 0;
}

beim compilieren erhalte ich folgenden Hinweis:
c:/winavr-20090313/lib/gcc/../../avr/include/util/delay.h:85:3: warning: 
#warning "F_CPU not defined for <util/delay.h>"


in der delay.h habe ich aber die 16MHZeingetragen:
#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <util/delay.h>"
# define F_CPU 1000000UL
# define F_CPU 16000000UL
# define F_C
#endif

warum ist dies falsch, den wenn ich in dem c.file die Definition 
vornehme, wie oben (Auskommentiert) dann funktioniert es.

Und warum erhalte ich beim compilieren zuerst den Wahrnhinweis und beim 
erneuten compilieren ohne das etwas geändert wurde gibt es keinen 
Wahrnhinweis mehr?

Andreas
Gast #1525299
Lesenswert?

Andreas V. schrieb:
> warum ist dies falsch
Weil du als Endbenutzer in der <util/delay.h> nichts zu suchen oder zu 
verändern hast. (-> AVRlibc-Anleitung)

> den wenn ich in dem c.file die Definition
> vornehme, wie oben (Auskommentiert) dann funktioniert es.
Dann ist es auch richtig.

> Und warum erhalte ich beim compilieren zuerst den Wahrnhinweis und beim
> erneuten compilieren ohne das etwas geändert wurde gibt es keinen
> Wahrnhinweis mehr?
Weil dein Build-System beim zweien Bauen feststellt, dass das Projekt 
(also deine Objekte) schon auf dem neuesten Stand sind und es nichts zu 
tun gibt. (-> Make-Anleitung)

Das heißt im einfachsten Fall, dass der Übersetzer nur dann ausgeführt 
wird, wenn irgendeine Quelltextdatei neuer ist, als die Programmdatei 
(d.h., es wurde seit dem letzten Übersetzen irgendetwas verändert).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren