Skip to content

Commit 6b62fdc

Browse files
committed
Improvements to UART/Serial functionality
1 parent 216a642 commit 6b62fdc

File tree

8 files changed

+206
-135
lines changed

8 files changed

+206
-135
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@
3232
*.app
3333

3434
**/.directory
35+
.kateproject

include/interrupt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
// Interrupt-clearing macros
146146
///////////////////////////////////////////////////////////////////////////////
147147
#define interrupt_clear_uart_tx() sbit_clear(S0CON_SB_TI0) //Clears UART TX interrupt flag
148+
#define interrupt_set_uart_tx() sbit_set(S0CON_SB_TI0) //Sets UART TX interrupt flag
148149
#define interrupt_clear_uart_rx() sbit_clear(S0CON_SB_RI0) //Clears UART RX interrupt flag
149150
#define interrupt_clear_rfrdy() sbit_clear(IRCON_SB_RFRDY) //Clears RFRDY interrupt flag
150151
#define interrupt_clear_rfirq() sbit_clear(IRCON_SB_RFIRQ) //Clears RFIRQ interrupt flag

include/rf.h

Lines changed: 133 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,32 @@
6060
////////////////////////////////////////////////////////////////////////////////////
6161
// Register definitions
6262
////////////////////////////////////////////////////////////////////////////////////
63-
#define RF_CONFIG 0x00
64-
#define RF_EN_AA 0x01
65-
#define RF_EN_RXADDR 0x02
66-
#define RF_SETUP_AW 0x03
67-
#define RF_SETUP_RETR 0x04
68-
#define RF_RF_CH 0x05
69-
#define RF_RF_SETUP 0x06
70-
#define RF_STATUS 0x07
71-
#define RF_OBSERVE_TX 0x08
72-
#define RF_RPD 0x09
73-
#define RF_RX_ADDR_P0 0x0A
74-
#define RF_RX_ADDR_P1 0x0B
75-
#define RF_RX_ADDR_P2 0x0C
76-
#define RF_RX_ADDR_P3 0x0D
77-
#define RF_RX_ADDR_P4 0x0E
78-
#define RF_RX_ADDR_P5 0x0F
79-
#define RF_TX_ADDR 0x10
80-
#define RF_RX_PW_P0 0x11
81-
#define RF_RX_PW_P1 0x12
82-
#define RF_RX_PW_P2 0x13
83-
#define RF_RX_PW_P3 0x14
84-
#define RF_RX_PW_P4 0x15
85-
#define RF_RX_PW_P5 0x16
86-
#define RF_FIFO_STATUS 0x17
87-
#define RF_DYNPD 0x1C
88-
#define RF_FEATURE 0x1D
63+
#define RF_CONFIG 0x00
64+
#define RF_EN_AA 0x01
65+
#define RF_EN_RXADDR 0x02
66+
#define RF_SETUP_AW 0x03
67+
#define RF_SETUP_RETR 0x04
68+
#define RF_RF_CH 0x05
69+
#define RF_RF_SETUP 0x06
70+
#define RF_STATUS 0x07
71+
#define RF_OBSERVE_TX 0x08
72+
#define RF_RPD 0x09
73+
#define RF_RX_ADDR_P0 0x0A
74+
#define RF_RX_ADDR_P1 0x0B
75+
#define RF_RX_ADDR_P2 0x0C
76+
#define RF_RX_ADDR_P3 0x0D
77+
#define RF_RX_ADDR_P4 0x0E
78+
#define RF_RX_ADDR_P5 0x0F
79+
#define RF_TX_ADDR 0x10
80+
#define RF_RX_PW_P0 0x11
81+
#define RF_RX_PW_P1 0x12
82+
#define RF_RX_PW_P2 0x13
83+
#define RF_RX_PW_P3 0x14
84+
#define RF_RX_PW_P4 0x15
85+
#define RF_RX_PW_P5 0x16
86+
#define RF_FIFO_STATUS 0x17
87+
#define RF_DYNPD 0x1C
88+
#define RF_FEATURE 0x1D
8989

