Implement blinker with Relays
This commit is contained in:
parent
65ec5beadb
commit
5ddd8ef236
3 changed files with 73 additions and 37 deletions
red/mod-io2
|
@ -12,7 +12,7 @@
|
|||
platform = ch32v
|
||||
board = ch32v003f4p6_evt_r0
|
||||
framework = noneos-sdk
|
||||
# build_flags = -D SYSCLK_FREQ_48MHZ_HSI -D LOD_DEBUG_ENABLE -DCH32V003F4 -DCH32V00X -DCH32V00x -DCH32V003
|
||||
build_flags = -D SYSCLK_FREQ_48MHZ_HSI -DSDI_PRINT=1
|
||||
monitor_speed = 115200
|
||||
|
||||
[env:ch32v003f4p6_evt_r0]
|
||||
|
|
|
@ -25,7 +25,25 @@ extern "C" {
|
|||
}
|
||||
#endif
|
||||
|
||||
int main(void) {
|
||||
int main(void) {
|
||||
|
||||
u8 i = 0;
|
||||
|
||||
#ifdef NVIC_PriorityGroup_2
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
||||
#else
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
|
||||
#endif
|
||||
Delay_Init();
|
||||
#if (SDI_PRINT == SDI_PR_OPEN)
|
||||
SDI_Printf_Enable();
|
||||
#else
|
||||
USART_Printf_Init(115200);
|
||||
#endif
|
||||
|
||||
printf("SystemClk:%ld\r\n", SystemCoreClock);
|
||||
|
||||
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
|
||||
SystemCoreClockUpdate();
|
||||
|
||||
|
@ -39,10 +57,25 @@ int main(void) {
|
|||
|
||||
LOG_DEBUG(EOL "Sys Clock: %ld" EOL, SystemCoreClock);
|
||||
|
||||
MOD_IO2::Setup();
|
||||
while (1) {
|
||||
|
||||
}
|
||||
MOD_IO2::Setup();
|
||||
|
||||
bool should_blink = false;
|
||||
while (1)
|
||||
{
|
||||
Wait_Ms(1000);
|
||||
|
||||
printf("-DEBUG-PR-%08x\r\n", i++);
|
||||
if(should_blink) {
|
||||
MOD_IO2::onRelayOn(0x40, 0, 0x03);
|
||||
}
|
||||
Wait_Ms(1000);
|
||||
|
||||
printf("-DEBUG-PR-%08x\r\n", i++);
|
||||
if(should_blink) {
|
||||
MOD_IO2::onRelayOff(0x40, 0, 0x03);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void NMI_Handler(void) {
|
||||
|
|
|
@ -95,43 +95,12 @@ protected:
|
|||
static uint8_t onGetRelayState(uint8_t reg, uint8_t offset);
|
||||
static void onSetRelayState(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
|
||||
static void onRelayOn(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
static void onRelayOff(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
static uint8_t onGetRelayOff(uint8_t reg, uint8_t offset);
|
||||
|
||||
static void onSetPWM(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
|
||||
static void onSetAddress(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
|
||||
inline static const MOD_IO2_REG_Map_Type REG_MAP[MOD_IO2_REG_COUNT] = {
|
||||
{.reg = MOD_IO2_SET_DIR, .onRead = onGetDir, .onWrite = onSetDir},
|
||||
{.reg = MOD_IO2_SET_OUT, .onRead = onGetLevel, .onWrite = onSetLevel},
|
||||
{.reg = MOD_IO2_GET_IN, .onRead = onGetLevel, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_SET_PULL_UP, .onRead = onGetPullUp, .onWrite = onSetPullUp},
|
||||
|
||||
// Analog input
|
||||
{.reg = MOD_IO2_GET_ANALOG0, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_ANALOG5, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_ANALOG6, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_GET_BOARD_ID, .onRead = onGetBoardID, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_VERSION, .onRead = onGetVersion, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_RELAY_STATE, .onRead = onGetRelayState, .onWrite = onSetRelayState},
|
||||
{.reg = MOD_IO2_RELAY_ON, .onRead = onGetRelayState, .onWrite = onRelayOn},
|
||||
{.reg = MOD_IO2_RELAY_OFF, .onRead = onGetRelayOff, .onWrite = onRelayOff},
|
||||
{.reg = MOD_IO2_RELAY_STATE_GET, .onRead = onGetRelayState, .onWrite = NULL},
|
||||
|
||||
// PWM
|
||||
{.reg = MOD_IO2_SET_PWM_OFF, .onRead = NULL, .onWrite = onSetPWM},
|
||||
{.reg = MOD_IO2_SET_PWM1, .onRead = NULL, .onWrite = onSetPWM},
|
||||
{.reg = MOD_IO2_SET_PWM2, .onRead = NULL, .onWrite = onSetPWM},
|
||||
|
||||
// DAC is NOT available
|
||||
{.reg = 0x60, .onRead = NULL, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_SET_ADDRESS, .onRead = NULL, .onWrite = onSetAddress},
|
||||
};
|
||||
|
||||
inline static const MOD_IO2_GPIO_Map_Type PGM1_JUMPER = {
|
||||
.port = GPIOD, .pin = GPIO_Pin_1, .adc = 255, .tim = NULL, .tch = 255
|
||||
|
@ -203,6 +172,40 @@ public:
|
|||
static void onRegisterSet(uint8_t reg);
|
||||
static uint8_t onRegRead(uint8_t reg, uint8_t offset);
|
||||
static void onRegWrite(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
static void onRelayOn(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
static void onRelayOff(uint8_t reg, uint8_t offset, uint8_t data);
|
||||
|
||||
protected:
|
||||
|
||||
inline static const MOD_IO2_REG_Map_Type REG_MAP[MOD_IO2_REG_COUNT] = {
|
||||
{.reg = MOD_IO2_SET_DIR, .onRead = onGetDir, .onWrite = onSetDir},
|
||||
{.reg = MOD_IO2_SET_OUT, .onRead = onGetLevel, .onWrite = onSetLevel},
|
||||
{.reg = MOD_IO2_GET_IN, .onRead = onGetLevel, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_SET_PULL_UP, .onRead = onGetPullUp, .onWrite = onSetPullUp},
|
||||
|
||||
// Analog input
|
||||
{.reg = MOD_IO2_GET_ANALOG0, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_ANALOG5, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_ANALOG6, .onRead = onAnalogGet, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_GET_BOARD_ID, .onRead = onGetBoardID, .onWrite = NULL},
|
||||
{.reg = MOD_IO2_GET_VERSION, .onRead = onGetVersion, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_RELAY_STATE, .onRead = onGetRelayState, .onWrite = onSetRelayState},
|
||||
{.reg = MOD_IO2_RELAY_ON, .onRead = onGetRelayState, .onWrite = onRelayOn},
|
||||
{.reg = MOD_IO2_RELAY_OFF, .onRead = onGetRelayOff, .onWrite = onRelayOff},
|
||||
{.reg = MOD_IO2_RELAY_STATE_GET, .onRead = onGetRelayState, .onWrite = NULL},
|
||||
|
||||
// PWM
|
||||
{.reg = MOD_IO2_SET_PWM_OFF, .onRead = NULL, .onWrite = onSetPWM},
|
||||
{.reg = MOD_IO2_SET_PWM1, .onRead = NULL, .onWrite = onSetPWM},
|
||||
{.reg = MOD_IO2_SET_PWM2, .onRead = NULL, .onWrite = onSetPWM},
|
||||
|
||||
// DAC is NOT available
|
||||
{.reg = 0x60, .onRead = NULL, .onWrite = NULL},
|
||||
|
||||
{.reg = MOD_IO2_SET_ADDRESS, .onRead = NULL, .onWrite = onSetAddress},
|
||||
};
|
||||
};
|
||||
|
||||
#endif /* __MOD_IO2_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue