mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik defines verständnisfrage FCPU Warning


Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe immer folgendes Warning:

c:/programme/winavr-20070525/bin/../avr/include/util/delay.h:84:3: 
warning: #warning "F_CPU not defined for <util/delay.h>"

nun habe ich in meinem Main schon extra diese Reienfolge angebracht:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <stdlib.h>
#define F_CPU 8000000
#include <util/delay.h>

wie bekomme ich das in den griff, das das richitg ineinander fasst? 
makefile?

Gruß,
Yve

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Reihenfolge ist dergestalt, dass sie diese Warnung nicht erzeugen 
sollte.
Bist du sicher, dass du auch die richtige Datei compilierst?

Autor: Thi Lo (flothi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yvonne J. schrieb:
> wie bekomme ich das in den griff, das das richitg ineinander fasst?
> makefile?

Japp - ist die sinnvollere Variante

> Gruß,
> Yve

Florian

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ich binde sie direkt im main ein, und dann nutze ich sie auch noch in 
einer anderen Datei...

es kann doch aber nicht sein, das ich in jeder c Datei in der ich delay 
nutzen will, wieder FCPU definieren muss, das ist doch nicht richtig?

Yve

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yvonne J. schrieb:

> es kann doch aber nicht sein, das ich in jeder c Datei in der ich delay
> nutzen will, wieder FCPU definieren muss, das ist doch nicht richtig?

Doch das ist richtig.

Jedes C-File wird unabhängig von allen anderen compiliert. Daher muss in 
jedem C-File alles enthalten sein, was für dieses C-File relevant ist. 
Was in a.c drinnen steht, interessiert den Compiler nicht, wenn er b.c 
compiliert.

In welcher Form du jedem C-File eine Definition für F_CPU zur Verfügung 
stellst, ist allerdings eine ganz andere Geschichte.

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...globales define?

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...eines verstehe ich dann noch nicht so ganz:

wenn ich soetwas in meinem header verbastel:

#ifndef LTC2723WC_H
#define LTC2723WC_H


fdgdfg


#endif

um Ihn gegen mehrfaches einbinden zu (schützen) dann ist das define 
(Flag) auch gültig wenn ich diesen Header an anderen Stellen wieder 
einbinde - das passt für mich nicht zusammen...

yve

Autor: Thi Lo (flothi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder mit dem von dir bereits angesprochenen makefile - das ist dann dein 
"globales define".

vg

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yvonne J. schrieb:

> wenn ich soetwas in meinem header verbastel:
>
> #ifndef LTC2723WC_H
> #define LTC2723WC_H
>
>
> fdgdfg
>
>
> #endif
>
> um Ihn gegen mehrfaches einbinden zu (schützen) dann ist das define
> (Flag) auch gültig wenn ich diesen Header an anderen Stellen wieder
> einbinde

in derselben C-Datei

Der include Guard schützt dich vor solchen Dingen

main.c
******
#include "LTC2723WC.h"
#include "LTC2723WC.h"

Natürlich wird das niemand so schreiben. Trotzdem kann der Fall 
auftreten, dass ein Header File mehrmals inkludiert wird, wenn der 2.te 
include indirekt erfolgt: Ein a.h includiert ein b.h welches ein 
LTC2723WC.h inkludiert.
Schreibst du dann
#include "LTC2723WC.h"
#include "a.h"

Dann würde LTC2723WC.h 2 mal includiert werden. Das 2te mal dann eben 
über den Umweg a.h, b.h.

Davor schützt ein include Guard.

Vor dem Fall
LTC2723WC.h wird in a.c
LTC2723WC.h wird in b.c
includiert braucht er auch nicht schützen. Denn a.c wird ja sowieso 
getrennt von b.c compiliert.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten machst Du Dir ein "main.h" wo Du alle globalen defines 
und includes einträgst.

Bei alle andern C.Dateien brauchst Du dann bloss noch das "main.h" zu 
inkludieren plus spezifische Header-Dateien die nur für dies Sourcdatei 
benötigt werden.

Autor: Yvonne J. (laserlight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..soetwas geht mir auch gerade durch den Kopf - guter Plan!

yve

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.