9090

9191
////////////////////////////////////////////////////////////////////////////////////
@@ -103,17 +103,17 @@
103103
#define RF_RF_SETUP_DEFAULT_VAL 0x0F
104104
#define RF_STATUS_DEFAULT_VAL 0x0E
105105
#define RF_OBSERVE_TX_DEFAULT_VAL 0x00
106-
#define RF_RPD_DEFAULT_VAL 0x00
107-
#define RF_RX_ADDR_P0_B0_DEFAULT_VAL 0xE7
108-
#define RF_RX_ADDR_P0_B1_DEFAULT_VAL 0xE7
109-
#define RF_RX_ADDR_P0_B2_DEFAULT_VAL 0xE7
110-
#define RF_RX_ADDR_P0_B3_DEFAULT_VAL 0xE7
111-
#define RF_RX_ADDR_P0_B4_DEFAULT_VAL 0xE7
112-
#define RF_RX_ADDR_P1_B0_DEFAULT_VAL 0xC2
113-
#define RF_RX_ADDR_P1_B1_DEFAULT_VAL 0xC2
114-
#define RF_RX_ADDR_P1_B2_DEFAULT_VAL 0xC2
115-
#define RF_RX_ADDR_P1_B3_DEFAULT_VAL 0xC2
116-
#define RF_RX_ADDR_P1_B4_DEFAULT_VAL 0xC2
106+
#define RF_RPD_DEFAULT_VAL 0x00
107+
#define RF_RX_ADDR_P0_B0_DEFAULT_VAL 0xE7
108+
#define RF_RX_ADDR_P0_B1_DEFAULT_VAL 0xE7
109+
#define RF_RX_ADDR_P0_B2_DEFAULT_VAL 0xE7
110+
#define RF_RX_ADDR_P0_B3_DEFAULT_VAL 0xE7
111+
#define RF_RX_ADDR_P0_B4_DEFAULT_VAL 0xE7
112+
#define RF_RX_ADDR_P1_B0_DEFAULT_VAL 0xC2
113+
#define RF_RX_ADDR_P1_B1_DEFAULT_VAL 0xC2
114+
#define RF_RX_ADDR_P1_B2_DEFAULT_VAL 0xC2
115+
#define RF_RX_ADDR_P1_B3_DEFAULT_VAL 0xC2
116+
#define RF_RX_ADDR_P1_B4_DEFAULT_VAL 0xC2
117117
#define RF_RX_ADDR_P2_DEFAULT_VAL 0xC3
118118
#define RF_RX_ADDR_P3_DEFAULT_VAL 0xC4
119119
#define RF_RX_ADDR_P4_DEFAULT_VAL 0xC5
@@ -138,89 +138,90 @@
138138
// Register bitwise definitions
139139
////////////////////////////////////////////////////////////////////////////////////
140140
//CONFIG register bitwise definitions
141-
#define RF_CONFIG_RESERVED 0x80
142-
#define RF_CONFIG_MASK_RX_DR 0x40
143-
#define RF_CONFIG_MASK_TX_DS 0x20
144-
#define RF_CONFIG_MASK_MAX_RT 0x10
145-
#define RF_CONFIG_EN_CRC 0x08
146-
#define RF_CONFIG_CRCO 0x04
147-
#define RF_CONFIG_PWR_UP 0x02
148-
#define RF_CONFIG_PRIM_RX 0x01
141+
#define RF_CONFIG_RESERVED 0x80
142+
#define RF_CONFIG_MASK_RX_DR 0x40
143+
#define RF_CONFIG_MASK_TX_DS 0x20
144+
#define RF_CONFIG_MASK_MAX_RT 0x10
145+
#define RF_CONFIG_EN_CRC 0x08
146+
#define RF_CONFIG_CRCO 0x04
147+
#define RF_CONFIG_PWR_UP 0x02
148+
#define RF_CONFIG_PRIM_RX 0x01
149149

