Hallo, ich arbeite zur Zeit an einer CAN-Bibliothek zur Integration von Atmel Prozessoren in CAN-Bussysteme. Dabei verwende ich einen AT90CAN128 auf dem AVR-CAN Modul von Olimex und arbeite mit dem AVR-Studio 4.19 und einem STK600 als Programmierschnittstelle. Durch verschiedene Codebeispiele und vorhandene Bibliotheken konnte ich auch die meisten Funktionen einwandfrei integrieren. An dieser Stelle ein Dank an die vorangegangen Programmierer, die mir die Arbeit enorm erleichtert haben. ;) Nun habe ich aber das Problem, dass Frames mit 29-Bit Identifier nicht korrekt oder garnicht auf den Bus übertragen werden und kann auch nach einigem Suchen und Debuggen den Fehler einfach nicht finden. Mit sehr hoher Wahrscheinlichkeit ist es ein Logikfehler, den ich selbst nicht identifizieren kann. :( Im Anhang befindet sich der aktuelle Stand meiner Arbeit. Ich würde mich freuen, wenn jemand mal drüber schauen könnte und mir mit etwas Glück auch sagen kann woran es liegt. Leider ist die Struktur durch die schrittweise Integration der Funktionen noch nicht so übersichtlich, wie ich es gerne hätte. Ich bitte dies zu entschuldigen und danke schon im voraus für eure Hilfe..
Hallo nochmal ;) Ich wollte dem Beitrag nur nochmal etwas mehr Aufmerksamkeit verschaffen und an dieser Stelle nachfragen, ob schon jemand dazu gekommen ist in meinen Code reinzuschauen? :) Da ich zur Zeit nicht weiter arbeiten kann solange ich den Fehler nicht behoben habe. :( Viele Grüße Mantis
Guten Morgen, kann mir wirklich niemand bei meinem Problem helfen? Allmählich verzweifel ich etwas. :( Grüße Mantis
Hallo mal wieder ;) ich habe inzwischen das Problem gefunden und bitte die Aufregung zu entschuldigen. ^^ Es lag scheinbar tatsächlich nicht an meinem Code, was erklärt warum ich den Fehler nicht finden konnte. :D Das Problem lag am verwendeten CAN-Monitor. In den Einstellungen ist mir nicht aufgefallen, dass man den Monitor zwischen 11-Bit und 29-Bit Identifier umschalten kann/muss. Aufgrund dessen wurde der Datenverkehr nicht korrekt angezeigt. Dies fiel mir allerdings erst auf, nachdem ich einen zweiten Controller beschafft habe und sie untereinander einwandfrei kommunizieren konnten, sowohl in CAN 2.0A als auch in CAN 2.0B ... Nun habe ich den Code noch etwas verfeinert (siehe Anhang). Würde mich aber freuen, wenn jemand Verbesserungsvorschläge für mich hätte. ;) MfG Mantis
Naja ich finden den code ziemlich suboptimal. z.B. set_baud ...Wie ist die Quarzfrequenz da verwurselt->gar nicht->Käse
Also etwas konstruktiver und ausführlicher wäre schön gewesen. -.- Da mir aus deinem tollen Beitrag nicht klar wird was du mir sagen willst, geschweige denn wie du es besser machen würdest. Aber danke...
Kai schrieb: > Also etwas konstruktiver und ausführlicher wäre schön gewesen. -.- > Da mir aus deinem tollen Beitrag nicht klar wird was du mir sagen > willst, > geschweige denn wie du es besser machen würdest. > Aber danke... das setzen der can baud klappt nur bei 16mhz fcpu, siehe datenblatt. da gehört noch nen switch (fcpu) rein für ein paar "andere" can bauds. dein code ist leider ein wenig unverständlich geschrieben..es fehlen kommentare etc. außerdem würde ich zum senden+empfangen von nachrichten zum besseren handling ein struct wie CANMessage verwenden, um das ganze ein wenig anwenderfreundlicher zu gestalten. wenn du dadran interessiert bist eine lib zu entwickeln kann ich sonst gerne mal meine lib zu verfügung stellen..die ist ein wenig umfangreicher, wobei ich an dem ding auch schon seit jahren entwickle
Hallo Kai, Kennst Du eigentlich diese Lib: http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek Die habe ich schon ein paar Mal genutzt und finde sie gelungen und fehlerfrei. Vielleicht kannst Du dich ja damit messen bzw. Verbesserungsmöglichkeiten ausmachen.
Hey leutchen Hat jemand die Chaos can Lib unter Studio 6 laufen ?? (Mit at90can128) Ich habe unter win avr die lib xx.a erstellt, wie in der Readme beschrieben, jedoch meckert Studio 6 bei der can_init
Guten Tag Ich bin dabei die can lib von chaos zu verwenden. Hab die lib file so wie in der readme erstellt... und in meinem projekt eingefühgt, jetzt mault des studio 6 folgendes: Fehler 1 undefined reference to `can_init' C:\Atmel Studio\Can_mainboard\CAN_Mainboard\Debug/.././CAN_Mainboard.c 22 1 CAN_Mainboard Hier des Programm: # define F_CPU 1600000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdint.h> #include "can.h" int main(void) { can_init(BITRATE_125_KBPS); while(1) { //TODO:: Please write your application code } } kann mir da vielleicht einer helfen ?!
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.