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
Dann wirf doch mal einen Blick in das von AVRStudio generierte Makefile.
Im vom AVRstudio generierten Makefile steht -DF_CPU=7372800UL. Muss dieser Wert F_CPU erst zugewiesen werden?
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?
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.
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)
|
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?
Such mal in allen Files nach F_CPU, vielleicht ist da irgendwo noch etwas anderes definiert. Wie sind die Optimierungen eingestellt ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.