150150
//EN_AA register bitwise definitions
151-
#define RF_EN_AA_RESERVED 0xC0
152-
#define RF_EN_AA_ENAA_ALL 0x3F
153-
#define RF_EN_AA_ENAA_P5 0x20
154-
#define RF_EN_AA_ENAA_P4 0x10
155-
#define RF_EN_AA_ENAA_P3 0x08
156-
#define RF_EN_AA_ENAA_P2 0x04
157-
#define RF_EN_AA_ENAA_P1 0x02
158-
#define RF_EN_AA_ENAA_P0 0x01
159-
#define RF_EN_AA_ENAA_NONE 0x00
151+
#define RF_EN_AA_RESERVED 0xC0
152+
#define RF_EN_AA_ENAA_ALL 0x3F
153+
#define RF_EN_AA_ENAA_P5 0x20
154+
#define RF_EN_AA_ENAA_P4 0x10
155+
#define RF_EN_AA_ENAA_P3 0x08
156+
#define RF_EN_AA_ENAA_P2 0x04
157+
#define RF_EN_AA_ENAA_P1 0x02
158+
#define RF_EN_AA_ENAA_P0 0x01
159+
#define RF_EN_AA_ENAA_NONE 0x00
160160

161161
//EN_RXADDR register bitwise definitions
162-
#define RF_EN_RXADDR_RESERVED 0xC0
163-
#define RF_EN_RXADDR_ERX_ALL 0x3F
164-
#define RF_EN_RXADDR_ERX_P5 0x20
165-
#define RF_EN_RXADDR_ERX_P4 0x10
166-
#define RF_EN_RXADDR_ERX_P3 0x08
167-
#define RF_EN_RXADDR_ERX_P2 0x04
168-
#define RF_EN_RXADDR_ERX_P1 0x02
169-
#define RF_EN_RXADDR_ERX_P0 0x01
170-
#define RF_EN_RXADDR_ERX_NONE 0x00
162+
#define RF_EN_RXADDR_RESERVED 0xC0
163+
#define RF_EN_RXADDR_ERX_ALL 0x3F
164+
#define RF_EN_RXADDR_ERX_P5 0x20
165+
#define RF_EN_RXADDR_ERX_P4 0x10
166+
#define RF_EN_RXADDR_ERX_P3 0x08
167+
#define RF_EN_RXADDR_ERX_P2 0x04
168+
#define RF_EN_RXADDR_ERX_P1 0x02
169+
#define RF_EN_RXADDR_ERX_P0 0x01
170+
#define RF_EN_RXADDR_ERX_NONE 0x00
171171

172172
//SETUP_AW register bitwise definitions
173-
#define RF_SETUP_AW_RESERVED 0xFC
173+
#define RF_SETUP_AW_RESERVED 0xFC
174174
#define RF_SETUP_AW 0x03
175-
#define RF_SETUP_AW_5BYTES 0x03
176-
#define RF_SETUP_AW_4BYTES 0x02
177-
#define RF_SETUP_AW_3BYTES 0x01
178-
#define RF_SETUP_AW_ILLEGAL 0x00
175+
#define RF_SETUP_AW_5BYTES 0x03
176+
#define RF_SETUP_AW_4BYTES 0x02
177+
#define RF_SETUP_AW_3BYTES 0x01
178+
#define RF_SETUP_AW_ILLEGAL 0x00
179179

