Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef NRF24L01_H
  2. #define NRF24L01_H
  3. #define PACKET_LENGTH 32
  4. #define PACKET_PAYLOAD_BUFFER_LENGTH 22
  5. /* AVR I/O pin definionts */
  6. #define NRF_CE_DDR DDRD
  7. #define NRF_CE_PORT PORTD
  8. #define NRF_CE_PIN PD7
  9. #define NRF_CSN_DDR DDRD
  10. #define NRF_CSN_PORT PORTD
  11. #define NRF_CSN_PIN PD6
  12. #define NRF_IRQ_DDR DDRD
  13. #define NRF_IRQ_PORT PORTD
  14. #define NRF_IRQ_PIN PD5
  15. #define NRF_IRQ_PORTIN PIND
  16. void Initialize_NRF24L01(void);
  17. void Set_NRF24L01_Pins(void);
  18. void Configure_Transmission(uint8_t moduleId);
  19. uint8_t Read_NRF_Status_Register(void);
  20. uint8_t Read_NRF_Register(uint8_t address);
  21. void Write_NRF_Register(uint8_t address, uint8_t registerContents);
  22. void Send_Activate_Command(void);
  23. bool NRF24L01_Send_Message(uint8_t *buffer, uint8_t length);
  24. bool NRF24L01_Receive_Message(uint8_t *buffer, uint8_t duration);
  25. void Write_Message_To_TX_FIFO(uint8_t length, uint8_t * buffer);
  26. void Read_Message_From_RX_FIFO(uint8_t length, uint8_t * buffer);
  27. void Set_TX_Address(uint8_t * txAddress, uint8_t length);
  28. void Set_RX_P0_Address(uint8_t * rxAddress, uint8_t length);
  29. void Set_RX_P1_Address(uint8_t * rxAddress, uint8_t length);
  30. typedef enum
  31. {
  32. PACKET_TYPE_GET_SALT = 0,
  33. PACKET_TYPE_SALT = 1,
  34. PACKET_TYPE_REPORT = 2,
  35. PACKET_TYPE_GET_VALUES = 3,
  36. PACKET_TYPE_VALUES = 4,
  37. } PACKET_TYPE;
  38. typedef enum
  39. {
  40. VALUE_TYPE_TIME = 0,
  41. VALUE_TYPE_TEMPERATURE = 1,
  42. VALUE_TYPE_PRESSURE = 2,
  43. VALUE_TYPE_HUMIDITY = 3,
  44. } VALUE_TYPES;
  45. typedef struct __attribute__((packed)) BITFIELD_PACKET_COUNT_ELEMENT
  46. {
  47. uint8_t packetType : 5;
  48. uint8_t elementCount : 3;
  49. } BITFIELD_PACKET_COUNT_ELEMENT;
  50. typedef struct __attribute__((packed)) PACKET
  51. {
  52. uint64_t salt; /* 1 byte device id, 7 bytes remainder */
  53. union {
  54. struct {
  55. BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
  56. uint8_t valueTypeTemperature;
  57. int16_t temperature;
  58. uint8_t valueTypePressure;
  59. uint32_t pressure;
  60. uint8_t valueTypeHumidity;
  61. uint16_t humidity;
  62. uint8_t unused[10];
  63. } reportData;
  64. struct {
  65. BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
  66. uint8_t salt[7];
  67. uint8_t unused[14];
  68. } saltData;
  69. struct {
  70. BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
  71. uint8_t unused[21];
  72. } getSaltData;
  73. uint8_t buffer[PACKET_PAYLOAD_BUFFER_LENGTH];
  74. }payload;
  75. uint16_t crc;
  76. } PACKET;
  77. #endif