Files
HendiControlFirmware/Control/firmware/HendiCtrl/port.c
T
jens 8f77e6dc2d - added suspend state
- needed to modify init values of variables
- switch is off on start up

git-svn-id: http://moon:8086/svn/projects/HendiControl@184 fda53097-d464-4ada-af97-ba876c37ca34
2019-03-30 19:01:28 +00:00

59 lines
966 B
C

/*
* port.c
*
* Created: 20.02.2019 20:54:33
* Author: jens
*/
#include <avr/io.h>
#include "port.h"
void port_init()
{
DDRD = 0xFC;
DDRB = 0x06;
PORTD = 0xFC;
PORTB = 0x06;
}
typedef struct _sPort_t
{
uint8_t port;
uint8_t pin;
uint8_t pol;
} Port_t;
const Port_t portItems[NUM_ITEMS] =
{
{0x05, 2, 1},
{0x0B, 6, 1},
{0x0B, 7, 1},
{0x0B, 2, 1},
{0x0B, 3, 1},
{0x0B, 4, 1},
{0x0B, 5, 1},
{0x05, 1, 1},
};
void portSet(int portItem, int enable)
{
uint8_t addr = portItems[portItem].port;
uint8_t pin_mask = 1 << portItems[portItem].pin;
if (enable ^ portItems[portItem].pol)
{
_SFR_IO8(addr) |= pin_mask;
}
else
{
_SFR_IO8(addr) &= ~pin_mask;
}
}
int portGet(int portItem)
{
uint8_t addr = portItems[portItem].port;
uint8_t pin_mask = 1 << portItems[portItem].pin;
int enable = (_SFR_IO8(addr) & pin_mask) != pin_mask;
return enable ^ portItems[portItem].pol;
}