Forum: Mikrocontroller und Digitale Elektronik CAN-Bibliothek AT90CAN128


von Kai M. (mantis2000)


Angehängte Dateien:

Lesenswert?

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..

von Kai M. (mantis2000)


Lesenswert?

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

von Kai M. (mantis2000)


Lesenswert?

Guten Morgen,
kann mir wirklich niemand bei meinem Problem helfen?
Allmählich verzweifel ich etwas. :(

Grüße
Mantis

von Kai M. (mantis2000)


Angehängte Dateien:

Lesenswert?

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

von xyr (Gast)


Lesenswert?

Naja ich finden den code ziemlich suboptimal.

z.B. set_baud ...Wie ist die Quarzfrequenz da
verwurselt->gar nicht->Käse

von Kai (Gast)


Lesenswert?

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...

von TestX .. (xaos)


Lesenswert?

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

von Harald (Gast)


Lesenswert?

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.

von JayB (Gast)


Lesenswert?

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

von Jens B. (jayb)


Lesenswert?

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
Noch kein Account? Hier anmelden.