upgrade to new iohelper version
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
#ifndef _IO_HELPER_
|
#ifndef _IO_HELPER_
|
||||||
#define _IO_HELPER_
|
#define _IO_HELPER_
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <avr/io.h>
|
||||||
|
|
||||||
#define LEVEL 0
|
#define LEVEL 0
|
||||||
#define EDGE 1
|
#define EDGE 1
|
||||||
@@ -13,24 +13,20 @@
|
|||||||
#define BLINK 2
|
#define BLINK 2
|
||||||
#define TOGGLE 3
|
#define TOGGLE 3
|
||||||
|
|
||||||
|
#define nrOfOutputs 32 //must be multiple of 8
|
||||||
|
#define nrOfInputs 32 //must be multiple of 8
|
||||||
|
|
||||||
#define NUMBER_OF_INPUT_BYTES 4
|
extern volatile uint8_t outStates[nrOfOutputs/8];
|
||||||
|
extern volatile uint8_t inStates[nrOfInputs/8];
|
||||||
|
extern volatile uint8_t ioHelperDebounceTable[nrOfInputs];
|
||||||
|
|
||||||
extern volatile uint8_t outStates[NUMBER_OF_INPUT_BYTES];
|
extern volatile uint8_t outStatesBlinking[nrOfOutputs/8];
|
||||||
extern volatile uint8_t outStatesBlinking[NUMBER_OF_INPUT_BYTES];
|
|
||||||
extern volatile uint8_t inStates[NUMBER_OF_INPUT_BYTES];
|
extern volatile uint8_t inStatesBothEdges[nrOfInputs/8];
|
||||||
extern volatile uint8_t inStatesRaw[NUMBER_OF_INPUT_BYTES];
|
extern volatile uint8_t inStatesRisingEdge[nrOfInputs/8];
|
||||||
extern volatile uint8_t ioHelperDebounceTable[NUMBER_OF_INPUT_BYTES*8];
|
extern volatile uint8_t inStatesFallingEdge[nrOfInputs/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 ioHelperSetOuts(void);
|
||||||
void ioHelperReadPins(void);
|
void ioHelperReadPins(void);
|
||||||
void ioHelperIoConf(void);
|
void ioHelperIoConf(void);
|
||||||
@@ -38,6 +34,10 @@ void ioHelperSetBit(volatile uint8_t *list, uint8_t nr, uint8_t state);
|
|||||||
unsigned char ioHelperReadBit(volatile uint8_t *list, uint8_t nr);
|
unsigned char ioHelperReadBit(volatile uint8_t *list, uint8_t nr);
|
||||||
void ioHelperDebounce(void);
|
void ioHelperDebounce(void);
|
||||||
void ioHelperEdgeDetector(void);
|
void ioHelperEdgeDetector(void);
|
||||||
|
void ioHelperBlinkOuts(void);
|
||||||
|
|
||||||
|
uint8_t read_Input(uint8_t nr, uint8_t type);
|
||||||
|
void set_Output(uint8_t nr, uint8_t state);
|
||||||
|
|
||||||
//Outputs
|
//Outputs
|
||||||
//Verknüpfen von Pin | Bit mit Bitposition (0...n) outStates[0...n/8].
|
//Verknüpfen von Pin | Bit mit Bitposition (0...n) outStates[0...n/8].
|
||||||
|
|||||||
@@ -1,92 +1,97 @@
|
|||||||
import string
|
import string
|
||||||
|
|
||||||
ddr="""#ifdef DDRA
|
ddr="""#ifdef DDRA
|
||||||
DDRA|=0
|
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
|
||||||
|
DDRA|=0
|
||||||
#ifdef BitPA0
|
#ifdef BitPA0
|
||||||
|(1<<0)
|
|(1<<0)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA1
|
#ifdef BitPA1
|
||||||
|(1<<1)
|
|(1<<1)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA2
|
#ifdef BitPA2
|
||||||
|(1<<2)
|
|(1<<2)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA3
|
#ifdef BitPA3
|
||||||
|(1<<3)
|
|(1<<3)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA4
|
#ifdef BitPA4
|
||||||
|(1<<4)
|
|(1<<4)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA5
|
#ifdef BitPA5
|
||||||
|(1<<5)
|
|(1<<5)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA6
|
#ifdef BitPA6
|
||||||
|(1<<6)
|
|(1<<6)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA7
|
#ifdef BitPA7
|
||||||
|(1<<7)
|
|(1<<7)
|
||||||
#endif
|
#endif
|
||||||
|0;
|
|0;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
port="""
|
port="""
|
||||||
#ifdef PORTA
|
#ifdef PORTA
|
||||||
PORTA|=0
|
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
|
||||||
|
PORTA|=0
|
||||||
#ifdef BitPA0
|
#ifdef BitPA0
|
||||||
|(getBit1(BitPA0)<<0)
|
|(getBit1(BitPA0)<<0)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA1
|
#ifdef BitPA1
|
||||||
|(getBit1(BitPA1)<<1)
|
|(getBit1(BitPA1)<<1)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA2
|
#ifdef BitPA2
|
||||||
|(getBit1(BitPA2)<<2)
|
|(getBit1(BitPA2)<<2)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA3
|
#ifdef BitPA3
|
||||||
|(getBit1(BitPA3)<<3)
|
|(getBit1(BitPA3)<<3)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA4
|
#ifdef BitPA4
|
||||||
|(getBit1(BitPA4)<<4)
|
|(getBit1(BitPA4)<<4)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA5
|
#ifdef BitPA5
|
||||||
|(getBit1(BitPA5)<<5)
|
|(getBit1(BitPA5)<<5)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA6
|
#ifdef BitPA6
|
||||||
|(getBit1(BitPA6)<<6)
|
|(getBit1(BitPA6)<<6)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA7
|
#ifdef BitPA7
|
||||||
|(getBit1(BitPA7)<<7)
|
|(getBit1(BitPA7)<<7)
|
||||||
#endif
|
#endif
|
||||||
|0;
|
|0;
|
||||||
|
}
|
||||||
|
|
||||||
PORTA&=~(0
|
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
|
||||||
|
PORTA&=~(0
|
||||||
#ifdef BitPA0
|
#ifdef BitPA0
|
||||||
|(getBit0(BitPA0)<<0)
|
|(getBit0(BitPA0)<<0)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA1
|
#ifdef BitPA1
|
||||||
|(getBit0(BitPA1)<<1)
|
|(getBit0(BitPA1)<<1)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA2
|
#ifdef BitPA2
|
||||||
|(getBit0(BitPA2)<<2)
|
|(getBit0(BitPA2)<<2)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA3
|
#ifdef BitPA3
|
||||||
|(getBit0(BitPA3)<<3)
|
|(getBit0(BitPA3)<<3)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA4
|
#ifdef BitPA4
|
||||||
|(getBit0(BitPA4)<<4)
|
|(getBit0(BitPA4)<<4)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA5
|
#ifdef BitPA5
|
||||||
|(getBit0(BitPA5)<<5)
|
|(getBit0(BitPA5)<<5)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA6
|
#ifdef BitPA6
|
||||||
|(getBit0(BitPA6)<<6)
|
|(getBit0(BitPA6)<<6)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BitPA7
|
#ifdef BitPA7
|
||||||
|(getBit0(BitPA7)<<7)
|
|(getBit0(BitPA7)<<7)
|
||||||
#endif
|
#endif
|
||||||
|0);
|
|0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|||||||
28
main.c
28
main.c
@@ -38,37 +38,37 @@ void modbusGet(void) {
|
|||||||
//;
|
//;
|
||||||
//uint16_t test;
|
//uint16_t test;
|
||||||
//modbusExchangeRegisters(&test,0,1);
|
//modbusExchangeRegisters(&test,0,1);
|
||||||
modbusExchangeRegisters((void *)outStates,0,NUMBER_OF_INPUT_BYTES/2);
|
modbusExchangeRegisters((void *)outStates,0,1);
|
||||||
break;
|
break;
|
||||||
case fcReadInputRegisters:
|
case fcReadInputRegisters:
|
||||||
if(modbusRequestedAddress() < 100)
|
if(modbusRequestedAddress() < 100)
|
||||||
modbusExchangeRegisters((void *)inStates,0,NUMBER_OF_INPUT_BYTES/2);
|
modbusExchangeRegisters((void *)inStates,0,nrOfInputs/16);
|
||||||
else if(modbusRequestedAddress() < 200)
|
else if(modbusRequestedAddress() < 200)
|
||||||
modbusExchangeRegisters((void *)inStatesBothEdges,100,NUMBER_OF_INPUT_BYTES/2);
|
modbusExchangeRegisters((void *)inStatesBothEdges,100,nrOfInputs/16);
|
||||||
else if(modbusRequestedAddress() < 300)
|
else if(modbusRequestedAddress() < 300)
|
||||||
modbusExchangeRegisters((void *)inStatesFallingEdge,200,NUMBER_OF_INPUT_BYTES/2);
|
modbusExchangeRegisters((void *)inStatesFallingEdge,200,nrOfInputs/16);
|
||||||
else if(modbusRequestedAddress() < 400)
|
else if(modbusRequestedAddress() < 400)
|
||||||
modbusExchangeRegisters((void *)inStatesRisingEdge,300,NUMBER_OF_INPUT_BYTES/2);
|
modbusExchangeRegisters((void *)inStatesRisingEdge,300,nrOfInputs/16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case fcReadInputStatus:
|
case fcReadInputStatus:
|
||||||
if(modbusRequestedAddress() < 100)
|
if(modbusRequestedAddress() < 100)
|
||||||
modbusExchangeBits(inStates,0,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(inStates,0,nrOfInputs);
|
||||||
else if(modbusRequestedAddress() < 200)
|
else if(modbusRequestedAddress() < 200)
|
||||||
modbusExchangeBits(inStatesBothEdges,100,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(inStatesBothEdges,100,nrOfInputs);
|
||||||
else if(modbusRequestedAddress() < 300)
|
else if(modbusRequestedAddress() < 300)
|
||||||
modbusExchangeBits(inStatesFallingEdge,200,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(inStatesFallingEdge,200,nrOfInputs);
|
||||||
else if(modbusRequestedAddress() < 400)
|
else if(modbusRequestedAddress() < 400)
|
||||||
modbusExchangeBits(inStatesRisingEdge,300,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(inStatesRisingEdge,300,nrOfInputs);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case fcForceMultipleCoils:
|
case fcForceMultipleCoils:
|
||||||
case fcForceSingleCoil:
|
case fcForceSingleCoil:
|
||||||
case fcReadCoilStatus:
|
case fcReadCoilStatus:
|
||||||
if(modbusRequestedAddress() < 100)
|
if(modbusRequestedAddress() < 100)
|
||||||
modbusExchangeBits(outStates,0,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(outStates,0,nrOfOutputs);
|
||||||
else if(modbusRequestedAddress() < 200)
|
else if(modbusRequestedAddress() < 200)
|
||||||
modbusExchangeBits(outStatesBlinking,100,NUMBER_OF_INPUT_BYTES*8);
|
modbusExchangeBits(outStatesBlinking,100,nrOfOutputs);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -84,7 +84,6 @@ int main()
|
|||||||
|
|
||||||
uart_init();
|
uart_init();
|
||||||
|
|
||||||
ioHelperInitBuffer();
|
|
||||||
ioHelperIoConf();
|
ioHelperIoConf();
|
||||||
timer0_init();// Timer0 millis engine init
|
timer0_init();// Timer0 millis engine init
|
||||||
|
|
||||||
@@ -109,10 +108,7 @@ int main()
|
|||||||
|
|
||||||
// Toggle all outs which are set to blinking
|
// Toggle all outs which are set to blinking
|
||||||
if(millis() - timer_blink_outs > 500){
|
if(millis() - timer_blink_outs > 500){
|
||||||
outStates[0] ^= outStatesBlinking[0];
|
ioHelperBlinkOuts();
|
||||||
outStates[1] ^= outStatesBlinking[1];
|
|
||||||
outStates[2] ^= outStatesBlinking[2];
|
|
||||||
outStates[2] ^= outStatesBlinking[3];
|
|
||||||
timer_blink_outs = millis();
|
timer_blink_outs = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user