Dependents:   Kamal_CAN ReadFromSerial446 USNA-UMBC-KF-02_v3-noise USNA-UMBC-KF-01

Revision:
0:d8f50b1e384f
Child:
1:dbc44582f2f8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mcp2515.h	Sat Jan 30 08:46:04 2010 +0000
@@ -0,0 +1,106 @@
+
+#ifndef _MCP2515_H_
+#define _MCP2515_H_
+
+#include <mbed.h>
+#include "mcp2515_defs.h"
+
+#define MCPDEBUG (1)
+#define MCPDEBUG_TXBUF (0)
+
+#define MCP_CS_PORT PORTB
+#define MCP_CS_DDR  DDRB
+#define MCP_CS_BIT  PB0
+
+#define MCP_N_TXBUFFERS (3)
+
+#define MCP_RXBUF_0 (MCP_RXB0SIDH)
+#define MCP_RXBUF_1 (MCP_RXB1SIDH)
+
+#define MCP_TXBUF_0 (MCP_TXB0SIDH)
+#define MCP_TXBUF_1 (MCP_TXB1SIDH)
+#define MCP_TXBUF_2 (MCP_TXB2SIDH)
+
+// #define MCP2515_SELECT() (SPI_SS_LOW())
+// #define MCP2515_UNSELECT() (SPI_SS_HIGH())
+
+#define MCP2515_SELECT()   ( MCP_CS_PORT &= ~(1<<MCP_CS_BIT) )
+#define MCP2515_UNSELECT() ( MCP_CS_PORT |=  (1<<MCP_CS_BIT) )
+
+#define MCP2515_OK         (0)
+#define MCP2515_FAIL       (1)
+#define MCP_ALLTXBUSY      (2)
+
+typedef unsigned char u8;
+
+// Connections to the chip
+//volatile bit mcp2515_rst @ PORTC . 1;
+//volatile bit mcp2515_rst_tris @ TRISC . 1;
+
+// Function declarations
+/*
+void can_reset();
+char can_read_register(char reg);
+void can_write_bits(char address, char data, char mask);
+void can_init(short id);
+char can_peek_message();
+char can_rx_byte();
+void can_set_id(short id); 
+void can_init_buffer();
+void can_load_byte(char input);
+void can_tx_buffer();
+void can_read_status();
+*/
+
+#include "mbed.h"
+#include "SPI.h"
+        class mcp2515  {
+        public:
+            mcp2515(PinName mosi, PinName miso, PinName clk, PinName ncs);
+           // float read (void);
+           // void setThigh (float);
+           // void setTlow (float);
+           // float getThigh (void);
+           // float getTlow (void);
+            virtual void _reset();
+            uint8_t configRate(const uint8_t canSpeed);
+            void    setRegister(const uint8_t address, const uint8_t value);
+            
+            uint8_t readRegister(const uint8_t address);
+            void    modifyRegister(const uint8_t address, const uint8_t mask, const uint8_t data);
+            uint8_t setCANCTRL_Mode(uint8_t newmode);
+            uint8_t init(const uint8_t canSpeed);
+            void    initCANBuffers(void);
+            void    setRegisterS(const uint8_t address, const uint8_t values[], const uint8_t n);
+            void    write_can_id( const uint8_t mcp_addr, const uint8_t ext, const uint32_t can_id );
+            //
+            
+            void    readRegisterS(const uint8_t address, uint8_t values[], const uint8_t n);
+            uint8_t readXXStatus_helper(const uint8_t cmd);
+            uint8_t readStatus(void);
+            uint8_t RXStatus(void);
+
+            void read_can_id( const uint8_t mcp_addr, uint8_t* ext, uint32_t* can_id );
+            void read_canMsg( const uint8_t buffer_sidh_addr, CANMessage* msg);
+            void write_canMsg( const uint8_t buffer_sidh_addr,  CANMessage* msg);
+    
+            uint8_t getNextFreeTXBuf(uint8_t *txbuf_n);
+    
+            void start_transmit(const uint8_t buffer_sidh_addr);
+            
+            SPI _spi;
+            DigitalOut _ncs;   
+        // Private functions
+        private :   
+            void _select (void);               
+            void _deselect (void);       
+            int status();
+           void _pollbusy() ;
+           
+            uint8_t _spi_readwrite(uint8_t data);
+            uint8_t _spi_read(void);
+         
+           
+        };
+
+#endif // _MCP2515_H_