From 8a442e9011db031e389e54b900e6eee69ea846d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Br=C3=BCggemann?= Date: Sat, 21 Aug 2021 12:39:15 +0200 Subject: [PATCH] out and in states now arrays, add examples, refactoring --- io-helper.c | 54 +++++++++++++++++++++++++++++++++++++++++------------- io-helper.h | 12 +++++++----- main.c | 21 +++++++++++++++------ 3 files changed, 63 insertions(+), 24 deletions(-) diff --git a/io-helper.c b/io-helper.c index 2e05102..0603771 100644 --- a/io-helper.c +++ b/io-helper.c @@ -1,29 +1,57 @@ #include #include "io-helper.h" -volatile uint32_t outStates = 0; -volatile uint32_t inStates = 0; +volatile uint8_t outStates[]={0,0,0,0}; +volatile uint8_t inStates[] = {0,0,0,0}; + +/* @brief: copies a single bit from one char to another char (or arrays thereof) +* +* +*/ +/* +void ioHelperCpArb(volatile uint8_t *source, uint16_t sourceNr,volatile uint8_t *target, uint16_t targetNr) { + if(*(source+(sourceNr/8))&(1<<(sourceNr-((sourceNr/8)*8)))) + { + *(target+(targetNr/8))|=(1<<(targetNr-((targetNr/8)*8))); + } else *(target+(targetNr/8))&=~(1<<(targetNr-((targetNr/8)*8))); +} +*/ + +void ioHelperSetBit(volatile uint8_t *list, uint8_t nr, uint8_t state) { + unsigned char ArC=0; + ArC=nr/8; + if(state) *(list+ArC)|=(1<<(nr-(ArC*8))); + else *(list+ArC)&=~(1<<(nr-(ArC*8))); +} + +unsigned char ioHelperReadBit(volatile uint8_t *list, uint8_t nr) { + unsigned char ArC=0; + ArC=nr/8; + if (*(list+ArC)&(1<<(nr-(ArC*8)))) + { + return 1; + } else return 0; +} void ioHelperCpBit(uint8_t reg, uint8_t bi, uint8_t bo) { - if(reg&(1<