Classes
Universelles CAN Interface

allgemeines CAN Interface für AT90CAN32/64/128, MCP2515 und SJA1000 More...

Classes

struct  can_error_register_t
 Inhalt der Fehler-Register. More...
 
struct  can_filter_t
 Datenstruktur zur Aufnahme von CAN-Filtern. More...
 
struct  can_t
 Datenstruktur zum Aufnehmen von CAN Nachrichten. More...
 

Bitdefinitionen

enum  can_bitrate_t {
  BITRATE_10_KBPS = 0, BITRATE_20_KBPS = 1, BITRATE_50_KBPS = 2, BITRATE_100_KBPS = 3,
  BITRATE_125_KBPS = 4, BITRATE_250_KBPS = 5, BITRATE_500_KBPS = 6, BITRATE_1_MBPS = 7,
  BITRATE_10_KBPS = 0, BITRATE_20_KBPS = 1, BITRATE_50_KBPS = 2, BITRATE_100_KBPS = 3,
  BITRATE_125_KBPS = 4, BITRATE_250_KBPS = 5, BITRATE_500_KBPS = 6, BITRATE_1_MBPS = 7
}
 Bitraten fuer den CAN-Bus. More...
 
#define CAN_ALL_FILTER   0xff
 Symbol um auf alle Filter zuzugreifen. More...
 
#define SUPPORT_EXTENDED_CANID   1
 Unterstuetzung fuer Extended-IDs aktivieren. More...
 
#define SUPPORT_TIMESTAMPS   0
 Unterstützung für Zeitstempel aktivieren. More...
 

Bits des Filters fuer den MCP2515 umformatieren

prog_uint8_t can_filter[] =
{
MCP2515_FILTER_EXTENDED(0), // Filter 0
MCP2515_FILTER_EXTENDED(0), // Filter 1
MCP2515_FILTER_EXTENDED(0), // Filter 2
MCP2515_FILTER_EXTENDED(0), // Filter 3
MCP2515_FILTER_EXTENDED(0), // Filter 4
MCP2515_FILTER_EXTENDED(0), // Filter 5
MCP2515_FILTER_EXTENDED(0), // Maske 0
MCP2515_FILTER_EXTENDED(0), // Maske 1
};
See also
can_static_filter()
Warning
Do not use this Makro for Variables, only for static values known at compile-time.
enum  can_mode_t {
  LISTEN_ONLY_MODE, LOOPBACK_MODE, NORMAL_MODE, SLEEP_MODE,
  LISTEN_ONLY_MODE, LOOPBACK_MODE, NORMAL_MODE, SLEEP_MODE
}
 Modus des CAN Interfaces. More...
 
bool can_init (can_bitrate_t bitrate)
 Initialisierung des CAN Interfaces. More...
 
void can_sleep (void)
 Put CAN interface to sleep and wake up. More...
 
bool can_set_filter (uint8_t number, const can_filter_t *filter)
 Setzen eines Filters. More...
 
bool can_disable_filter (uint8_t number)
 Filter deaktivieren. More...
 
void can_static_filter (const uint8_t *filter_array)
 Setzt die Werte für alle Filter. More...
 
uint8_t can_get_filter (uint8_t number, can_filter_t *filter)
 
bool can_check_message (void)
 Ueberpruefen ob neue CAN Nachrichten vorhanden sind. More...
 
bool can_check_free_buffer (void)
 Ueberprueft ob ein Puffer zum Versenden einer Nachricht frei ist. More...
 
uint8_t can_send_message (const can_t *msg)
 Verschickt eine Nachricht über den CAN Bus. More...
 
uint8_t can_get_message (can_t *msg)
 Liest eine Nachricht aus den Empfangspuffern des CAN Controllers. More...
 
can_error_register_t can_read_error_register (void)
 Reads the Contents of the CAN Error Counter. More...
 
bool can_check_bus_off (void)
 
void can_reset_bus_off (void)
 
void can_set_mode (can_mode_t mode)
 Setzt den Operations-Modus. More...
 

Bitdefinitionen

