1 | #ifndef SPI_H
|
2 | #define SPI_H
|
3 |
|
4 | #include <stdint.h>
|
5 | #include <avr/io.h>
|
6 |
|
7 | #if defined (__AVR_ATmega32__)
|
8 |
|
9 | #define SPI_PORT PORTB
|
10 | #define SPI_DDR DDRB
|
11 |
|
12 | #define SCK_PIN PB7
|
13 | #define MISO_PIN PB6
|
14 | #define MOSI_PIN PB5
|
15 |
|
16 | #define SS_DDR DDRB
|
17 | #define SS_PORT PORTB
|
18 | #define SS_PIN PB4
|
19 |
|
20 | #elif defined (__AVR_ATmega168__)
|
21 |
|
22 | #define SPI_PORT PORTB
|
23 | #define SPI_DDR DDRB
|
24 | #define SCK_PIN PB5
|
25 | #define MISO_PIN PB4
|
26 | #define MOSI_PIN PB3
|
27 |
|
28 | #define SS_DDR DDRB
|
29 | #define SS_PORT PORTB
|
30 | #define SS_PIN PB1
|
31 |
|
32 | #endif
|
33 |
|
34 |
|
35 | #define LOW 0
|
36 | #define HIGH 1
|
37 |
|
38 | #define SPI_RESET 0xC0
|
39 | #define SPI_READ 0x03
|
40 | #define SPI_READ_RX 0x90
|
41 | #define SPI_WRITE 0x02
|
42 | #define SPI_WRITE_TX 0x40
|
43 | #define SPI_RTS 0x80
|
44 | #define SPI_READ_STATUS 0xA0
|
45 | #define SPI_RX_STATUS 0xB0
|
46 | #define SPI_BIT_MODIFY 0x05
|
47 |
|
48 | uint8_t init_spi();
|
49 | void set_cs(uint8_t state);
|
50 | uint8_t spi_putc(uint8_t data);
|
51 | void write_register(uint8_t address, uint8_t data);
|
52 | uint8_t read_register(uint8_t address);
|
53 | void modify_register(uint8_t address, uint8_t mask, uint8_t data);
|
54 | void set_bit(uint8_t address, uint8_t bit, uint8_t value);
|
55 |
|
56 |
|
57 | #endif
|