diff -r b74f7ec412fc -r 03fb0bfccc1f include/AVR/can_drv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/AVR/can_drv.h Thu Jan 31 15:20:59 2008 +0100 @@ -0,0 +1,191 @@ +//****************************************************************************** +//! @file $RCSfile$ +//! +//! Copyright (c) 2007 Atmel. +//! +//! Use of this program is subject to Atmel's End User License Agreement. +//! Please read file license.txt for copyright notice. +//! +//! @brief This file contains the prototypes and the macros of the +//! low level functions (drivers) of: +//! - CAN (Controller Array Network) +//! - for AT90CAN128/64/32. +//! +//! This file can be parsed by Doxygen for automatic documentation generation. +//! This file has been validated with AVRStudio-413528/WinAVR-20070122. +//! +//! @version $Revision$ $Name$ +//! +//! @todo +//! @bug +//****************************************************************************** +// Same stuff removed by Peter Christen + +#ifndef _CAN_DRV_H_ +#define _CAN_DRV_H_ + +typedef unsigned char U8 ; + +#define CAN_PORT_IN PIND +#define CAN_PORT_DIR DDRD +#define CAN_PORT_OUT PORTD +#define CAN_INPUT_PIN 6 +#define CAN_OUTPUT_PIN 5 + // ---------- +#define ERR_GEN_MSK ((1<> DLC ) +#define Can_get_ide() ((CANCDMOB & (1<> IDE ) +#define Can_get_rtr() ((CANIDT4 & (1<> RTRTAG) + // ---------- +#define Can_set_rtrmsk() ( CANIDM4 |= (1<>5 ; \ + *((U8 *)(&(identifier)) ) = (CANIDT2>>5)+(CANIDT1<<3); } + // ---------- + //!< EXT ID TAG Reading +#define Can_get_ext_id(identifier) { *((U8 *)(&(identifier))+3) = CANIDT1>>3 ; \ + *((U8 *)(&(identifier))+2) = (CANIDT2>>3)+(CANIDT1<<5); \ + *((U8 *)(&(identifier))+1) = (CANIDT3>>3)+(CANIDT2<<5); \ + *((U8 *)(&(identifier)) ) = (CANIDT4>>3)+(CANIDT3<<5); } + // ---------- + //!< STD ID Construction +#define CAN_SET_STD_ID_10_4(identifier) (((*((U8 *)(&(identifier))+1))<<5)+((* (U8 *)(&(identifier)))>>3)) +#define CAN_SET_STD_ID_3_0( identifier) (( * (U8 *)(&(identifier)) )<<5) + // ---------- + //!< STD ID TAG writing +#define Can_set_std_id(identifier) { CANIDT1 = CAN_SET_STD_ID_10_4(identifier); \ + CANIDT2 = CAN_SET_STD_ID_3_0( identifier); \ + CANCDMOB &= (~(1<>5)) +#define CAN_SET_EXT_ID_20_13(identifier) (((*((U8 *)(&(identifier))+2))<<3)+((*((U8 *)(&(identifier))+1))>>5)) +#define CAN_SET_EXT_ID_12_5( identifier) (((*((U8 *)(&(identifier))+1))<<3)+((* (U8 *)(&(identifier)) )>>5)) +#define CAN_SET_EXT_ID_4_0( identifier) ((* (U8 *)(&(identifier)) )<<3) + // ---------- + //!< EXT ID TAG writing +#define Can_set_ext_id(identifier) { CANIDT1 = CAN_SET_EXT_ID_28_21(identifier); \ + CANIDT2 = CAN_SET_EXT_ID_20_13(identifier); \ + CANIDT3 = CAN_SET_EXT_ID_12_5( identifier); \ + CANIDT4 = CAN_SET_EXT_ID_4_0( identifier); \ + CANCDMOB |= (1<