Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 Bibliothek


von Christoph A. (paul87)


Lesenswert?

Hallo Leute ich brauche wieder mal eure Hilfe. Ich habe ein paar 
generelle Verständnisfragen die mich schon längere Zeit plagen.

Also ich verwende den oben genannten µC und die hervoragende Bibliothek 
vom Roboterclub Aachen, die viele von euch sicher kennen. Leider gibt es 
dazu keine Dokumentation.

In den Beispielprogrammen werden immer Funktionen wie can_get_message(), 
can_send_message(), ... usw. verwendet. Aber nirgens kann ich diese 
Funktionen wirklich finden. In der Bibliothek sind ledig Funktionen wie 
at90can_get_message() oder at90can_send_message() zu finden. Wie 
funktioniert das und woher weiß ich wie ich die Funktionen aufgerufen 
werden?

Vielen Dank für eure Hilfe.

von iNerd (Gast)


Lesenswert?

Kennst Du diese Seite:
http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek


Dort sind einige Sachen kurz erklärt. Eigentlich brauchst Du ja nur die 
LIB entsprechend deiner Bedürfnisse kompilieren, die LIB und can.h 
einbinden und schon kannst Du die Funktionen verwenden.

Kleiner Tip zur beliebten Stolperfalle: Nach dem Init Interrupts 
aktiveren, ansonsten ist nach 15 empfangenen CAN-Nachrichten Schluß, da 
dann die Hardwarebuffer voll sind und nicht mehr frei gemeldet werden.

von Fabian G. (kjion) Benutzerseite


Lesenswert?

Christoph A. schrieb:
> In den Beispielprogrammen werden immer Funktionen wie can_get_message(),
> can_send_message(), ... usw. verwendet. Aber nirgens kann ich diese
> Funktionen wirklich finden.

Da die Bibliothek für mehrere CAN Controller compiliert werden kann, 
werden je nach Konfiguration die Funktionen per Define "umbenannt".

Wenn du den Code also für AT90CAN compilierst, dann entspricht 
can_send_message() genau der Funktion at90can_send_message(). Gleiches 
bei can_get_message() und at90can_get_message().

Patches für die Dokumentation werden übrigens gerne angenommen :)

Grüße Fabian

von Christoph A. (paul87)


Lesenswert?

Hallo,

vielen Dank für die schnellen Antworten. Ich hatte mir fast gedacht, 
dass es so funktioniert. Aber wenn es nirgends steht, kann man nur 
vermuten. :)

@ Fabian: Was meinst du mit Patches für die Dokumentation? Existiert 
denn eine Dokumentation?

LG

von Fabian G. (kjion) Benutzerseite


Lesenswert?

> Aber wenn es nirgends steht, kann man nur vermuten. :)

Zu finden wäre es in can_private.h :)

> Was meinst du mit Patches für die Dokumentation? Existiert
> denn eine Dokumentation?

Auf der Webseite und in der Doxygen Dokumentation ist die Benutzung 
beschrieben. Mehr existiert nicht.

Grüße Fabian

von Christoph A. (paul87)


Lesenswert?

Ich habe eine weitere Verständnisfrage. Wie funktioniert das mit dem 
empfangen? Wenn eine Nachricht zum empfangen auf dem Bus liegt, dann 
wird ein Interrupt ausgelöst und die Nachricht wird gespeichert? 
Anschließend kann ich diese dann über can_get_message() abrufen? Zum 
Beispiel zyklisch über eine Schleife?

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.