BaitAndSwitch/board.h

35 lines
1.3 KiB
C

#pragma once
#include <avr/io.h>
#include <stdio.h>
extern FILE USBSerialStream;
#define SET_FUN_N(NAME, PORT, PIN) inline static void NAME(void) { PORT |= (1<<PIN); }
#define CLR_FUN_N(NAME, PORT, PIN) inline static void NAME(void) { PORT &= ~(1<<PIN); }
#define GET_FUN_N(NAME, PORT, PIN) inline static int NAME(void) { return !!(PORT & (1<<PIN)); }
#define PIN_FUN_N(NAME, PORT_NAME, PIN_NUM) \
SET_FUN_N(NAME##On, PORT##PORT_NAME, PIN_NUM) \
CLR_FUN_N(NAME##Off, PORT##PORT_NAME, PIN_NUM) \
GET_FUN_N(NAME##Pin, PIN##PORT_NAME, PIN_NUM) \
GET_FUN_N(NAME##Port, PORT##PORT_NAME, PIN_NUM)
#define SET_FUN_I(NAME, PORT, PIN) inline static void NAME(void) { PORT &= ~(1<<PIN); }
#define CLR_FUN_I(NAME, PORT, PIN) inline static void NAME(void) { PORT |= (1<<PIN); }
#define GET_FUN_I(NAME, PORT, PIN) inline static int NAME(void) { return !(PORT & (1<<PIN)); }
#define PIN_FUN_I(NAME, PORT_NAME, PIN_NUM) \
SET_FUN_I(NAME##On, PORT##PORT_NAME, PIN_NUM) \
CLR_FUN_I(NAME##Off, PORT##PORT_NAME, PIN_NUM) \
GET_FUN_I(NAME##Pin, PIN##PORT_NAME, PIN_NUM) \
GET_FUN_I(NAME##Port, PORT##PORT_NAME, PIN_NUM)
PIN_FUN_N(SysLed, B, 7)
PIN_FUN_N(PortAInd, D, 0)
PIN_FUN_N(PortBInd, D, 2)
PIN_FUN_N(PortAPow, D, 1)
PIN_FUN_N(PortBPow, D, 3)
PIN_FUN_I(OutEn, D, 4)
PIN_FUN_I(CtrlData, D, 5)
PIN_FUN_N(DutData, D, 5)