14 #include <avr/pgmspace.h>
21 uint32_t t32Mhz,t2Mhz;
34 OUT(PORT_t *port,
const uint8_t pin): _port(port),_pin(pin) {
39 void on() { _on = (_port->OUTSET = _pin); }
40 void off() { _on = !(_port->OUTCLR = _pin); }
41 void toggle() { _on ? off() : on(); }
42 bool isOn() {
return _on; }
59 IN(PORT_t *port,
const uint8_t pin,
bool gc =
true);
61 return _gc ? !(_port->IN & _pin) : (_port->IN & _pin);
74 #define nCS1(value) { \
75 if(value) PORTD.OUTCLR = PIN3_bm; else PORTD.OUTSET = PIN3_bm; \
80 #define nCS2(value) { \
81 if(value) PORTD.OUTCLR = PIN2_bm; else PORTD.OUTSET = PIN2_bm; \
92 virtual void onCharReceived(
const char ) = 0;
103 static const char * CLRSCR;
104 static const char * CRLF;
113 USART& operator << (
const char);
114 USART& operator << (
const char *);
115 USART& operator >> (
char &);
132 virtual uint32_t
size() = 0;
136 virtual void init() = 0;
137 virtual size_t read(
const uint32_t address,
void * buffer,
size_t size) =0;
138 virtual size_t write(
const uint32_t address,
const void * buffer,
size_t size) = 0;
142 virtual bool erase() = 0;
146 virtual uint16_t
id() = 0;
150 virtual bool eraseBlock(
const uint32_t address) = 0;
168 SPI &operator >> (uint8_t &);
169 SPI &operator << (
const uint8_t);
170 const uint8_t
get() {
175 SPI &read(
void *buffer,
size_t size) {
176 uint8_t *p = (uint8_t *)buffer;
177 for(
size_t i=0;i<size;i++)
181 SPI &write(
const void *buffer,
size_t size) {
182 uint8_t *p = (uint8_t *)buffer;
183 for(
size_t i=0;i<size;i++)
201 void (*PeriodicTask)(
const uint64_t ticks);
217 OUT *
led(
const uint8_t which);
231 return _button.isOn();
const uint64_t getTicksCount()
virtual void shutdown()=0
OUT * led(const uint8_t which)
virtual uint32_t size()=0
void setHiPerfomance(bool is32)
void addPeriodicTask(const TaskPeriod period, PeriodicTask task)
void setHandler(USARTHandler *handler)
Definition: system.h:108
IN(PORT_t *port, const uint8_t pin, bool gc=true)
USART & speed(const uint32_t)
bool isButtonPressed()
Definition: system.h:230
static const size_t BLOCK_SIZE
размер минимально стираемого блока
Definition: system.h:127
virtual bool eraseBlock(const uint32_t address)=0
void removePeriodicTask(PeriodicTask task)