Forum: Mikrocontroller und Digitale Elektronik Einstellung F_CPU AVRStudio


von Jens (Gast)


Lesenswert?

Hallo,
ich habe ein Programm welches die serielle Schnittstelle nutzt 
geschrieben.
Wenn ich unter Project Options eine External Makefile auswähle, in 
welchem F_CPU auf 7372800 gestellt wird funktioniert die Serielle.
Nutze ich allerdings kein external Makefile sonderen definierte unter 
Project Options "Frequency" als 7372800 funktionierte die Serielle nicht 
(es kommt nur Müll an).

Hat einer eine Idee warum?

Gruß Jens

von Johannes M. (johnny-m)


Lesenswert?

Dann wirf doch mal einen Blick in das von AVRStudio generierte Makefile.

von Jens (Gast)


Lesenswert?

Im vom AVRstudio generierten Makefile steht -DF_CPU=7372800UL.
Muss dieser Wert F_CPU erst zugewiesen werden?

von Karl H. (kbuchegg)


Lesenswert?

Nein. Das -DF_CPU=7372800UL

entspricht einem
1
#define F_CPU 7372800UL
im C-Programm.


Wie hast du denn in deinem externen Makefile die Frequenz eingestellt? 
Und wie wird F_CPU im Programm verwendet?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Jens wrote:
> Im vom AVRstudio generierten Makefile steht -DF_CPU=7372800UL.
> Muss dieser Wert F_CPU erst zugewiesen werden?

Die Kommandozeilenoption -DF_CPU=7372800UL für den C-Präprozessor 
definiert (-D...=...) ein Makro (F_CPU) mit einem Makrowert (7372800UL)

Dadurch kann im Quellcode mit dem Makro F_CPU gerechnet werden. Mit der 
realen Situation in der Schaltung hat das noch nichts zu tun. Erst wenn 
der µC eine 7372800 Hz Taktquelle angeschlossen hat und er diese auch 
benutzt, was man mit den AVR Fuses einstellt, passt es.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Erg.C3.A4nzende_Hinweise_zur_Taktversorgung_.28kann_.C3.BCbersprungen_werden.29

> ich habe ein Programm welches die serielle Schnittstelle nutzt geschrieben.
> Wenn ich unter Project Options eine External Makefile auswähle, in
> welchem F_CPU auf 7372800 gestellt wird funktioniert die Serielle.
> Nutze ich allerdings kein external Makefile sonderen definierte unter
> Project Options "Frequency" als 7372800 funktionierte die Serielle nicht
> (es kommt nur Müll an).

Sourcecode?

Es gab mal im AVR-GCC-Tutorial Beispielcode und Makros zum Berechnen 
der Werte für das Baudratenregister, die nicht mit unsigned Werten (UL) 
für F_CPU konnten. AVR-Studio übergibt F_CPU als UL Wert... Vielleicht 
hast du eine solche alte Version erwischt.

von Jens (Gast)


Lesenswert?

Das externe Makefile wurde mit dem Programm MFile erstellt.
also: F_CPU=7372800

F_CPU wird zum einen von der delay.h und für die einstellung der 
Baudrate verwendet:
1
#define CALC_UBRR_VALUE(baud) ((F_CPU / 8 / (baud)) - 1)

von Karl H. (kbuchegg)


Lesenswert?

Jens wrote:
> Das externe Makefile wurde mit dem Programm MFile erstellt.
> also: F_CPU=7372800

OK.
Hast du schon mal ins Makefile reingeschaut, was MFile aus dieser Angabe 
gemacht hat?

von Jens (Gast)


Lesenswert?

Im Makefile steht:
F_CPU =  7372800

CDEFS = -DF_CPU=$(F_CPU)UL

von Pete K. (pete77)


Lesenswert?

Such mal in allen Files nach F_CPU, vielleicht ist da irgendwo noch 
etwas anderes definiert.

Wie sind die Optimierungen eingestellt ?

von Jens (Gast)


Lesenswert?

F_CPU ist sonst in keinem anderen file definiert.

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.