?? readme.txt
字號:
Motivation----------Die Bibliothek ist f黵 den [Roboterclub Aachen e.V.][rca] entstanden. Vor zwei Jahren stand ein Wechsel des internen Bussystems an, die Wahl fiel dabei auf denCAN-Bus, da er eigentlich ideal f黵 diese Anwendung ist. Es gab nur leider keine Open-Source Bibliotheken f黵 die Ansteuerung der gebr鋟chlichsten CAN-Controller, so dass selbst schreiben angesagt war.Die Bibliothek ist jetzt seit einiger Zeit in Gebrauch und wurde dabei vom [MCP2515][] auf die anderen CAN-Controller erweitert.Features--------* Unterst黷zung des MCP2515* Unterst黷zung des SJA1000 (f黵 AVRs mit oder ohne externem Bus-Interface!)* Unterst黷zung der AT90CAN-Reihe* Aufbau als Library, damit werden nur die ben鰐igen Funktionen verwendet* geringer Resourcen-VerbrauchDie Bibliothek braucht ca. 1500 Byte Flash mit allen Funktionen. Verwendet man keine dynamischen Filter sind es 370 Byte weniger.### FilterF黵 den MCP2515 gibt es zwei Arten die Masken und Filter anzusprechen, zum einen "statisch" mit einer Liste die zur Compile-Zeit angelegt wird oder "dynamisch" w鋒rend der Laufzeit, dann aber mit gr鲞erem Flash Verbrauch.Die AT90CANxxx kennen nur die dynamischen Filter.Gleiches gilt f黵 den SJA1000. Dieser bietet zwar theoretisch zwei Filter f黵 Standard-Nachrichten bzw. einen f黵 Extended-Nachrichten, in der Praxis sind diese aber mehr oder weniger unbrauchbar.Einbinden ins eigene Programm-----------------------------Zuerst einmal muss die Bibliothek erstellt werden: Dazu 鋘dert man im `src/`-Ordner die Datei 'config.h' f黵 seine Konfiguration ab und stellt im Makefile den verwenden AVR-Typ ein.Dann kann die Bibliothek gebaut werden: $ make libWer WinAVR verwendet kann auch einfach im Programmers Notepad eine der Dateien aus dem `src/`-Ordner 鰂fnen und dann "Tools > [WinAVR] Make All" ausw鋒len.Jetzt sollte eine Datei 'libcan.a' entstanden sein. Zusammen mit 'can.h' und 'config.h' k鰊nen diese Dateien jetzt in das eigene Projektverzeichnis kopiertwerden.Um die Funktionen wirklich nutzten zu k鰊nen muss nur noch den Linker mitgeteiltwerden, dass er die Bibliothek einbinden soll. Bei dem Standard-WinAVR-Makefilemuss dazu die folgende Zeile hinzugef黦t werden (um Zeile 266ff): ... LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) LDFLAGS += -L. -lcan # hinzuf黦enDer Linker sucht dann automatisch im aktuellen Verzeichnis nach der Datei libcan.a und f黦t die ben鰐igten Funktionen (und nur die) in den Quellcode ein.#### Hinweise zur Benutzung der Ports:Da bei AVR's die I/O Pins mehrfach belegt sind, beachten Sie bitte unbedingt dieFusebits des von Ihnen eingesetzten AVR's, konkret am Beispiel ATmega32:Port C teilt sich Bit 2 - 5 mit der JTAG Schnittstelle, die ab Werk aktiviert ist - deaktivieren! Port D teilt sich Bit 0 und 1 mit der seriellen Schnittstelle. Wenn Sie alle Pins verwenden wollen, d黵fen Sie den MAX 232 nicht best點ken.Wenn man dann noch die Quelle der Oszillatorfrequenz richtig setzt, kann man fr鰄lich CANnen:ATmega32 Low Fuse: 0xEF (External Crystal)ATmega32 High Fuse: 0xD9 (JTAG Disabled) Testprogram-----------Ein Program was einfach eine Nachricht per CAN verschickt k鰊nte folgenderma遝naussehen:int main(void){ // initialisieren des MCP2515 can_init(BITRATE_125_KBPS); // erzeuge eine Testnachricht can_t msg; msg.id = 0x123456; msg.flags.rtr = 0; msg.flags.extended = 1; msg.length = 4; msg.data[0] = 0xde; msg.data[1] = 0xad; msg.data[2] = 0xbe; msg.data[3] = 0xef; // Nachricht verschicken can_send_message(&msg); while (1) { }}Lizenz------Die Bibliothek steht unter einer [BSD-Lizenz][] und darf damit frei verwendetwerden.Wenn jemand 膎derungen vornimmt w黵de ich bitten mir oder jemand anderem ausdem [Roboterclub][rca] diese zukommen zu lassen, damit wir sie gegebenenfallsin die Software einbauen k鰊nen, so dass dann alle etwas davon haben.[rca]: http://www.roboterclub.rwth-aachen.de/[MCP2515]: http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515[BSD-Lizenz]: http://de.wikipedia.org/wiki/BSD-Lizenz
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -