Add support for buzzer

This commit is contained in:
2020-11-23 19:37:23 +01:00
parent 8a13a13a7c
commit 8ea908b8fd
13 changed files with 3996 additions and 2601 deletions

View File

@@ -23,16 +23,18 @@ int8_t cmd_at_tim_handler(uint8_t mode, char* arg);
int8_t cmd_at_dat_handler(uint8_t mode, char* arg); int8_t cmd_at_dat_handler(uint8_t mode, char* arg);
int8_t cmd_at_bts_handler(uint8_t mode, char* arg); int8_t cmd_at_bts_handler(uint8_t mode, char* arg);
int8_t cmd_at_ngt_handler(uint8_t mode, char* arg); int8_t cmd_at_ngt_handler(uint8_t mode, char* arg);
int8_t cmd_at_buz_handler(uint8_t mode, char* arg);
#define AT_NUM 7 #define AT_NUM 8
const struct AT_CMD at_commands[AT_NUM] PROGMEM = { const struct AT_CMD at_commands[AT_NUM] PROGMEM = {
{ "AT", cmd_at_handler }, { "AT", cmd_at_handler },
{ "ATI", cmd_ati_handler }, { "ATI", cmd_ati_handler },
{ "AT+RST", cmd_at_rst_handler }, { "AT+RST", cmd_at_rst_handler },
{ "AT+TIM", cmd_at_tim_handler }, { "AT+TIM", cmd_at_tim_handler },
{ "AT+DAT", cmd_at_dat_handler }, { "AT+DAT", cmd_at_dat_handler },
{ "AT+BTS", cmd_at_bts_handler }, { "AT+BTS", cmd_at_bts_handler },
{ "AT+NGT", cmd_at_ngt_handler } { "AT+NGT", cmd_at_ngt_handler },
{ "AT+BUZ", cmd_at_buz_handler }
}; };
static struct RTC_DATA* rtc_data; static struct RTC_DATA* rtc_data;
@@ -319,3 +321,33 @@ int8_t cmd_at_ngt_handler(uint8_t mode, char* arg)
return 0; return 0;
} }
int8_t cmd_at_buz_handler(uint8_t mode, char* arg)
{
uint8_t buz_en;
switch(mode)
{
case M_GET:
uart_puti(ram_cfg.buz_en, 10);
uart_puts("\n\r");
break;
case M_SET:
if(!strlen(arg)) return -1;
buz_en = atoi(arg);
if(buz_en != 0 && buz_en != 1) return -1;
ram_cfg.buz_en = buz_en;
dump_ram2eem();
uart_puts_P(PSTR("+BUZ="));
uart_puti(buz_en, 10);
uart_puts("\n\r");
break;
case M_NORM:
uart_puts_P(PSTR("AT+BUZ=(0|1)\n\r"));
}
return 0;
}

23
firmware/buzzer.c Normal file
View File

@@ -0,0 +1,23 @@
#include <avr/io.h>
#include "common.h"
#include "buzzer.h"
#include "ptimer.h"
#include "config.h"
void buz_init(void)
{
R_DDR(BUZZER_PORT) |= 1<<BUZZER;
R_PORT(BUZZER_PORT) &= ~(1<<BUZZER);
}
void buz_on(void)
{
if(ram_cfg.buz_en) tim_buz = BUZZER_DURATION;
}
void buz_handle_event(void)
{
if(tim_buz) R_PORT(BUZZER_PORT) |= 1<<BUZZER;
else R_PORT(BUZZER_PORT) &= ~(1<<BUZZER);
}

14
firmware/buzzer.h Normal file
View File

@@ -0,0 +1,14 @@
#ifndef __BUZZER_H__
#define __BUZZER_H__
#define BUZZER_PORT C
#define BUZZER 7
#define BUZZER_DURATION 10
void buz_init(void);
void buz_on(void);
void buz_handle_event(void);
#endif

View File

@@ -3,6 +3,7 @@
struct CFG ram_cfg; struct CFG ram_cfg;
struct CFG eem_cfg EEMEM; struct CFG eem_cfg EEMEM;
const struct CFG pgm_cfg PROGMEM = { const struct CFG pgm_cfg PROGMEM = {
BUZ_EN,
LED_BRIGHTNESS, LED_BRIGHTNESS,
NIGHT_MODE NIGHT_MODE
}; };

View File

@@ -7,6 +7,7 @@
#define AUTO_BTNES_SIZE 4 #define AUTO_BTNES_SIZE 4
#define BUZ_EN 1
#define LED_BRIGHTNESS 7 #define LED_BRIGHTNESS 7
#define NIGHT_MODE { -1, { 0, 0 }, { 0, 0 } } #define NIGHT_MODE { -1, { 0, 0 }, { 0, 0 } }
@@ -19,6 +20,7 @@ struct NIGHTM_CFG
struct CFG struct CFG
{ {
uint8_t buz_en;
uint8_t led_btnes; uint8_t led_btnes;
struct NIGHTM_CFG night_mode; struct NIGHTM_CFG night_mode;
}; };

View File

@@ -2,6 +2,7 @@
#include "common.h" #include "common.h"
#include "config.h" #include "config.h"
#include "keyboard.h" #include "keyboard.h"
#include "buzzer.h"
#include "debounce.h" #include "debounce.h"
#include "rtc.h" #include "rtc.h"
#include "led.h" #include "led.h"
@@ -11,16 +12,19 @@ uint8_t k_inc_hour, k_inc_minute, k_inc_second, k_inc_brightness;
void inc_hour(void) void inc_hour(void)
{ {
rtc_inc_time(HOUR); rtc_inc_time(HOUR);
buz_on();
} }
void inc_minute(void) void inc_minute(void)
{ {
rtc_inc_time(MINUTE); rtc_inc_time(MINUTE);
buz_on();
} }
void inc_second(void) void inc_second(void)
{ {
rtc_inc_time(SECOND); rtc_inc_time(SECOND);
buz_on();
} }
void inc_brightness(void) void inc_brightness(void)
@@ -28,6 +32,7 @@ void inc_brightness(void)
if(++ram_cfg.led_btnes > 7) ram_cfg.led_btnes = 0; if(++ram_cfg.led_btnes > 7) ram_cfg.led_btnes = 0;
led_set_btnes(ram_cfg.led_btnes); led_set_btnes(ram_cfg.led_btnes);
dump_ram2eem(); dump_ram2eem();
buz_on();
} }
void kbd_init(void) void kbd_init(void)

View File

@@ -4,6 +4,7 @@
#include "ptimer.h" #include "ptimer.h"
#include "config.h" #include "config.h"
#include "nightm.h" #include "nightm.h"
#include "buzzer.h"
#include "time.h" #include "time.h"
#include "uart.h" #include "uart.h"
#include "i2c.h" #include "i2c.h"
@@ -24,6 +25,7 @@ int main()
rtc_int0_init(); rtc_int0_init();
led_init(); led_init();
uart_init(); uart_init();
buz_init();
uart_bind_handler(at_handler); uart_bind_handler(at_handler);
rtc_bind_handler(update_time); rtc_bind_handler(update_time);
@@ -39,6 +41,7 @@ int main()
kbd_handle_event(); kbd_handle_event();
uart_handle_event(uart_buf); uart_handle_event(uart_buf);
rtc_handle_event(); rtc_handle_event();
buz_handle_event();
} }
} }

View File

@@ -3,10 +3,12 @@
#include "ptimer.h" #include "ptimer.h"
volatile uint16_t tim_debounce; volatile uint16_t tim_debounce;
volatile uint8_t tim_buz;
void ptimer_init(void) void ptimer_init(void)
{ {
tim_debounce = 0; tim_debounce = 0;
tim_buz = 0;
TCCR2 |= (1<<WGM21); TCCR2 |= (1<<WGM21);
TCCR2 |= (1<<CS22) | (1<<CS21) | (1<<CS20); TCCR2 |= (1<<CS22) | (1<<CS21) | (1<<CS20);
@@ -18,4 +20,5 @@ void ptimer_init(void)
ISR(TIMER2_COMP_vect) ISR(TIMER2_COMP_vect)
{ {
if(tim_debounce) --tim_debounce; if(tim_debounce) --tim_debounce;
if(tim_buz) --tim_buz;
} }

View File

@@ -2,6 +2,7 @@
#define __PTIMER_H__ #define __PTIMER_H__
extern volatile uint16_t tim_debounce; extern volatile uint16_t tim_debounce;
extern volatile uint8_t tim_buz;
void ptimer_init(void); void ptimer_init(void);

View File

@@ -56,18 +56,17 @@ X Pin_4 4 -200 -200 150 R 50 50 1 1 P
ENDDRAW ENDDRAW
ENDDEF ENDDEF
# #
# Connector_Generic_Conn_01x10 # Connector_Generic_Conn_01x09
# #
DEF Connector_Generic_Conn_01x10 J 0 40 Y N 1 F N DEF Connector_Generic_Conn_01x09 J 0 40 Y N 1 F N
F0 "J" 0 500 50 H V C CNN F0 "J" 0 500 50 H V C CNN
F1 "Connector_Generic_Conn_01x10" 0 -600 50 H V C CNN F1 "Connector_Generic_Conn_01x09" 0 -500 50 H V C CNN
F2 "" 0 0 50 H I C CNN F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN F3 "" 0 0 50 H I C CNN
$FPLIST $FPLIST
Connector*:*_1x??_* Connector*:*_1x??_*
$ENDFPLIST $ENDFPLIST
DRAW DRAW
S -50 -495 0 -505 1 1 6 N
S -50 -395 0 -405 1 1 6 N S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N S -50 -195 0 -205 1 1 6 N
@@ -77,9 +76,8 @@ S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N S -50 305 0 295 1 1 6 N
S -50 405 0 395 1 1 6 N S -50 405 0 395 1 1 6 N
S -50 450 50 -550 1 1 10 f S -50 450 50 -450 1 1 10 f
X Pin_1 1 -200 400 150 R 50 50 1 1 P X Pin_1 1 -200 400 150 R 50 50 1 1 P
X Pin_10 10 -200 -500 150 R 50 50 1 1 P
X Pin_2 2 -200 300 150 R 50 50 1 1 P X Pin_2 2 -200 300 150 R 50 50 1 1 P
X Pin_3 3 -200 200 150 R 50 50 1 1 P X Pin_3 3 -200 200 150 R 50 50 1 1 P
X Pin_4 4 -200 100 150 R 50 50 1 1 P X Pin_4 4 -200 100 150 R 50 50 1 1 P
@@ -116,6 +114,26 @@ X - 2 0 -200 100 U 50 50 1 1 P
ENDDRAW ENDDRAW
ENDDEF ENDDEF
# #
# Device_Buzzer
#
DEF Device_Buzzer BZ 0 1 Y N 1 F N
F0 "BZ" 150 50 50 H V L CNN
F1 "Device_Buzzer" 150 -50 50 H V L CNN
F2 "" -25 100 50 V I C CNN
F3 "" -25 100 50 V I C CNN
$FPLIST
*Buzzer*
$ENDFPLIST
DRAW
A 0 0 125 -899 899 0 1 0 N 0 -125 0 125
P 2 0 1 0 -65 75 -45 75 N
P 2 0 1 0 -55 85 -55 65 N
P 2 0 1 0 0 125 0 -125 N
X - 1 -100 100 100 R 50 50 1 1 P
X + 2 -100 -100 100 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_C # Device_C
# #
DEF Device_C C 0 10 N Y 1 F N DEF Device_C C 0 10 N Y 1 F N
@@ -220,6 +238,25 @@ X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW ENDDRAW
ENDDEF ENDDEF
# #
# Device_Q_NPN_BCE
#
DEF Device_Q_NPN_BCE Q 0 0 Y N 1 F N
F0 "Q" 200 50 50 H V L CNN
F1 "Device_Q_NPN_BCE" 200 -50 50 H V L CNN
F2 "" 200 100 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
C 50 0 111 0 1 10 N
P 2 0 1 0 25 25 100 100 N
P 3 0 1 0 25 -25 100 -100 100 -100 N
P 3 0 1 20 25 75 25 -75 25 -75 N
P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F
X B 1 -200 0 225 R 50 50 1 1 I
X C 2 100 200 100 D 50 50 1 1 P
X E 3 100 -200 100 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_Q_PNP_BCE # Device_Q_PNP_BCE
# #
DEF Device_Q_PNP_BCE Q 0 0 Y N 1 F N DEF Device_Q_PNP_BCE Q 0 0 Y N 1 F N

File diff suppressed because it is too large Load Diff

View File

@@ -12,16 +12,6 @@ NetIExt=net
version=1 version=1
LibDir= LibDir=
[eeschema/libraries] [eeschema/libraries]
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=../../../Pulpit/
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=39
ERC_TestSimilarLabels=1
[pcbnew] [pcbnew]
version=1 version=1
PageLayoutDescrFile= PageLayoutDescrFile=
@@ -257,3 +247,13 @@ uViaDrill=0.1
dPairWidth=0.2 dPairWidth=0.2
dPairGap=0.25 dPairGap=0.25
dPairViaGap=0.25 dPairViaGap=0.25
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=../../../Pulpit/
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=39
ERC_TestSimilarLabels=1

File diff suppressed because it is too large Load Diff