180180
//SETUP_RETR register bitwise definitions
181-
#define RF_SETUP_RETR_ARD 0xF0
182-
#define RF_SETUP_RETR_ARD_4000 0xF0
183-
#define RF_SETUP_RETR_ARD_3750 0xE0
184-
#define RF_SETUP_RETR_ARD_3500 0xD0
185-
#define RF_SETUP_RETR_ARD_3250 0xC0
186-
#define RF_SETUP_RETR_ARD_3000 0xB0
187-
#define RF_SETUP_RETR_ARD_2750 0xA0
188-
#define RF_SETUP_RETR_ARD_2500 0x90
189-
#define RF_SETUP_RETR_ARD_2250 0x80
190-
#define RF_SETUP_RETR_ARD_2000 0x70
191-
#define RF_SETUP_RETR_ARD_1750 0x60
192-
#define RF_SETUP_RETR_ARD_1500 0x50
193-
#define RF_SETUP_RETR_ARD_1250 0x40
194-
#define RF_SETUP_RETR_ARD_1000 0x30
195-
#define RF_SETUP_RETR_ARD_750 0x20
196-
#define RF_SETUP_RETR_ARD_500 0x10
197-
#define RF_SETUP_RETR_ARD_250 0x00
198-
#define RF_SETUP_RETR_ARC 0x0F
199-
#define RF_SETUP_RETR_ARC_15 0x0F
200-
#define RF_SETUP_RETR_ARC_14 0x0E
201-
#define RF_SETUP_RETR_ARC_13 0x0D
202-
#define RF_SETUP_RETR_ARC_12 0x0C
203-
#define RF_SETUP_RETR_ARC_11 0x0B
204-
#define RF_SETUP_RETR_ARC_10 0x0A
205-
#define RF_SETUP_RETR_ARC_9 0x09
206-
#define RF_SETUP_RETR_ARC_8 0x08
207-
#define RF_SETUP_RETR_ARC_7 0x07
208-
#define RF_SETUP_RETR_ARC_6 0x06
209-
#define RF_SETUP_RETR_ARC_5 0x05
210-
#define RF_SETUP_RETR_ARC_4 0x04
211-
#define RF_SETUP_RETR_ARC_3 0x03
212-
#define RF_SETUP_RETR_ARC_2 0x02
213-
#define RF_SETUP_RETR_ARC_1 0x01
214-
#define RF_SETUP_RETR_ARC_0 0x00
215-
#define RF_SETUP_RETR_DISABLE 0x00
181+
#define RF_SETUP_RETR_ARD 0xF0
182+
#define RF_SETUP_RETR_ARD_4000 0xF0
183+
#define RF_SETUP_RETR_ARD_3750 0xE0
184+
#define RF_SETUP_RETR_ARD_3500 0xD0
185+
#define RF_SETUP_RETR_ARD_3250 0xC0
186+
#define RF_SETUP_RETR_ARD_3000 0xB0
187+
#define RF_SETUP_RETR_ARD_2750 0xA0
188+
#define RF_SETUP_RETR_ARD_2500 0x90
189+
#define RF_SETUP_RETR_ARD_2250 0x80
190+
#define RF_SETUP_RETR_ARD_2000 0x70
191+
#define RF_SETUP_RETR_ARD_1750 0x60
192+
#define RF_SETUP_RETR_ARD_1500 0x50
193+
#define RF_SETUP_RETR_ARD_1250 0x40
194+
#define RF_SETUP_RETR_ARD_1000 0x30
195+
#define RF_SETUP_RETR_ARD_750 0x20
196+
#define RF_SETUP_RETR_ARD_500 0x10
197+
#define RF_SETUP_RETR_ARD_250 0x00
198+
#define RF_SETUP_RETR_ARC 0x0F
199+
#define RF_SETUP_RETR_ARC_15 0x0F
200+
#define RF_SETUP_RETR_ARC_14 0x0E
201+
#define RF_SETUP_RETR_ARC_13 0x0D
202+
#define RF_SETUP_RETR_ARC_12 0x0C
203+
#define RF_SETUP_RETR_ARC_11 0x0B
204+
#define RF_SETUP_RETR_ARC_10 0x0A
205+
#define RF_SETUP_RETR_ARC_9 0x09
206+
#define RF_SETUP_RETR_ARC_8 0x08
207+
#define RF_SETUP_RETR_ARC_7 0x07
208+
#define RF_SETUP_RETR_ARC_6 0x06
209+
#define RF_SETUP_RETR_ARC_5 0x05
210+
#define RF_SETUP_RETR_ARC_4 0x04
211+
#define RF_SETUP_RETR_ARC_3 0x03
212+
#define RF_SETUP_RETR_ARC_2 0x02
213+
#define RF_SETUP_RETR_ARC_1 0x01
214+
#define RF_SETUP_RETR_ARC_0 0x00
215+
#define RF_SETUP_RETR_DISABLE 0x00
216216

217217
//RF_CH register bitwise definitions
218-
#define RF_RF_CH_RESERVED 0x80
219-
#define RF_RF_CH_MAX_CHAN_NUM 127
218+
#define RF_RF_CH_RESERVED 0x80
219+
#define RF_RF_CH_MAX_CHAN_NUM 127
220220

221221
//RF_SETUP register bitwise definitions
222222
#define RF_RF_SETUP_CONT_WAVE 0x80
223223
#define RF_RF_SETUP_RESERVED 0x40
224+
#define RF_RF_SETUP_RF_DR 0x28
224225
#define RF_RF_SETUP_RF_DR_LOW 0x20
225226
#define RF_RF_SETUP_PLL_LOCK 0x10
226227
#define RF_RF_SETUP_RF_DR_HIGH 0x08
@@ -235,50 +236,50 @@
235236
#define RF_RF_SETUP_RF_DR_250_KBPS RF_RF_SETUP_RF_DR_LOW
236237

237238
//STATUS register bitwise definitions
238-
#define RF_STATUS_RESERVED 0x80
239-
#define RF_STATUS_IRQ_MASKS (RF_STATUS_RX_DR | RF_STATUS_TX_DS | RF_STATUS_MAX_RT)
240-
#define RF_STATUS_RX_DR 0x40
241-
#define RF_STATUS_TX_DS 0x20
242-
#define RF_STATUS_MAX_RT 0x10
243-
#define RF_STATUS_RX_P_NO 0x0E
239+
#define RF_STATUS_RESERVED 0x80
240+
#define RF_STATUS_IRQ_MASKS (RF_STATUS_RX_DR | RF_STATUS_TX_DS | RF_STATUS_MAX_RT)
241+
#define RF_STATUS_RX_DR 0x40
242+
#define RF_STATUS_TX_DS 0x20
243+
#define RF_STATUS_MAX_RT 0x10
244+
#define RF_STATUS_RX_P_NO 0x0E
244245
#define RF_STATUS_RX_P_NO_RX_FIFO_EMPTY 0x0E
245-
#define RF_STATUS_RX_P_NO_UNUSED 0x0C
246-
#define RF_STATUS_RX_P_NO_5 0x0A
247-
#define RF_STATUS_RX_P_NO_4 0x08
248-
#define RF_STATUS_RX_P_NO_3 0x06
249-
#define RF_STATUS_RX_P_NO_2 0x04
250-
#define RF_STATUS_RX_P_NO_1 0x02
251-
#define RF_STATUS_RX_P_NO_0 0x00
252-
#define RF_STATUS_TX_FULL 0x01
246+
#define RF_STATUS_RX_P_NO_UNUSED 0x0C
247+
#define RF_STATUS_RX_P_NO_5 0x0A
248+
#define RF_STATUS_RX_P_NO_4 0x08
249+
#define RF_STATUS_RX_P_NO_3 0x06
250+
#define RF_STATUS_RX_P_NO_2 0x04
251+
#define RF_STATUS_RX_P_NO_1 0x02
252+
#define RF_STATUS_RX_P_NO_0 0x00
253+
#define RF_STATUS_TX_FULL 0x01
253254

254255
//OBSERVE_TX register bitwise definitions
255-
#define RF_OBSERVE_TX_PLOS_CNT 0xF0
256-
#define RF_OBSERVE_TX_ARC_CNT 0x0F
256+
#define RF_OBSERVE_TX_PLOS_CNT 0xF0
257+
#define RF_OBSERVE_TX_ARC_CNT 0x0F
257258

