Rose-Hulman Robotics Team

Changeset 233

Show
Ignore:
Timestamp:
10/16/08 17:51:10 (3 years ago)
Author:
auchtemm
Message:

untested function for sending a canmsg added.

Location:
trunk/electronics/avr/can
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/electronics/avr/can/mcp.c

    r228 r233  
    33#include "spi.h" 
    44#include "cannet.h" 
     5#include "mcp.h" 
    56 
    67#define CS PB2 
     
    1011#define clrbit(a, b) a &= ~b 
    1112 
    12 enum { 
    13         MCPWRITE = 0x02, 
    14         MCPREAD = 0x03, 
    15         MCPBITMOD = 0x09, 
    16         MCPTXBUF = 0x40, 
    17         MCPRTS = 0x80, 
    18         MCPRXBUF = 0x90, 
    19         MCPRSTAT = 0xA0, 
    20         MCPRXSTAT = 0xB0, 
    21         MCPRESET = 0xC0, 
    22 }; 
    23  
    24 /* TX Buffer 0 Registers. 
    25  * add 0x10 to each (except TXRTSCTRL) 
    26  * for TXBUF1, or 0x20 for TXBUF2 
    27  */ 
    28 enum { 
    29         TXRTSCTRL = 0x0D, 
    30         TXB0CTRL = 0x30, 
    31         TXB0SIDH, 
    32         TXB0SIDL, 
    33         TXB0EID8, 
    34         TXB0EID0, 
    35         TXB0DLC, 
    36         TXB0D0, 
    37 }; 
    38  
    39 /* RX Buffer 0 registers 
    40  * add 0x10 to each (except BFPCTL) 
    41  * for RXBUF1 
    42  */ 
    43 enum { 
    44         BFPCTRL = 0x0C, 
    45         RXB0CTRL = 0x60, 
    46         RXB0SIDH, 
    47         RXB0SIDL, 
    48         RXB0EID8, 
    49         RXB0EID0, 
    50         RXB0DLC, 
    51         RXB0D0, 
    52 }; 
    53  
    54 /* Yes, this is the correct order. */ 
    55 enum { 
    56         CNF3 = 0x28, 
    57         CNF2, 
    58         CNF1, 
    59 }; 
    60  
    61 enum { 
    62         CANSTATUS = 0x0E, 
    63         CANCTRL, 
    64 }; 
    65  
    66 static void mcp_reset() 
     13void mcp_reset() 
    6714{ 
    6815        clrbit(CSP, CS); 
     
    7118} 
    7219 
    73 static void mcp_read(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
     20void mcp_read(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
    7421{ 
    7522        uint8_t i; 
     
    8633} 
    8734 
    88 static void mcp_read_rxbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
     35void mcp_read_rxbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
    8936{ 
    9037        uint8_t i; 
     
    9946} 
    10047 
    101 static void mcp_write(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
     48void mcp_write(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
    10249{ 
    10350        uint8_t i; 
     
    11259} 
    11360 
    114 static void mcp_load_txbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
     61void mcp_write_byte(uint8_t addr, uint8_t data) 
     62{ 
     63        clrbit(CSP, CS); 
     64        spi_send(MCPWRITE); 
     65        spi_send(addr); 
     66        spi_send(data); 
     67        setbit(CSP, CS); 
     68} 
     69 
     70void mcp_load_txbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf) 
    11571{ 
    11672        uint8_t i; 
     
    12581} 
    12682 
    127 static uint8_t mcp_read_stat() 
     83uint8_t mcp_read_stat() 
    12884{ 
    12985        uint8_t stat; 
     
    13793} 
    13894 
    139 static uint8_t mcp_rx_stat() 
     95uint8_t mcp_rx_stat() 
    14096{ 
    14197        uint8_t stat; 
     
    149105} 
    150106 
    151 static void mcp_rts(uint8_t bufs) 
     107void mcp_rts(uint8_t bufs) 
    152108{ 
    153109        bufs &= 0x07; 
     
    158114} 
    159115 
    160 static void mcp_bit_mod(uint8_t addr, uint8_t mask, uint8_t data)  
     116void mcp_bit_mod(uint8_t addr, uint8_t mask, uint8_t data)  
    161117{ 
    162118        clrbit(CSP, CS); 
  • trunk/electronics/avr/can/mcp.h

    r227 r233  
    11void mcp_reset(); 
    2 void mcp_read(int8_t addr, int8_t *buf, int8_t nbuf); 
    3 void mcp_read_rxbuf(int8_t addr, int8_t *buf, int8_t nbuf); 
    4 void mcp_write(int8_t addr, int8_t *buf, int8_t nbuf); 
    5 void mcp_load_txbuf(int8_t addr, int8_t *buf, int8_t nbuf); 
    6 int8_t mcp_read_stat(); 
    7 int8_t mcp_rx_stat(); 
    8 void mcp_rts(int8_t bufs); 
    9 void mcp_bit_mod(int8_t addr, int8_t mask, int8_t data); 
     2void mcp_read(uint8_t addr, uint8_t *buf, uint8_t nbuf); 
     3void mcp_write_byte(uint8_t addr, uint8_t data); 
     4void mcp_read_rxbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf); 
     5void mcp_write(uint8_t addr, uint8_t *buf, uint8_t nbuf); 
     6void mcp_load_txbuf(uint8_t addr, uint8_t *buf, uint8_t nbuf); 
     7uint8_t mcp_read_stat(); 
     8uint8_t mcp_rx_stat(); 
     9void mcp_rts(uint8_t bufs); 
     10void mcp_bit_mod(uint8_t addr, uint8_t mask, uint8_t data); 
     11 
     12enum { 
     13        MCPWRITE = 0x02, 
     14        MCPREAD = 0x03, 
     15        MCPBITMOD = 0x09, 
     16        MCPTXBUF = 0x40, 
     17        MCPRTS = 0x80, 
     18        MCPRXBUF = 0x90, 
     19        MCPRSTAT = 0xA0, 
     20        MCPRXSTAT = 0xB0, 
     21        MCPRESET = 0xC0, 
     22}; 
     23 
     24/* TX Buffer 0 Registers. 
     25 * add 0x10 to each (except TXRTSCTRL) 
     26 * for TXBUF1, or 0x20 for TXBUF2 
     27 */ 
     28enum { 
     29        TXRTSCTRL = 0x0D, 
     30        TXB0CTRL = 0x30, 
     31        TXB0SIDH, 
     32        TXB0SIDL, 
     33        TXB0EID8, 
     34        TXB0EID0, 
     35        TXB0DLC, 
     36        TXB0D0, 
     37}; 
     38 
     39/* RX Buffer 0 registers 
     40 * add 0x10 to each (except BFPCTL) 
     41 * for RXBUF1 
     42 */ 
     43enum { 
     44        BFPCTRL = 0x0C, 
     45        RXB0CTRL = 0x60, 
     46        RXB0SIDH, 
     47        RXB0SIDL, 
     48        RXB0EID8, 
     49        RXB0EID0, 
     50        RXB0DLC, 
     51        RXB0D0, 
     52}; 
     53 
     54/* Yes, this is the correct order. */ 
     55enum { 
     56        CNF3 = 0x28, 
     57        CNF2, 
     58        CNF1, 
     59}; 
     60 
     61enum { 
     62        CANSTATUS = 0x0E, 
     63        CANCTRL, 
     64}; 
     65 
     66 
  • trunk/electronics/avr/can/mkfile

    r228 r233  
    55        mcp.o \ 
    66        spi.o \ 
     7        cannet.o \ 
    78 
    89<$RHRTELEC/avr/mkcommon