can2515.h


1
#ifndef CAN2515_H
2
#define CAN2515_H
3
4
#include "spi.h"
5
#include <util/delay.h>
6
#include <math.h>
7
#include <stdlib.h>
8
#include "regs.h"
9
#include <avr/io.h>
10
11
12
#define MESSAGE_IN_BUFFER_0 0
13
#define MESSAGE_IN_BUFFER_1 1
14
#define NO_MESSAGE 2
15
#define RTR_MESSAGE 3
16
17
18
// Message Identifier
19
20
//CAN Bootloader
21
#define FLASH_REQUEST 0
22
#define FLASH_REQUEST_CONFIRM 1
23
#define FLASH_REQUEST_DENY 2
24
#define FLASH_DATA_CLEAR_TO_SEND 3
25
#define FLASH_COMPLETE 4
26
#define FLASH_COMPLETE_CONFIRM 6
27
#define FLASH_DATA 5
28
#define BOOTLOADER_MESSAGE 7
29
#define BOOTLOADER_MESSAGE_CLEAR_TO_SEND 8
30
31
32
typedef struct {
33
    uint16_t id;
34
    char data[8];
35
    uint8_t length;
36
    uint8_t rtr;
37
} Message;
38
39
void controller_reset();
40
void controller_normal_mode();
41
void init_receiver();
42
void init_transmitter();
43
void init_bittiming();
44
uint8_t handle_interrupt(Message *message);
45
void get_message_from_buffer(uint8_t buffer, Message * message);
46
void write_message_to_can(uint16_t id, uint8_t length, char *data);
47
char *byte_as_bits(int length, uint16_t val);
48
49
#endif