Forum: Mikrocontroller und Digitale Elektronik UC3C CAN Inbetriebnahme


von Dionysos 3. (dionysos328)


Lesenswert?

Hallo Leute,

ich muss die beiden CAN Interfaces eines UC3C in Betrieb nehmen.
Ich habe zuvor keine Erfahrung mit AVR32 Controllern gemacht und bin von 
der Fülle der Funktionen ziemlich erschlagen.

Ich arbeite nun schon einige Tage die Beispiele aus dem ASF durch, diese 
sind jedoch nur rudimentär dokumentiert und kompliziert 
nachzuvollziehen.

Das AVR32 Wiki ist auf den ersten Blick vielversprechend, besteht jedoch 
nur aus ~5 Seiten...

Literatur habe ich zu AVR32-Controllern auch nicht wirklich gefunden.

Was mir nun fehlt, ist eine einfache Grundkonfiguration für den UC3C, in 
dem wirklich nur die die Funktionen stecken, die eine erste 
Kommunikation per CAN ermöglichen (allerdings mit beiden Interfaces).

Am Besten in der Art der CAN-Lib von kreatives-chaos.com.

Wie soll ich nun vorgehen?

Vielen Dank schon mal,
dionysos328

von Dionysos 3. (dionysos328)


Lesenswert?

keiner auch nur einen Vorschlag?

von Volker (Gast)


Lesenswert?

im Atmel Studio 6 gibt es für das Evalkit 3 Beispiele für eine CAN 
Implementierung, hast du sie dir schonmal angeschaut?

Einen CAN Stack zu Implementieren ist auch kein Plug&Play, genauso wenig 
wie TCPIP oder USB Stack. Ich meine die Beispiele sind gut genug um das 
Konzept zu erlernen

von Dionysos 3. (dionysos328)


Lesenswert?

Ja, das Beispiel aus dem ASF habe ich mir natürlich zuerst angesehen.

Ich kannte Kommunikation per CAN bisher nur vom MCP2515 mit einem 
8bit-µC,
jetzt mit einem AVR32 ist das ungemein komplizierter.

Die Beispiele aus dem ASF sind meiner Meinung stellenweise unnötig 
verschachtelt.
Gibt es denn nicht irgendwo eine Einbindung des CAN-Interfaces eines 
AVR32 die anders gelöst wurde?

von Dionysos 3. (dionysos328)


Lesenswert?

ich bin jetzt dabei, mir meine eigenen Sende- und Empfangsfunktionen zu 
gestalten.

Was ich aber in den Atmel Beispielen nicht ganz verstehe, ist das 
Empfangen von Nachrichten.

Mit einem MCP2515 kannte ich dass so: Wenn eine Nachricht eingetroffen 
ist, wurde ein Interrupt ausgelöst. Innerhalb dieser ISR wurde die 
Nachricht abgeholt.

z.B. im ASF CAN_Example21 ist das nun so:

Wenn die Statemachine im "Reception Mode" ist, wird eine Funktion 
can_example_prepare_data(1); aufgerufen.

Dahinter verbirgt sich folgendes:

else if (mode == 1)
  {
        can_init(0,
                 ((U32)&mob_ram_ch0[0]),
                 CANIF_CHANNEL_MODE_NORMAL,
                 can_out_callback_channe0);

        // Allocate one mob for RX
        appli_rx_msg.handle = can_mob_alloc(0);

        can_rx(0,
               appli_rx_msg.handle,
               appli_rx_msg.req_type,
               appli_rx_msg.can_msg);
  }

Es wird also eine Initialisierung des Can vorgenommen, im Mode "Normal".

Anschließend wird ein MOB alloziert und die can_rx aufgerufen.

Meine Frage ist nun, wo signalisiert wird, dass eine Nachricht 
eingetroffen ist.
Die Funktion wartet doch nicht in einer Schleife aus das Eintreffen 
einer Nachricht, oder?

: Bearbeitet durch User
von elpedro (Gast)


Lesenswert?

Habe gerade das gleiche Anliegen wie du... Hast du schon etwas gefunden 
bzw. selbst gebaut? Würde mich auch über eine Starthilfe freuen...

lg

von Dionysos 3. (dionysos328)


Lesenswert?

Ich bin schon etwas weiter, d.h. ich kann mit beiden Kanälen senden und 
empfangen.

Allerdings hängt sich mein Programm nach einer bestimmten Anzahl 
Messages auf.

Thread und Quellcode hier:
Beitrag "UC3C Problem mit 2. CAN-Kanal"

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.