enum  can_bitrate_t {
  BITRATE_10_KBPS = 0, BITRATE_20_KBPS = 1, BITRATE_50_KBPS = 2, BITRATE_100_KBPS = 3,
  BITRATE_125_KBPS = 4, BITRATE_250_KBPS = 5, BITRATE_500_KBPS = 6, BITRATE_1_MBPS = 7,
  BITRATE_10_KBPS = 0, BITRATE_20_KBPS = 1, BITRATE_50_KBPS = 2, BITRATE_100_KBPS = 3,
  BITRATE_125_KBPS = 4, BITRATE_250_KBPS = 5, BITRATE_500_KBPS = 6, BITRATE_1_MBPS = 7
}
 Bitraten fuer den CAN-Bus. More...
 
#define CAN_ALL_FILTER   0xff
 Symbol um auf alle Filter zuzugreifen. More...
 

Bits des Filters fuer den MCP2515 umformatieren

Unterstuetzung fuer Extended-IDs aktivieren

Unterstützung für Zeitstempel aktivieren

Warning
Wird nur vom AT90CANxxx unterstützt
uint8_t can_filter[] PROGMEM =
{
MCP2515_FILTER_EXTENDED(0), // Filter 0
MCP2515_FILTER_EXTENDED(0), // Filter 1
MCP2515_FILTER_EXTENDED(0), // Filter 2
MCP2515_FILTER_EXTENDED(0), // Filter 3
MCP2515_FILTER_EXTENDED(0), // Filter 4
MCP2515_FILTER_EXTENDED(0), // Filter 5
MCP2515_FILTER_EXTENDED(0), // Maske 0
MCP2515_FILTER_EXTENDED(0), // Maske 1
};
See also
can_static_filter()
Warning
Do not use this Makro for Variables, only for static values known at compile-time.
enum  can_mode_t {
  LISTEN_ONLY_MODE, LOOPBACK_MODE, NORMAL_MODE, SLEEP_MODE,
  LISTEN_ONLY_MODE, LOOPBACK_MODE, NORMAL_MODE, SLEEP_MODE
}
 Modus des CAN Interfaces. More...
 

Detailed Description

allgemeines CAN Interface für AT90CAN32/64/128, MCP2515 und SJA1000

