This commit is contained in:
Олег Бородин
2025-02-02 21:12:33 +02:00
parent 693b6b33b8
commit e32ff92716

52
radio.c
View File

@@ -70,22 +70,31 @@ uint8_t radio_get_status(void) {
#define RST_PIN PB4
uint8_t radio_read_cts(void) {
uint8_t cts = 0;
uint8_t rcount = 20;
i2c_start();
i2c_write(RX_I2CADDR);
i2c_write(CMD_GET_INTSTAT);
i2c_restart();
i2c_write(RX_I2CADDR | BIT(I2CADDR_WRITE_BIT));
for (uint8_t i = 0; i < rcount; i++) {
cts = i2c_read_ack();
if ((cts &= BIT(STATUS_CTS_BIT)) != 0) {
break;
}
}
i2c_read_nack();
i2c_stop();
return cts;
}
void radio_wait_cts(void) {
uint8_t cts = 0;
uint8_t rcount = 17;
while ((cts &= BIT(STATUS_CTS_BIT)) == 0) {
i2c_start();
i2c_write(RX_I2CADDR);
i2c_write(CMD_GET_INTSTAT);
i2c_restart();
i2c_write(RX_I2CADDR | BIT(I2CADDR_WRITE_BIT));
for (uint8_t i = 0; i < rcount; i++) {
cts = i2c_read_ack();
if ((cts &= BIT(STATUS_CTS_BIT)) != 0) {
break;
}
}
i2c_stop();
cts = radio_read_cts();
}
}
@@ -100,7 +109,6 @@ void radio_powerup_fmrds(void) {
}
void radio_set_fm_freq(uint16_t freq) {
//uint8_t cts = 0x00;
i2c_start();
i2c_write(RX_I2CADDR);
@@ -111,9 +119,12 @@ void radio_set_fm_freq(uint16_t freq) {
i2c_write(0);
#if 0
uint8_t cts = 0x00;
i2c_restart();
i2c_write(RX_I2CADDR | BIT(I2CADDR_WRITE_BIT));
while (cts == 0x00) {
while (cts == 0) {
cts = i2c_read_ack();
cts &= BIT(STATUS_CTS_BIT);
}
@@ -142,7 +153,7 @@ void radio_set_rx_mute(void) {
i2c_write(HI_BYTE(PROP_RX_HARD_MUTE));
i2c_write(LO_BYTE(PROP_RX_HARD_MUTE));
i2c_write(0x00);
i2c_write(0x00 | BIT(PROP_HMUTE_R_BIT));
i2c_write(BIT(PROP_HMUTE_L_BIT));
i2c_stop();
}
@@ -180,20 +191,17 @@ void radio_init(void) {
radio_powerup_fmrds();
radio_wait_cts();
uint16_t freq = 10010;
radio_set_fm_freq(freq);
radio_wait_cts();
radio_set_rx_mute();
radio_wait_cts();
uint8_t volume = 38;
radio_set_rx_volume(volume);
radio_wait_cts();
return;
radio_set_rx_mute();
radio_wait_cts();
}
void radio_unmute(void) {}
void radio_volume(void) {}