add io helper lib

master
Eggert Jung 4 years ago
parent e2a9d85b76
commit 979856fd12

File diff suppressed because it is too large Load Diff

@ -0,0 +1,96 @@
#ifndef _IO_HELPER_
#define _IO_HELPER_
#include <stdint.h>
#define LEVEL 0
#define EDGE 1
#define RISING 2
#define FALLING 3
#define OFF 0
#define ON 1
#define BLINK 2
#define TOGGLE 3
#define NUMBER_OF_INPUT_BYTES 2
extern volatile uint8_t outStates[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t outStatesBlinking[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t inStates[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t inStatesRaw[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t ioHelperDebounceTable[NUMBER_OF_INPUT_BYTES*8];
extern volatile uint8_t oldInstates[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t inStatesBothEdges[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t inStatesRisingEdge[NUMBER_OF_INPUT_BYTES];
extern volatile uint8_t inStatesFallingEdge[NUMBER_OF_INPUT_BYTES];
uint8_t read_Input(uint8_t nr, uint8_t type);
void set_Output(uint8_t nr, uint8_t state);
void ioHelperInitBuffer(void);
void ioHelperSetOuts(void);
void ioHelperReadPins(void);
void ioHelperIoConf(void);
void ioHelperSetBit(volatile uint8_t *list, uint8_t nr, uint8_t state);
unsigned char ioHelperReadBit(volatile uint8_t *list, uint8_t nr);
void ioHelperDebounce(void);
void ioHelperEdgeDetector(void);
//Outputs
//Verknüpfen von Pin | Bit mit Bitposition (0...n) outStates[0...n/8].
#define BitPE4 0 //D0
#define BitPE5 1 //D1
#define BitPG5 2 //D2
#define BitPE3 3 //D3
#define BitPH3 4 //D4
#define BitPH4 5 //D5
#define BitPH5 6 //D6
#define BitPH6 7 //D7
#define BitPB4 8 //D8
#define BitPB5 9 //D9
#define BitPB6 10 //D10
#define BitPB7 11 //D11
#define LED_ROT_NOTAUS_SCHRANK BitPG5
#define LED_GRN_NOTAUS_SCHRANK BitPE3
#define LED_ROT_NOTAUS_ANLAGE BitPH3
#define LED_GRN_NOTAUS_ANLAGE BitPH4
#define LED_PLC_OK BitPB5
#define LED_BUS_OK BitPB6
#define LED_ZUMBACH BitPH5
#define LED_LUEFTER BitPH6
#define SCHUETZ_ZUMBACH BitPE5
//Inputs
//Verknüpfen von Pin | Bit mit Bitposition (0...n) inStates[0...n/8].
#define BitPinF0 0 //A0
#define BitPinF1 1 //A1
#define BitPinF2 2 //A2
#define BitPinF3 3 //A3
#define BitPinF4 4 //A4
#define BitPinF5 5 //A5
#define BitPinF6 6 //A6
#define BitPinF7 7 //A7
#define BitPinK0 8 //A8
#define BitPinK1 9 //A9
#define BitPinD3 10 //INO
#define BitPinD2 11 //IN1
#define BTN_ZUMBACH_EIN BitPinF2
#define BTN_ZUMBACH_AUS BitPinF3
#define BTN_LUEFTER_EIN BitPinF4
#define BTN_LUEFTER_AUS BitPinF5
#define BTN_LUEFTER_PLUS BitPinF6
#define BTN_LUEFTER_MINUS BitPinF7
#define BTN_ANLAGE_EIN BitPinD3
#define IN_ANLAGE_EIN BitPinD2
#define IN_NOTAUS_ANLAGE BitPinF0
#define IN_NOTAUS_SCHRANK BitPinF1
#endif

@ -0,0 +1,155 @@
import string
ddr="""#ifdef DDRA
DDRA|=0
#ifdef BitPA0
|(1<<0)
#endif
#ifdef BitPA1
|(1<<1)
#endif
#ifdef BitPA2
|(1<<2)
#endif
#ifdef BitPA3
|(1<<3)
#endif
#ifdef BitPA4
|(1<<4)
#endif
#ifdef BitPA5
|(1<<5)
#endif
#ifdef BitPA6
|(1<<6)
#endif
#ifdef BitPA7
|(1<<7)
#endif
|0;
#endif
"""
port="""
#ifdef PORTA
PORTA|=0
#ifdef BitPA0
|(getBit1(BitPA0)<<0)
#endif
#ifdef BitPA1
|(getBit1(BitPA1)<<1)
#endif
#ifdef BitPA2
|(getBit1(BitPA2)<<2)
#endif
#ifdef BitPA3
|(getBit1(BitPA3)<<3)
#endif
#ifdef BitPA4
|(getBit1(BitPA4)<<4)
#endif
#ifdef BitPA5
|(getBit1(BitPA5)<<5)
#endif
#ifdef BitPA6
|(getBit1(BitPA6)<<6)
#endif
#ifdef BitPA7
|(getBit1(BitPA7)<<7)
#endif
|0;
PORTA&=~(0
#ifdef BitPA0
|(getBit0(BitPA0)<<0)
#endif
#ifdef BitPA1
|(getBit0(BitPA1)<<1)
#endif
#ifdef BitPA2
|(getBit0(BitPA2)<<2)
#endif
#ifdef BitPA3
|(getBit0(BitPA3)<<3)
#endif
#ifdef BitPA4
|(getBit0(BitPA4)<<4)
#endif
#ifdef BitPA5
|(getBit0(BitPA5)<<5)
#endif
#ifdef BitPA6
|(getBit0(BitPA6)<<6)
#endif
#ifdef BitPA7
|(getBit0(BitPA7)<<7)
#endif
|0);
#endif
"""
pin="""
#ifdef PINA
#ifdef BitPinA0
ioHelperCpBit(PINA,0,BitPinA0);
#endif
#ifdef BitPinA1
ioHelperCpBit(PINA,1,BitPinA1);
#endif
#ifdef BitPinA2
ioHelperCpBit(PINA,2,BitPinA2);
#endif
#ifdef BitPinA3
ioHelperCpBit(PINA,3,BitPinA3);
#endif
#ifdef BitPinA4
ioHelperCpBit(PINA,4,BitPinA4);
#endif
#ifdef BitPinA5
ioHelperCpBit(PINA,5,BitPinA5);
#endif
#ifdef BitPinA6
ioHelperCpBit(PINA,6,BitPinA6);
#endif
#ifdef BitPinA7
ioHelperCpBit(PINA,7,BitPinA7);
#endif
#endif
"""
port_letters=list(string.ascii_uppercase);
allddr=[]
for x in range(0,len(port_letters)):
allddr.append(ddr)
allddr[x]=allddr[x].replace("DDRA","DDR"+port_letters[x])
allddr[x]=allddr[x].replace("BitPA","BitP"+port_letters[x])
allport=[]
for x in range(0,len(port_letters)):
allport.append(port)
allport[x]=allport[x].replace("PORTA","PORT"+port_letters[x])
allport[x]=allport[x].replace("BitPA","BitP"+port_letters[x])
allpin=[]
for x in range(0,len(port_letters)):
allpin.append(pin)
allpin[x]=allpin[x].replace("PINA","PIN"+port_letters[x])
allpin[x]=allpin[x].replace("BitPinA","BitPin"+port_letters[x])
for x in allddr:
#print(x)
pass
for x in allport:
#print(x)
pass
for x in allpin:
print(x)
pass