258259
//RPD register bitwise definitions
259-
#define RF_RPD_RESERVED 0xFE
260-
#define RF_RPD_RPD 0x01
260+
#define RF_RPD_RESERVED 0xFE
261+
#define RF_RPD_RPD 0x01
261262

262263
//RX_PW_P0 register bitwise definitions
263-
#define RF_RX_PW_P0_RESERVED 0xC0
264+
#define RF_RX_PW_P0_RESERVED 0xC0
264265

265266
//RX_PW_P0 register bitwise definitions
266-
#define RF_RX_PW_P0_RESERVED 0xC0
267+
#define RF_RX_PW_P0_RESERVED 0xC0
267268

268269
//RX_PW_P1 register bitwise definitions
269-
#define RF_RX_PW_P1_RESERVED 0xC0
270+
#define RF_RX_PW_P1_RESERVED 0xC0
270271

271272
//RX_PW_P2 register bitwise definitions
272-
#define RF_RX_PW_P2_RESERVED 0xC0
273+
#define RF_RX_PW_P2_RESERVED 0xC0
273274

274275
//RX_PW_P3 register bitwise definitions
275-
#define RF_RX_PW_P3_RESERVED 0xC0
276+
#define RF_RX_PW_P3_RESERVED 0xC0
276277

277278
//RX_PW_P4 register bitwise definitions
278-
#define RF_RX_PW_P4_RESERVED 0xC0
279+
#define RF_RX_PW_P4_RESERVED 0xC0
279280

280281
//RX_PW_P5 register bitwise definitions
281-
#define RF_RX_PW_P5_RESERVED 0xC0
282+
#define RF_RX_PW_P5_RESERVED 0xC0
282283

283284
//FIFO_STATUS register bitwise definitions
284285
#define RF_FIFO_STATUS_RESERVED 0x8C
@@ -375,6 +376,7 @@ void rf_configure(uint8_t config,
375376
uint8_t rx_pw_p5,
376377
uint8_t dynpd,
377378
uint8_t feature);
379+
378380
void rf_configure_debug(bool rx, uint8_t p0_payload_width, bool enable_auto_ack);
379381
void rf_configure_debug_lite(bool rx, uint8_t p0_payload_width);
380382

@@ -384,6 +386,7 @@ void rf_power_down();
384386
void rf_power_down_param(uint8_t config);
385387

386388
void rf_set_output_power(uint8_t);
389+
void rf_set_data_rate(uint8_t);
387390

388391
uint8_t rf_write_register(uint8_t regnumber, uint8_t * dataptr, uint16_t len);
389392
uint8_t rf_read_register(uint8_t regnumber, uint8_t * dataptr, uint16_t len);

include/uart.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,7 @@ uint32_t uart_calc_actual_baud_rate_from_th1(uint8_t th1_reg_value, bool smod_bi
138138
void uart_send_wait_for_complete(uint8_t tx_data);
139139
uint8_t uart_wait_for_rx_and_get();
140140

141+
// Allow stdio printf to output to uart
142+
void putchar(char c);
141143

142144
#endif /*UART_H_*/

src/rf/src/rf_configure.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3434
//
3535
// void rf_configure(uint8_t config,
36-
// uint8_t opt_rx_active_mode,
36+
// bool opt_rx_active_mode,
3737
// uint8_t en_aa,
3838
// uint8_t en_rxaddr,
3939
// uint8_t setup_aw,
@@ -59,7 +59,7 @@
5959
//
6060
// Parameters:
6161
// uint8_t config - value for CONFIG register
62-
// uint8_t opt_rx_active_mode - option to bring up device in active RX mode
62+
// bool opt_rx_active_mode - true to bring up device in active RX mode
6363
// uint8_t en_aa - value for EN_AA register
6464
// uint8_t en_rxaddr - value for EN_RXADDR register
6565
// uint8_t setup_aw - value for SETUP_AW register

0 commit comments

Comments
 (0)