12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #pragma once
- #ifndef _MAIN_H
- #define _MAIN_H
- #include "event-system.h"
- //#define F_CPU 16000000UL
- /**
- * Битовые макросы
- */
- #define SetBit(x,y) x |= (1 << (y))
- #define ClrBit(x,y) x &= ~(1 << (y))
- #define InvBit(x,y) x ^= (1 << (y))
- #define IsBit(x,y) (x & (1 << (y)))
- #define ResBit(reg,bit) (reg &= ~_BV(bit))
- /*
- Автоматически включается avr/sfr_defs.h, который содержит:
- _BV(bit) === (1<<(bit))
- bit_is_set(sfr, bit)
- bit_is_clear(sfr, bit)
- loop_until_bit_is_set(sfr, bit)
- loop_until_bit_is_clear(sfr, bit)
- */
- /**
- * Дефайны
- */
- /* Port B, puttons, input, pull-up */
- #define BTN_NUM 3
- #define BUTTON1_PIN _BV(PB3)
- #define BUTTON2_PIN _BV(PB4)
- #define BUTTON3_PIN _BV(PB5)
- #define BUTTON_PINS (BUTTON1_PIN | BUTTON2_PIN | BUTTON3_PIN)
- #define BUTTON1_STATE (PINB & BUTTON1_PIN)
- #define BUTTON2_STATE (PINB & BUTTON2_PIN)
- #define BUTTON3_STATE (PINB & BUTTON3_PIN)
- #define BUTTONS_STATE (PINB & BUTTON_PINS)
- #define BUTTON_STATE(pin) (PINB & pin)
- #define BUTTON_PERIOD 10
- /* все временные константы кнопок кратны периоду опроса кнопок. */
- #define BTN_TIME_PRESSED 5
- #define BTN_TIME_HOLDED 25
- #define BTN_TIME_REPEATED 10
- #define BTN_TIME_PAUSE 5
- /* Port C, Lamp digits, output */
- #define DIGIT_BLANK 0x0F
- #define DIGIT_A0 _BV(PC0)
- #define DIGIT_A1 _BV(PC1)
- #define DIGIT_A2 _BV(PC2)
- #define DIGIT_A3 _BV(PC3)
- #define DIGIT_PINS (DIGIT_A0 | DIGIT_A1 | DIGIT_A2 | DIGIT_A3)
- /* Port D, Lamp anods, Dot, RTC interrupt, UART */
- #define DOT_PIN _BV(PD2)
- #define ANOD1 _BV(PD4)
- #define ANOD2 _BV(PD5)
- #define ANOD3 _BV(PD6)
- #define ANOD4 _BV(PD7)
- #define ANOD_PINS (ANOD1 | ANOD2 | ANOD3 | ANOD4)
- typedef struct {
- uint8_t time;
- es_event_t pressed;
- es_event_t holded;
- uint8_t pin;
- } btn_t;
- #endif
|