Author
Fabian Greif fabia.nosp@m.n.gr.nosp@m.eif@r.nosp@m.wth-.nosp@m.aache.nosp@m.n.de
Roboterclub Aachen e.V. (http://www.roboterclub.rwth-aachen.de)

can_sleep() and can_wakeup() functions by Frédéric Lamorce.

Version
Id
can.h 8086 2009-07-14 14:08:25Z fabian

Macro Definition Documentation

◆ CAN_ALL_FILTER [1/2]

#define CAN_ALL_FILTER   0xff

Symbol um auf alle Filter zuzugreifen.

Definition at line 90 of file demo/can.h.

◆ CAN_ALL_FILTER [2/2]

#define CAN_ALL_FILTER   0xff

Symbol um auf alle Filter zuzugreifen.

Definition at line 98 of file can.h.

◆ SUPPORT_EXTENDED_CANID

#define SUPPORT_EXTENDED_CANID   1

Unterstuetzung fuer Extended-IDs aktivieren.

Definition at line 105 of file can.h.

◆ SUPPORT_TIMESTAMPS

#define SUPPORT_TIMESTAMPS   0

Unterstützung für Zeitstempel aktivieren.

Warning
Wird nur vom AT90CANxxx unterstützt

Definition at line 114 of file can.h.

Enumeration Type Documentation

◆ can_bitrate_t [1/2]

Bitraten fuer den CAN-Bus.

Enumerator
BITRATE_10_KBPS 
BITRATE_20_KBPS 
BITRATE_50_KBPS 
BITRATE_100_KBPS 
BITRATE_125_KBPS 
BITRATE_250_KBPS 
BITRATE_500_KBPS 
BITRATE_1_MBPS 
BITRATE_10_KBPS 
BITRATE_20_KBPS 
BITRATE_50_KBPS 
BITRATE_100_KBPS 
BITRATE_125_KBPS 
BITRATE_250_KBPS 
BITRATE_500_KBPS 
BITRATE_1_MBPS 

Definition at line 75 of file demo/can.h.

◆ can_bitrate_t [2/2]

Bitraten fuer den CAN-Bus.

Enumerator
BITRATE_10_KBPS 
BITRATE_20_KBPS 
BITRATE_50_KBPS 
BITRATE_100_KBPS 
BITRATE_125_KBPS 
BITRATE_250_KBPS 
BITRATE_500_KBPS 
BITRATE_1_MBPS 
BITRATE_10_KBPS 
BITRATE_20_KBPS 
BITRATE_50_KBPS 
BITRATE_100_KBPS 
BITRATE_125_KBPS 
BITRATE_250_KBPS 
BITRATE_500_KBPS 
BITRATE_1_MBPS 

Definition at line 83 of file can.h.

◆ can_mode_t [1/2]

enum can_mode_t

Modus des CAN Interfaces.

Enumerator
LISTEN_ONLY_MODE 

der CAN Contoller empfängt nur und verhält sich völlig passiv

LOOPBACK_MODE 

alle Nachrichten direkt auf die Empfangsregister umleiten ohne sie zu senden

NORMAL_MODE 

normaler Modus, CAN Controller ist aktiv

SLEEP_MODE 
LISTEN_ONLY_MODE 

der CAN Contoller empfängt nur und verhält sich völlig passiv

LOOPBACK_MODE 

alle Nachrichten direkt auf die Empfangsregister umleiten ohne sie zu senden

NORMAL_MODE 

normaler Modus, CAN Controller ist aktiv

SLEEP_MODE 

Definition at line 259 of file demo/can.h.

◆ can_mode_t [2/2]

enum can_mode_t

Modus des CAN Interfaces.

Enumerator
LISTEN_ONLY_MODE 

der CAN Contoller empfängt nur und verhält sich völlig passiv

LOOPBACK_MODE 

alle Nachrichten direkt auf die Empfangsregister umleiten ohne sie zu senden

NORMAL_MODE 

normaler Modus, CAN Controller ist aktiv

SLEEP_MODE 
LISTEN_ONLY_MODE 

der CAN Contoller empfängt nur und verhält sich völlig passiv

LOOPBACK_MODE 

alle Nachrichten direkt auf die Empfangsregister umleiten ohne sie zu senden

NORMAL_MODE 

normaler Modus, CAN Controller ist aktiv

SLEEP_MODE 

Definition at line 267 of file can.h.

Function Documentation

◆ can_check_bus_off()

bool can_check_bus_off ( void  )

◆ can_check_free_buffer()

bool can_check_free_buffer ( void  )

Ueberprueft ob ein Puffer zum Versenden einer Nachricht frei ist.

Returns
true falls ein Sende-Puffer frei ist, false ansonsten.

◆ can_check_message()

bool can_check_message ( void  )

Ueberpruefen ob neue CAN Nachrichten vorhanden sind.

Returns
true falls neue Nachrichten verfuegbar sind, false ansonsten.

◆ can_disable_filter()

bool can_disable_filter ( uint8_t  number)

Filter deaktivieren.

Parameters
numberNummer des Filters der deaktiviert werden soll, 0xff deaktiviert alle Filter.
Returns
false falls ein Fehler auftrat, true ansonsten
Warning
Wird nur vom AT90CAN32/64/128 unterstuetzt.

◆ can_get_filter()

uint8_t can_get_filter ( uint8_t  number,
can_filter_t filter 
)
Warning
SJA1000 doesn't return the filter and id directly but the content of the corresponding registers because it is not possible to check the type of the filter.

◆ can_get_message()

uint8_t can_get_message ( can_t msg)

Liest eine Nachricht aus den Empfangspuffern des CAN Controllers.

Parameters
msgPointer auf die Nachricht die gelesen werden soll.
Returns
FALSE falls die Nachricht nicht ausgelesen konnte, ansonsten Filtercode welcher die Nachricht akzeptiert hat.

◆ can_init()

bool can_init ( can_bitrate_t  bitrate)

Initialisierung des CAN Interfaces.

Parameters
bitrateGewuenschte Geschwindigkeit des CAN Interfaces
Returns
false falls das CAN Interface nicht initialisiert werden konnte, true ansonsten.

◆ can_read_error_register()

can_error_register_t can_read_error_register ( void  )

Reads the Contents of the CAN Error Counter.

◆ can_reset_bus_off()

void can_reset_bus_off ( void  )

◆ can_send_message()

uint8_t can_send_message ( const can_t msg)

Verschickt eine Nachricht über den CAN Bus.

Parameters
msgNachricht die verschickt werden soll
Returns
FALSE falls die Nachricht nicht verschickt werden konnte,
ansonsten der Code des Puffes in den die Nachricht gespeichert wurde

◆ can_set_filter()

bool can_set_filter ( uint8_t  number,
const can_filter_t filter 
)

Setzen eines Filters.

Für einen MCP2515 sollte die Funktion can_static_filter() bevorzugt werden.

Parameters
numberPosition des Filters
filterzu setzender Filter
Returns
false falls ein Fehler auftrat, true ansonsten

◆ can_set_mode()

void can_set_mode ( can_mode_t  mode)

Setzt den Operations-Modus.

Parameters
modeGewünschter Modus des CAN Controllers

◆ can_sleep()

void can_sleep ( void  )

Put CAN interface to sleep and wake up.

MCP2515 active : 5mA MCP2515 sleep : 1µA

MCP2551 active : 10mA+ MCP2551 sleep : 400µA

// before we are going to sleep, enable the interrupt that will wake us up
// attach interrupt 1 to the routine
EICRA = 0; // int on low level
// Enable the interrupt1
EIMSK = _BV(INT1);
// put the MCP2515 to sleep
// enable atmega sleep mode
cli();
sleep_enable();
// turn off BOD
sleep_bod_disable();
// and we go to sleep
sei();
sleep_cpu();
// here int1 has been executed and we are woken up
sleep_disable();
// disable int1
EIMSK = 0;
// re-enable 2515 and 2551
can_wake();
Warning
Only implemented for the MCP2515

◆ can_static_filter()

void can_static_filter ( const uint8_t *  filter_array)

Setzt die Werte für alle Filter.

// Filter und Masken-Tabelle anlegen
prog_char can_filter[] = {
MCP2515_FILTER_EXTENDED(0), // Filter 0
MCP2515_FILTER_EXTENDED(0), // Filter 1
MCP2515_FILTER_EXTENDED(0), // Filter 2
MCP2515_FILTER_EXTENDED(0), // Filter 3
MCP2515_FILTER_EXTENDED(0), // Filter 4
MCP2515_FILTER_EXTENDED(0), // Filter 5
MCP2515_FILTER_EXTENDED(0), // Maske 0
MCP2515_FILTER_EXTENDED(0), // Maske 1
};
...
// Filter und Masken-Tabelle laden
can_static_filter(can_filter);
Parameters
*filter_arrayArray im Flash des AVRs mit den Initialisierungs- werten für die Filter des MCP2515
See also
MCP2515_FILTER_EXTENDED()
MCP2515_FILTER()
Warning
Wird nur vom MCP2515 unterstuetzt.
// Filter und Masken-Tabelle anlegen
uint8_t can_filter[] PROGMEM = {
MCP2515_FILTER_EXTENDED(0), // Filter 0
MCP2515_FILTER_EXTENDED(0), // Filter 1
MCP2515_FILTER_EXTENDED(0), // Filter 2
MCP2515_FILTER_EXTENDED(0), // Filter 3
MCP2515_FILTER_EXTENDED(0), // Filter 4
MCP2515_FILTER_EXTENDED(0), // Filter 5
MCP2515_FILTER_EXTENDED(0), // Maske 0
MCP2515_FILTER_EXTENDED(0), // Maske 1
};
...
// Filter und Masken-Tabelle laden
can_static_filter(can_filter);
Parameters
*filter_arrayArray im Flash des AVRs mit den Initialisierungs- werten für die Filter des MCP2515
See also
MCP2515_FILTER_EXTENDED()
MCP2515_FILTER()
Warning
Wird nur vom MCP2515 unterstuetzt.
MCP2515_FILTER_EXTENDED
#define MCP2515_FILTER_EXTENDED(id)
Definition: can.h:157
can_sleep
void can_sleep(void)
Put CAN interface to sleep and wake up.
uavcan::uint8_t
std::uint8_t uint8_t
Definition: std.hpp:24
PROGMEM
const uint8_t can_filter[] PROGMEM
Definition: main.c:60


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:04