Prepared EEPROM functionality
This commit is contained in:
parent
8a604f911b
commit
4d943999d5
4
Config.h
4
Config.h
@ -4,6 +4,10 @@
|
|||||||
#define MCU_328P 0x90
|
#define MCU_328P 0x90
|
||||||
#define MCU_1284P 0x91
|
#define MCU_1284P 0x91
|
||||||
|
|
||||||
|
#define PRODUCT_RNODE 0x03
|
||||||
|
#define MODEL_A4 0xA4
|
||||||
|
#define MODEL_A9 0xA9
|
||||||
|
|
||||||
#if defined(__AVR_ATmega328P__)
|
#if defined(__AVR_ATmega328P__)
|
||||||
#define MCU_VARIANT MCU_328P
|
#define MCU_VARIANT MCU_328P
|
||||||
#warning "Firmware is being compiled for atmega328p based boards"
|
#warning "Firmware is being compiled for atmega328p based boards"
|
||||||
|
36
EEPROM.cpp
Normal file
36
EEPROM.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
#include <EEPROM.h>
|
||||||
|
#include "Config.h"
|
||||||
|
#include "Framing.h"
|
||||||
|
|
||||||
|
#define ADDR_PRODUCT 0x00
|
||||||
|
#define ADDR_MODEL 0x01
|
||||||
|
#define ADDR_HW_REV 0x02
|
||||||
|
#define ADDR_SERIAL 0x03
|
||||||
|
#define ADDR_MADE 0x06
|
||||||
|
#define ADDR_CHKSUM 0x0A
|
||||||
|
#define ADDR_SIGNATURE 0x1A
|
||||||
|
#define ADDR_INFO_LOCK 0x9A
|
||||||
|
#define INFO_LOCK_BYTE 0x73
|
||||||
|
|
||||||
|
#define ADDR_CONF_SF 0x74
|
||||||
|
#define ADDR_CONF_CR 0x75
|
||||||
|
#define ADDR_CONF_TXP 0x76
|
||||||
|
#define ADDR_CONF_BW 0x77
|
||||||
|
#define ADDR_CONF_FREQ 0x7B
|
||||||
|
#define ADDR_CONF_OK 0x7F
|
||||||
|
#define CONF_OK_BYTE 0x73
|
||||||
|
|
||||||
|
void eeprom_dump_info() {
|
||||||
|
for (int addr = ADDR_PRODUCT; addr <= ADDR_INFO_LOCK; addr++) {
|
||||||
|
uint8_t rom_byte = EEPROM.read(addr);
|
||||||
|
Serial.write(rom_byte);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void eeprom_dump_config() {
|
||||||
|
for (int addr = ADDR_CONF_SF; addr <= ADDR_CONF_OK; addr++) {
|
||||||
|
uint8_t rom_byte = EEPROM.read(addr);
|
||||||
|
Serial.write(rom_byte);
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,11 @@
|
|||||||
#define CMD_BLINK 0x30
|
#define CMD_BLINK 0x30
|
||||||
#define CMD_RANDOM 0x40
|
#define CMD_RANDOM 0x40
|
||||||
|
|
||||||
|
#define CMD_INFO_READ 0x50
|
||||||
|
#define CMD_INFO_WRITE 0x51
|
||||||
|
#define CMD_CONF_READ 0x52
|
||||||
|
#define CMD_CONF_WRITE 0x53
|
||||||
|
|
||||||
#define RADIO_STATE_OFF 0x00
|
#define RADIO_STATE_OFF 0x00
|
||||||
#define RADIO_STATE_ON 0x01
|
#define RADIO_STATE_ON 0x01
|
||||||
|
|
||||||
|
6
LoRa.cpp
6
LoRa.cpp
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <LoRa.h>
|
#include <LoRa.h>
|
||||||
|
|
||||||
// registers
|
// Registers
|
||||||
#define REG_FIFO 0x00
|
#define REG_FIFO 0x00
|
||||||
#define REG_OP_MODE 0x01
|
#define REG_OP_MODE 0x01
|
||||||
#define REG_FRF_MSB 0x06
|
#define REG_FRF_MSB 0x06
|
||||||
@ -39,7 +39,7 @@
|
|||||||
#define REG_DIO_MAPPING_1 0x40
|
#define REG_DIO_MAPPING_1 0x40
|
||||||
#define REG_VERSION 0x42
|
#define REG_VERSION 0x42
|
||||||
|
|
||||||
// modes
|
// Modes
|
||||||
#define MODE_LONG_RANGE_MODE 0x80
|
#define MODE_LONG_RANGE_MODE 0x80
|
||||||
#define MODE_SLEEP 0x00
|
#define MODE_SLEEP 0x00
|
||||||
#define MODE_STDBY 0x01
|
#define MODE_STDBY 0x01
|
||||||
@ -112,7 +112,7 @@ int LoRaClass::begin(long frequency)
|
|||||||
writeRegister(REG_MODEM_CONFIG_3, 0x04);
|
writeRegister(REG_MODEM_CONFIG_3, 0x04);
|
||||||
|
|
||||||
// set output power to 17 dBm
|
// set output power to 17 dBm
|
||||||
setTxPower(17);
|
setTxPower(2);
|
||||||
|
|
||||||
// put in standby mode
|
// put in standby mode
|
||||||
idle();
|
idle();
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <LoRa.h>
|
#include <LoRa.h>
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Framing.h"
|
#include "Framing.h"
|
||||||
|
#include "EEPROM.cpp"
|
||||||
#include "Utilities.cpp"
|
#include "Utilities.cpp"
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
@ -360,6 +361,8 @@ void loop() {
|
|||||||
dcd_waiting = true;
|
dcd_waiting = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
led_indicate_standby();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Serial.available()) {
|
if (Serial.available()) {
|
||||||
|
@ -51,6 +51,26 @@ void led_indicate_info(int cycles) {
|
|||||||
digitalWrite(pin_led_rx, LOW);
|
digitalWrite(pin_led_rx, LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t led_standby_min = 1;
|
||||||
|
uint8_t led_standby_max = 22;
|
||||||
|
uint8_t led_standby_value = led_standby_min;
|
||||||
|
int8_t led_standby_direction = 0;
|
||||||
|
unsigned long led_standby_ticks = 0;
|
||||||
|
unsigned long led_standby_wait = 11000;
|
||||||
|
void led_indicate_standby() {
|
||||||
|
led_standby_ticks++;
|
||||||
|
if (led_standby_ticks > led_standby_wait) {
|
||||||
|
led_standby_ticks = 0;
|
||||||
|
if (led_standby_value <= led_standby_min) {
|
||||||
|
led_standby_direction = 1;
|
||||||
|
} else if (led_standby_value >= led_standby_max) {
|
||||||
|
led_standby_direction = -1;
|
||||||
|
}
|
||||||
|
led_standby_value += led_standby_direction;
|
||||||
|
analogWrite(pin_led_rx, led_standby_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void escapedSerialWrite(uint8_t byte) {
|
void escapedSerialWrite(uint8_t byte) {
|
||||||
if (byte == FEND) { Serial.write(FESC); byte = TFEND; }
|
if (byte == FEND) { Serial.write(FESC); byte = TFEND; }
|
||||||
if (byte == FESC) { Serial.write(FESC); byte = TFESC; }
|
if (byte == FESC) { Serial.write(FESC); byte = TFESC; }
|
||||||
|
Loading…
Reference in New Issue
Block a user