Forum: Mikrocontroller und Digitale Elektronik Unterstützung bei Warteschleife (delay.h)


von Andreas V. (wicky)


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

von Sven P. (Gast)


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).

von Andreas V. (wicky)


Lesenswert?

Vielen Dank für die schnelle und ausführliche Hilfe!!!

Schönen Abend

Andreas

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.