AT90CAN128 Bibliothek

OP #2752903
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.
Gast #2752930
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.
Persönliche Seite #2753123
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
OP #2754010
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?

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