www.mikrocontroller.net

Forum: Codesammlung CAN-Bibliothek für den at90CAN128 und das AVRStudio

Autor: Marco Glietsch (mg-programmer)
Datum: 29.04.2008 11:06
Dateianhang: CAN.rar (1,5 MB, 88 Downloads)

Hallo,

ich habe im Rahmen einer wissenschaftlichen Arbeit eine Bibliothek
geschrieben, mit der es möglich ist den CAN-Controller des AT90CAN128
relativ schnell und komfortabel ansprechen zu können.
Eine ausführliche Anleitung und Beispielcodes sind auch vorhanden.

Bei Fragen einfach melden


MfG

Marco
Autor: Werner A. (homebrew)
Datum: 29.04.2008 13:14

Sorry, aber sollte man nicht im Rahmen einer wissenschaftlichen Arbeit
das h-File nur für Deklarationen und die Funktionen in ein c-File
auslagern?

Ansonsten sieht das echt gut aus. Vor allem, dass du die Docu dazu
gelegt hast. Danke
  Werner
Autor: Marco Glietsch (mg-programmer)
Datum: 29.04.2008 17:35
Dateianhang: CAN.rar (1,5 MB, 86 Downloads)

Ok, hier nochmal die Version mit ausgelagerten Funktionen.
Ich würde mich über Anregungen, Verbesserungen oder einfach nur eine
Rückmeldung freuen...

Gruß Marco
Autor: Gerhard (Gast)
Datum: 04.05.2008 19:30

Hallo Marco,
der klare Stil des Programms gefällt mir. In dem pdf File gehen aber set
und get durcheinander.
Welchen Compiler verwendest Du? Wie sieht main() aus? Wo sind die
Interrupt Service Routinen? Z.B. wartest Du bei CAN_sendData(...) bis
TXOK in CANSTMOB.
Dieses Bit kann nur durch "read modify write" geklärt werden und nicht
durch clearbit.... Ich würde gern auf Deinem Ansatz aufbauen!
Gruß Gerhard
Autor: Marco Glietsch (mg-programmer)
Datum: 04.05.2008 20:42

Hallo Gerhard,

zuerst einmal vielen Dank für die Rückmeldung.
Es freut mich zu lesen, dass der Stil des Programms dir gefällt.
Bei welcher Funktion genau sind get und set durcheinander?
Ich habe für diese Bibliothek den WinAVR Compiler zusammen mit dem
AVRStudio verwendet.
Die Hauptfunktion main() kann sehr einfach aussehen. Um zum Beispiel
Daten zu senden:
main(){
  CAN_init (1000 , TX );

  // Zu sendende Daten
  CAN_message msg ;
  msg.id = 0 x12345678 ;
  msg.idm = 0 xffffffff ;
  msg.data [0] = 0 x11 ;
  msg.data [1] = 0 x22 ;
  msg.data [2] = 0 x33 ;
  msg.data [3] = 0 x44 ;
  msg.data [4] = 0 x55 ;
  msg.data [5] = 0 x66 ;
  msg.data [6] = 0 x77 ;
  msg.data [7] = 0 x88 ;

  // Objekt 0 auf Empfang setzen
  CAN_enableMOB (0, RECEIVE_DATA , msg );

  // Daten ¨uber Objekt 0 senden
  CAN_sendData (0, msg . data );

  while(1){}
}

Eine ISR zum Empfang von Daten ist am Ende der CAN.c angehängt. Diese
kann ggf. individuell angepasst werden.
Beim Senden von Daten über CAN_sendData() wird gewartet, bis das TXOK
Flag gesetzt wird und erst dann die Funktion beendet.
Das mit dem read-modify-write beim TXOK stimmt so wie du es geschrieben
hast. Komischerweise funktioniert es aber auch mit dem clearbit() Makro
(zumindest bei meinem Board und Debugger).
Wenn du willst kann ich dir ein paar fertige Programme zukommen lassen,
die die CAN-Funktionalität ausnutzen...

Wenn du noch Fragen hast werde ich sie dir gerne beantworten.

Viele Grüße Marco

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net