diff --git a/src/main.c b/src/main.c index b2bf5e4..695f8a5 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,6 @@ +// Не работает с 168P +// Работает с RF-Nano + #include "avr/io.h" #include "avr/sleep.h" #include "avr/fuse.h" @@ -6,16 +9,19 @@ #define ZH_NRF24_CE_DDR DDRB #define ZH_NRF24_CE_PORT PORTB -#define ZH_NRF24_CE_PIN PORTB2 +// #define ZH_NRF24_CE_PIN PORTB2 // RF-Nano +#define ZH_NRF24_CE_PIN PORTB1 // 168 #define ZH_NRF24_CSN_DDR DDRB #define ZH_NRF24_CSN_PORT PORTB -#define ZH_NRF24_CSN_PIN PORTB1 +// #define ZH_NRF24_CSN_PIN PORTB1 // RF-Nano +#define ZH_NRF24_CSN_PIN PORTB2 // 168 FUSES = {0xE2, 0xDF, 0x07}; #define GATEWAY_CHANNEL 120 +// #define GATEWAY_ADDRESS 0xDDEEFF -#define DEVICE_ID 50 +#define DEVICE_ID 6 #define DEVICE_TYPE 4 #define NRF24_CE_HIGH (ZH_NRF24_CE_PORT |= (1 << ZH_NRF24_CE_PIN)) @@ -35,45 +41,58 @@ static uint8_t zh_nrf24_send_command(uint8_t cmd); static float zh_get_battery_level_charge(void); static uint64_t gateway_address = 0xDDEEFF; -static int16_t transmitted_data[7] = {DEVICE_ID, DEVICE_TYPE, 0x00, 0x00, 0x00, 0x00, 0x00}; +static int16_t transmitted_data[7] = {DEVICE_ID, DEVICE_TYPE, 300, 0x00, 0x00, 0x00, 0x00}; int main(void) { + // cli(); + // zh_pad_interrupt_init(); + // ADCSRA &= ~(1 << ADEN); + _delay_ms(50); cli(); - zh_pad_interrupt_init(); zh_spi_init(); zh_nrf24_init(); + sei(); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep_enable(); - sei(); + // zh_nrf24_send((uint8_t *)&transmitted_data, sizeof(transmitted_data)); + // sei(); for (;;) { - transmitted_data[2] = (zh_get_battery_level_charge() * 100); + _delay_ms(1000); + // int16_t transmitted_data[7] = {DEVICE_ID, DEVICE_TYPE, 300, 0x00, 0x00, 0x00, 0x00}; + // transmitted_data[2] = (zh_get_battery_level_charge() * 100); zh_nrf24_send((uint8_t *)&transmitted_data, sizeof(transmitted_data)); // sleep_cpu(); - _delay_ms(5000); } - return 0; + // return 0; } ISR(INT1_vect) { - cli(); - transmitted_data[2] = (zh_get_battery_level_charge() * 100); - zh_nrf24_send((uint8_t *)&transmitted_data, sizeof(transmitted_data)); - sei(); + // cli(); + // // transmitted_data[2] = (zh_get_battery_level_charge() * 100); + // zh_nrf24_send((uint8_t *)&transmitted_data, sizeof(transmitted_data)); + // sei(); } static void zh_pad_interrupt_init(void) { + // DDRD |= (1 << PORTD3); EICRA |= ((1 << ISC11) | (1 << ISC10)); EIMSK |= (1 << INT1); } static void zh_spi_init(void) { - DDRB |= ((1 << PORTB2) | (1 << PORTB3) | (1 << PORTB5)); + uint8_t sreg = SREG; + PORTB |= (1 << PORTB2); + DDRB |= (1 << PORTB2); + // PORTB |= (1 << PORTB2); SPCR |= ((1 << SPE) | (1 << MSTR)); + DDRB |= ((1 << PORTB3) | (1 << PORTB5)); + // PORTB |= (1 << PORTB2); + SREG = sreg; } static uint8_t zh_spi_transfer(uint8_t data) @@ -87,7 +106,8 @@ static uint8_t zh_spi_transfer(uint8_t data) static void zh_nrf24_init(void) { - ZH_NRF24_CE_DDR |= (1 << ZH_NRF24_CE_PIN); + // uint64_t gateway_address = GATEWAY_ADDRESS; + // ZH_NRF24_CE_DDR |= (1 << ZH_NRF24_CE_PIN); ZH_NRF24_CSN_DDR |= (1 << ZH_NRF24_CSN_PIN); zh_nrf24_write_register(0x00, 0x48); zh_nrf24_write_register(0x01, 0x01); @@ -112,6 +132,10 @@ static void zh_nrf24_send(uint8_t *buf, uint8_t size) { _delay_ms(1); } + // while ((PORTD & PIND2) != 0) + // { + // _delay_ms(1); + // } zh_nrf24_write_register(0x07, zh_nrf24_send_command(0xFF)); zh_nrf24_send_command(0xE1); zh_nrf24_write_register(0x00, 0x48);