summaryrefslogtreecommitdiffstats
path: root/rf_test
diff options
context:
space:
mode:
Diffstat (limited to 'rf_test')
-rw-r--r--rf_test/Recv.Makefile2
-rw-r--r--rf_test/Send.Makefile2
-rw-r--r--rf_test/rfm.c57
-rw-r--r--rf_test/rfm.h2
-rw-r--r--rf_test/send.c2
-rw-r--r--rf_test/spi.c48
-rw-r--r--rf_test/spi.h12
7 files changed, 56 insertions, 69 deletions
diff --git a/rf_test/Recv.Makefile b/rf_test/Recv.Makefile
index 535b2c0..bbf7a26 100644
--- a/rf_test/Recv.Makefile
+++ b/rf_test/Recv.Makefile
@@ -2,7 +2,7 @@ CC = avr-gcc
MCU = atmega328p
TARGET = recv
-SRC = recv.c
+SRC = rfm.c recv.c
OBJ = $(SRC:.c=.o)
CFLAGS = -std=gnu99
diff --git a/rf_test/Send.Makefile b/rf_test/Send.Makefile
index a9aaeb0..c8c6b15 100644
--- a/rf_test/Send.Makefile
+++ b/rf_test/Send.Makefile
@@ -2,7 +2,7 @@ CC = avr-gcc
MCU = atmega328p
TARGET = send
-SRC = send.c
+SRC = rfm.c send.c
OBJ = $(SRC:.c=.o)
CFLAGS = -std=gnu99
diff --git a/rf_test/rfm.c b/rf_test/rfm.c
index 1b88773..c48add4 100644
--- a/rf_test/rfm.c
+++ b/rf_test/rfm.c
@@ -1,9 +1,59 @@
+#include <avr/io.h>
+
#include "rfm.h"
-#include "spi.h"
+
+#define SS_PIN PB2
+#define SS_DDR DDRB
+#define SS_PORT PORTB
+
+#define SCK_PIN PB5
+#define MOSI_PIN PB3
+#define MISO_PIN PB4
+
+#define SPI_DDR DDRB
#define READ_MASK 0x7F
#define WRITE_MASK 0x80
+static inline void spi_init(void)
+{
+ SS_DDR |= (1 << SS_PIN);
+ SS_PORT |= (1 << SS_PIN);
+
+ SPI_DDR = (1 << MOSI_PIN) | (1 << SCK_PIN);
+ SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
+}
+
+static inline uint8_t spi_read(uint8_t addr)
+{
+ SS_PORT |= (1 << SS_PIN);
+
+ SPDR = addr;
+ while (!(SPSR & (1 << SPIF)))
+ ;
+
+ addr = SPDR;
+
+ SS_PORT &= ~(1 << SS_PIN);
+
+ return addr;
+}
+
+static inline void spi_write(uint8_t addr, uint8_t data)
+{
+ SS_PORT |= (1 << SS_PIN);
+
+ SPDR = addr;
+ while (!(SPSR & (1 << SPIF)))
+ ;
+
+ SPDR = data;
+ while (!(SPSR & (1 << SPIF)))
+ ;
+
+ SS_PORT &= ~(1 << SS_PIN);
+}
+
static inline void send_cmd(uint8_t addr, uint8_t val)
{
uint8_t ra, wa;
@@ -11,8 +61,8 @@ static inline void send_cmd(uint8_t addr, uint8_t val)
ra = addr | READ_MASK;
wa = addr | WRITE_MASK;
- while (spi_recv(ra) != val)
- spi_send(wa, val);
+ while (spi_read(ra) != val)
+ spi_write(wa, val);
}
void rfm_init(uint8_t addr)
@@ -37,5 +87,4 @@ void rfm_init(uint8_t addr)
void rfm_send(uint8_t addr, uint8_t data)
{
-
}
diff --git a/rf_test/rfm.h b/rf_test/rfm.h
index d74dff7..ef64658 100644
--- a/rf_test/rfm.h
+++ b/rf_test/rfm.h
@@ -3,7 +3,7 @@
#include <stdint.h>
-void rfm_init(void);
+void rfm_init(uint8_t addr);
void rfm_send(uint8_t addr, uint8_t data);
diff --git a/rf_test/send.c b/rf_test/send.c
index d0a27c7..97ebbcf 100644
--- a/rf_test/send.c
+++ b/rf_test/send.c
@@ -2,8 +2,6 @@
#include <avr/interrupt.h>
#include <util/delay.h>
-#include "spi.h"
-
#define LOCK_BTN PD6
#define UNLOCK_BTN PD7
diff --git a/rf_test/spi.c b/rf_test/spi.c
deleted file mode 100644
index 282cdce..0000000
--- a/rf_test/spi.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <avr/io.h>
-
-#include "spi.h"
-
-#define SS_PIN PB2
-#define SS_DDR DDRB
-#define SS_PORT PORTB
-
-void spi_init(void)
-{
- SS_DDR |= (1 << SS_PIN);
- SS_PORT |= (1 << SS_PIN);
-
- DDR_SPI = (1 << DD_MOSI) | (1 << DD_SCK);
- SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
-}
-
-uint8_t spi_send(uint8_t data)
-{
- SS_PORT |= (1 << SS_PIN);
-
- SPDR = data;
- while (!(SPSR & (1 << SPIF)))
- ;
- data = SPDR;
-
- SS_PORT &= ~(1 << SS_PIN);
-
- return data;
-}
-
-uint8_t spi_send(uint8_t addr, uint8_t data)
-{
- SS_PORT |= (1 << SS_PIN);
-
- SPDR = addr;
- while (!(SPSR & (1 << SPIF)))
- ;
-
- SPDR = data;
- while (!(SPSR & (1 << SPIF)))
- ;
-
- SS_PORT &= ~(1 << SS_PIN);
-
- return data;
-}
-
diff --git a/rf_test/spi.h b/rf_test/spi.h
deleted file mode 100644
index 220c08f..0000000
--- a/rf_test/spi.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef SPI_H
-#define SPI_H
-
-#include <stdint.h>
-
-void spi_init(void);
-
-uint8_t spi_recv(uint8_t addr);
-
-uint8_t spi_send(uint8_t addr, data);
-
-#endif /* SPI_H */