LIB bauen, Atmel Studio 7?

Gast #5677859
Lesenswert?

Hallo zusammen,


ich möchte gern die CAN LIB von Fabian Greif nutzen.

Aktuell habe ich hier einen Atmega 328 und eine kleine CAN Platine vom 
Chinamann mit MCP2515 als Controller.

Darauf habe ich das Demo Programm von Fabian Greif zum laufen bekommen 
:).

http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515

Soweit so gut. Nun möchte ich meinen AVR + den MCP in den sleep 
schicken.
Dazu bietet er auf seiner Website eine Bibliothek an, die unter anderem 
die sleep Funktion beinhaltet (downloadlink unter dem Text)

http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek

Jetzt mein Problem: Wie erstelle ich die canlib.a? Ich nutze Atmel 
Studio 7.
Wenn ich das Makefile damit öffne, dann sagt er mir immer das diese 
Datei automatisch erstellt wurde und ich daran nichts ändern kann. Das 
widerspricht sich allerdings mit der Aussage von Fabian, in der ich im 
Makefile noch eine Passage einfügen muss, damit der Linker weiß, dass er 
die Lib auch mit berücksichtigen soll.

Kann mir bitte jemand über den Berg helfen? Wie kann ich
a) mit Atmel Studio die libcan.a erstellen?
b) welche Dateien muss ich meinem Projekt hinzufügen (config.h, can.h 
und libcan. a in mein Projektverzeichnis kopieren und im Atmel Studio 
mit hinzufügen
c) muss ich dann nur die can.h includieren? oder noch mehr?
d) wie teile ich meiner Konfigiration mit, dass er die canlib.a mit 
berücksichtigen soll?

VG Jens
Gast #5677879
Lesenswert?

Hey,

vielen Dank für eine Antwort!

Ich habe gerade mal geschaut.

Unter den Projekteistellungen finde ich:

AVR/GNU Linker
--Libraries

Unter Pfad trage ich den Pfad ein, wo die Lib liegt. Soweit klar.

Aber in welchem Format trage ich die lib ein?
einfach "canlib.a"?

VG Paul
#5677883
Lesenswert?

Ich nutz den Code auch seit Langem, und ich würde das nicht als Library 
bauen.
Als Library kannst du u.A. nicht so einfach die Library mit anderen 
Chips nutzen, da da doch einiges an Hardware-spezifischen Code 
drinsteckt, der via Preprozessor ausgewählt wird.

Füg den gesamten Ordner als Kopie deinem Projekt hinzu und laß das mit 
übersetzen!

Das macht vieles einfacher.
Gast #5677894
Lesenswert?

Hallo,

vielen Dank für die schnelle Antwort!

Ich habe jetzt alle Dateien in mein Projektverzeichnis kopiert und die 
can.h inkludiert.

Dann habe ich das Testprogramm von Fabian kopiert. Leider lässt es sich 
nicht übersetzen :(.


Error    recipe for target 'can_buffer.o' failed
Error    recipe for target 'main.o' failed
Error    recipe for target 'mcp2515.o' failed
Error    recipe for target 'mcp2515_buffer.o' failed
Error    unknown type name 'prog_uint8_t'
Error    unknown type name 'prog_uint8_t'
Error    unknown type name 'prog_uint8_t'
Error    unknown type name 'prog_uint8_t'
Error    unknown type name 'prog_uint8_t'
Error    unknown type name 'prog_uint8_t'

Muss ich noch mehr includieren?

VG
#5677908
Lesenswert?

Pack dir die Dateien in ein eigenes Verzeichnis (z.B. can) in deinem 
Projekt-Root und in deinem eigenem Code includierst du mit
1
#include "can/can.h"

Natürlich musst du dann zusätzlich die can/config.h an deine Bedürfnisse 
(Ports) anpassen.
Zusätzlich musst du die Konstanten für den Takt anpassen.
Dein China-Modul hat vermutlich einen 8MHz Quarz, aber der Code ist auf 
16MHz ausgelegt.

Das Timing musst du in can/mcp2515.h ändern.

Für die 3 Werte gibt es Online-Rechner.
Gast #5677938
Lesenswert?

Gesundes Neues,

ich hab gemacht was du gesagt hast. Ist für die Übersicht auf jeden Fall 
schon mal besser!

Tq und Register für 8MHz anpassen und in der config.h meine Pins 
hinterlegen habe ich auch gemacht. Hat ja bei dem Beispiel ohne die lib 
schon funktioniert.

Leider habe ich immer noch das Problem das ich nicht kompilieren kann.

Die gleichen Fehlermeldungen wie oben. Was könnte ich noch falsch 
machen?

VG

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