diff --git a/src/ArduinoZeroTemplate.c b/src/ArduinoZeroTemplate.c
index 803b1eca95bb2a88e41602009400c31e84357536..b77da5ba4d64611fff983e3d136c62aac184208c 100644
--- a/src/ArduinoZeroTemplate.c
+++ b/src/ArduinoZeroTemplate.c
@@ -36,44 +36,23 @@ void ArduinoZeroTemplate(void)
 {
 	while (true)
 	{
-		/*
-		#define PORT_INPUT_PIN_EN(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINMASK(pin)].bit.INEN = 1	// Enable input buffer (needed to be able to read a pin)
-		#define PORT_SET_CTRLSAMPLING(pin)				PORT->Group[GROUPNR(pin)].CTRL.reg |= PINMASK(pin);					// Enable continuous sampling of a pin group (always in groups of 8)
-		#define PORT_CLR_CTRLSAMPLING(pin)				PORT->Group[GROUPNR(pin)].CTRL.reg &= ~PINMASK(pin);				// Remove continuous sampling of a pins group
-		#define PORT_PULL_PIN_EN(pin)							PORT->Group[GROUPNR(pin)].PINCFG[PINMASK(pin)].bit.PULLEN=1			// Enable pull on a pin (Typ 40 kohm). Data value defines pull-up (1) or pull-down (0). Not on PA24 and PA25
-		#define PORT_PULL_PIN_DIS(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINMASK(pin)].bit.PULLEN=0			// Disable pull on a pin
-		#define PORT_PULL_PIN_DRIVE_STRONG(pin)		PORT->Group[GROUPNR(pin)].PINCFG[PINMASK(pin)].bit.DRVSTR=1			// Enable strong drive strength on a pin. (~3mA, twice for VCC=3.6V). Not on PA24 and PA25
-		#define PORT_PULL_PIN_DRIVE_WEAK(pin)			PORT->Group[GROUPNR(pin)].PINCFG[PINMASK(pin)].bit.DRVSTR=1			// Disable strong drive strength on a pin. (~1mA, twice for VCC=3.6V)
-		*/
-		PORT_INPUT_PIN_EN(PIN_PB10);
+		PORT_PIN_INPUT_EN(PIN_PB10);
 		PORT_SET_CTRLSAMPLING(PIN_PB10);
 		PORT_CLR_CTRLSAMPLING(PIN_PB10);
-PORT->Group[GROUPNR(PIN_PB10)].CTRL.reg = 0;
-		PORT_PULL_PIN_EN(PIN_PB10);
-		PORT_PULL_PIN_DIS(PIN_PB10);
-		PORT_PULL_PIN_DRIVE_STRONG(PIN_PB10);
-		PORT_PULL_PIN_DRIVE_WEAK(PIN_PB10);
+		PORT->Group[GROUPNR(PIN_PB10)].CTRL.reg = 0;
+		PORT_PIN_PULL_EN(PIN_PB10);
+		PORT_PIN_PULL_DIS(PIN_PB10);
+		PORT_PIN_PULL_DRIVE_STRONG(PIN_PB10);
+		PORT_PIN_PULL_DRIVE_WEAK(PIN_PB10);
 		
-		/*
-		#define PORT_SET_PIN(pin)								PORT->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)
-		#define PORT_CLR_PIN(pin)								PORT->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)
-		#define PORT_TOGGLE_PIN(pin)						PORT->Group[GROUPNR(pin)].OUTTGL.reg = PINMASK(pin)
-		#define PORT_PIN_TO_OUTPUT(pin)					PORT->Group[GROUPNR(pin)].DIRSET.reg = PINMASK(pin)
-		#define PORT_PIN_TO_INPUT(pin)					PORT->Group[GROUPNR(pin)].DIRCLR.reg = PINMASK(pin)
-		#define PORT_PIN_TOGGLE_DIRECTION(pin)	PORT->Group[GROUPNR(pin)].DIRTGL.reg = PINMASK(pin)
-		#define PORT_READ_PORT(pin)							(PORT->Group[GROUPNR(pin)].IN.reg																// Returns entire port (all pins)
-		#define PORT_READ_PIN1(pin)							(PORT->Group[GROUPNR(pin)].IN.reg & PINMASK(pin)) >> (pin & 31)	// Returns pin value 0 or 1.
-		#define PORT_READ_PIN(pin)							(PORT->Group[GROUPNR(pin)].IN[PINMASK(pin)].bit) >> (pin & 31)	// Returns pin value 0 or 1.
-		*/
-		PORT_SET_PIN(LED_0_PIN);
-		PORT_CLR_PIN(LED_0_PIN);
-		PORT_TOGGLE_PIN(LED_0_PIN);
+		PORT_PIN_SET(LED_0_PIN);
+		PORT_PIN_CLR(LED_0_PIN);
+		PORT_PIN_TOGGLE(LED_0_PIN);
 		PORT_PIN_TO_INPUT(LED_0_PIN);
 		PORT_PIN_TO_OUTPUT(LED_0_PIN);
 		PORT_PIN_TOGGLE_DIRECTION(LED_0_PIN);
 		readport=PORT_READ_PORT(PIN_PA00);
-		readport=PORT_READ_PIN1(PIN_PA00);
-//		readport=PORT_READ_PIN(PIN_PA00);
+		readport=PORT_READ_PIN(PIN_PA00);
 		slask = readport;
 		slask++;
 	}// end while (true) infinite loop
@@ -85,7 +64,7 @@ void ArduinoZeroTemplateInit(void)
 	struct rtc_count_config rtc_count_config_struct;
 	/* Other modules if used:
 	struct usart_config usart_config_struct;
-	struct dac_config dac_config_struct;						// There are only one DAC SAMD21 but it can in other controller have more than one channel.
+	struct dac_config dac_config_struct;
 	struct dac_chan_config dac_chan_config_struct;
 	struct i2c_master_config i2c_master_config_struct;
 	struct spi_config spi_config_struct;
@@ -105,15 +84,15 @@ void ArduinoZeroTemplateInit(void)
 
 		// Configure output pins
 			// To in all circumstances avoid glitches, set the default value of the pin before setting the direction. 
-			PORT_CLR_PIN(LED_0_PIN);							// LED
+			PORT_PIN_CLR(LED_0_PIN);							// LED
 			PORT_PIN_TO_OUTPUT(LED_0_PIN);
-			PORT_SET_PIN(MY_OUTPUT_PIN);					// MY_OUTPUT
+			PORT_PIN_SET(MY_OUTPUT_PIN);					// MY_OUTPUT
 			PORT_PIN_TO_OUTPUT(MY_OUTPUT_PIN);
 
 		// Configure input pins
 			// All IN-buffers for pins used as inputs must be enabled. This is controlled through the PINCFG.INEN bit
-//			PORT_PIN_TO_INPUT(MY_INPUT_PIN);			// MY_INPUT
-//			PORT_INPUT_PIN_EN(MY_INPUT_PIN);
+			PORT_PIN_TO_INPUT(MY_INPUT_PIN);			// MY_INPUT
+			PORT_PIN_INPUT_EN(MY_INPUT_PIN);
 
 	// End I/O configuration
 
diff --git a/src/macros.h b/src/macros.h
index 3d482f1caf86c3141ac3aab6154cc9b6c7720011..c23c97f44d685529a0fa81120bc9a7f2f09ee474 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -96,25 +96,25 @@ set several pins at once.
 // These registers can also can be accessed using IOBUS. (IOBUS only exist in Cortex M0+)
 // GROUPNR sets which port register that is accessed
 // PINMASK sets which pin (or pins but the PINMASK macro does only access one pin) in the port that is accessed
-#define PORT_SET_PIN(pin)								PORT->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)
-#define PORT_CLR_PIN(pin)								PORT->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)
-#define PORT_TOGGLE_PIN(pin)						PORT->Group[GROUPNR(pin)].OUTTGL.reg = PINMASK(pin)
+#define PORT_PIN_SET(pin)								PORT->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)
+#define PORT_PIN_CLR(pin)								PORT->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)
+#define PORT_PIN_TOGGLE(pin)						PORT->Group[GROUPNR(pin)].OUTTGL.reg = PINMASK(pin)
 #define PORT_PIN_TO_OUTPUT(pin)					PORT->Group[GROUPNR(pin)].DIRSET.reg = PINMASK(pin)
 #define PORT_PIN_TO_INPUT(pin)					PORT->Group[GROUPNR(pin)].DIRCLR.reg = PINMASK(pin)
 #define PORT_PIN_TOGGLE_DIRECTION(pin)	PORT->Group[GROUPNR(pin)].DIRTGL.reg = PINMASK(pin)
-#define PORT_READ_PORT(pin)							PORT->Group[GROUPNR(pin)].IN.reg																// Returns entire port (all pins)
-#define PORT_READ_PIN1(pin)							(PORT->Group[GROUPNR(pin)].IN.reg & PINMASK(pin)) >> (pin & 31)	// Returns pin value 0 or 1.
-#define PORT_READ_PIN(pin)							PORT->Group[GROUPNR(pin)].IN.bit.IN[PINNR(pin)]=1	// Returns pin value 0 or 1.
+#define PORT_READ_PORT(pin)							PORT->Group[GROUPNR(pin)].IN.reg	// Returns entire port (all pins) that the pin belongs to. (Use for example PIN_A00)
+#define PORT_READ_PIN(pin)							(PORT->Group[GROUPNR(pin)].IN.reg & PINMASK(pin)) >> (pin & 31)	// Returns pin value 0 or 1.
 
 // Same as above but using IOBUS. (Only in Cortex M0+)
 #ifdef PORT_IOBUS
-	#define PORT_IOB_SET_PIN(pin)								PORT_IOBUS->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)		// Set to 1; Time at 48 MHz is 190nsec
-	#define PORT_IOB_CLR_PIN(pin)								PORT_IOBUS->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)
-	#define PORT_IOB_TOGGLE_PIN(pin)						PORT_IOBUS->Group[GROUPNR(pin)].OUTTGL.reg = PINMASK(pin)
+	#define PORT_IOB_PIN_SET(pin)								PORT_IOBUS->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)		// Set to 1; Time at 48 MHz is 190nsec
+	#define PORT_IOB_PIN_CLR(pin)								PORT_IOBUS->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)
+	#define PORT_IOB_PIN_TOGGLE(pin)						PORT_IOBUS->Group[GROUPNR(pin)].OUTTGL.reg = PINMASK(pin)
 	#define PORT_IOB_PIN_TO_OUTPUT(pin)					PORT_IOBUS->Group[GROUPNR(pin)].DIRSET.reg = PINMASK(pin)
 	#define PORT_IOB_PIN_TO_INPUT(pin)					PORT_IOBUS->Group[GROUPNR(pin)].DIRCLR.reg = PINMASK(pin)
 	#define PORT_IOB_PIN_TOGGLE_DIRECTION(pin)	PORT_IOBUS->Group[GROUPNR(pin)].DIRTGL.reg = PINMASK(pin)
-	#define PORT_IOB_READ_PIN1(pin)							(PORT_IOBUS->Group[GROUPNR(pin)].IN.reg & PINMASK(pin)) >> (pin & 31)	// Returns pin value 0 or 1.
+	#define PORT_IOB_READ_PORT(pin)							PORT_IOBUS->Group[GROUPNR(pin)].IN.reg	// Returns entire port (all pins) that the pin belongs to. (Use for example PIN_A00)
+	#define PORT_IOB_READ_PIN(pin)							(PORT_IOBUS->Group[GROUPNR(pin)].IN.reg & PINMASK(pin)) >> (pin & 31)	// Returns pin value 0 or 1.
 #endif
 
 // The remaining PORT registers of which there is only one register for the whole port (like above) but
@@ -133,11 +133,14 @@ set several pins at once.
 // PINNR sets which pin the register that is to be accessed belongs to.
 // The number 1 or 0 is the modified bit value.
 #define PORT_INPUT_PMUXEN_EN(pin)					PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.INEN = 1		// Enable the peripheral multiplexer
-#define PORT_INPUT_PIN_EN(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.INEN = 1		// Enable input buffer (needed to be able to read a pin)
-#define PORT_PULL_PIN_EN(pin)							PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.PULLEN=1		// Enable pull on a pin (Typ 40 kohm). Data value defines pull-up (1) or pull-down (0). Not on PA24 and PA25
-#define PORT_PULL_PIN_DIS(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.PULLEN=0		// Disable pull on a pin
-#define PORT_PULL_PIN_DRIVE_STRONG(pin)		PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.DRVSTR=1		// Enable strong drive strength on a pin. (~3mA, twice for VCC=3.6V). Not on PA24 and PA25
-#define PORT_PULL_PIN_DRIVE_WEAK(pin)			PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.DRVSTR=0		// Disable strong drive strength on a pin. (~1mA, twice for VCC=3.6V)
+#define PORT_PIN_INPUT_EN(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.INEN = 1		// Enable input buffer (needed to be able to read a pin)
+#define PORT_PIN_PULL_EN(pin)							PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.PULLEN=1;\
+																					PORT->Group[GROUPNR(pin)].OUTSET.reg = PINMASK(pin)					// Enable pull on a pin (Typ 40 kohm). Data value defines pull-up (1) or pull-down (0). Not on PA24 and PA25
+																																																			// Both PULLEN and OUTSET needs to be written to to enable the pull-up.
+#define PORT_PIN_PULL_DIS(pin)						PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.PULLEN=0;\
+																					PORT->Group[GROUPNR(pin)].OUTCLR.reg = PINMASK(pin)					// Disable pull on a pin
+#define PORT_PIN_PULL_DRIVE_STRONG(pin)		PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.DRVSTR=1		// Enable strong drive strength on a pin. (~3mA, twice for VCC=3.6V). Not on PA24 and PA25
+#define PORT_PIN_PULL_DRIVE_WEAK(pin)			PORT->Group[GROUPNR(pin)].PINCFG[PINNR(pin)].bit.DRVSTR=0		// Disable strong drive strength on a pin. (~1mA, twice for VCC=3.6V)
 
 // The PMUX register is not defined here
 
@@ -145,15 +148,5 @@ set several pins at once.
 
 #ifndef MACROS_H_
 #define MACROS_H_
-/*
-#define PORT_READ(port_nr)														PORT->Group[port_nr].IN.reg													// Read a port
-#define PORT_SET_CTRLSAMPLING(port_nr,port_pin)				PORT->Group[port_nr].CTRL.reg |= port_pin;					// Enable continuous sampling of a pin group (always in groups of 8)
-#define PORT_CLR_CTRLSAMPLING(port_nr,port_pin)				PORT->Group[port_nr].CTRL.reg &= ~port_pin;					// Remove continuous sampling of a pin group
-#define PORT_PULL_PIN_EN(port_nr,port_pin)						PORT->Group[port_nr].PINCFG[port_pin].PULLEN=1			// Enable pull on a pin (Typ 40 kohm). Data value defines pull-up (1) or pull-down (0). Not on PA24 and PA25
-#define PORT_PULL_PIN_DIS(port_nr,port_pin)						PORT->Group[port_nr].PINCFG[port_pin].PULLEN=0			// Disable pull on a pin
-#define PORT_PULL_PIN_DRIVE_STRONG(port_nr,port_pin)	PORT->Group[port_nr].PINCFG[port_pin].DRVSTR=1			// Enable strong drive strength on a pin. (~3mA, twice for VCC=3.6V). Not on PA24 and PA25
-#define PORT_PULL_PIN_DRIVE_WEAK(port_nr,port_pin)		PORT->Group[port_nr].PINCFG[port_pin].DRVSTR=1			// Disable strong drive strength on a pin. (~1mA, twice for VCC=3.6V)
-*/
-// Tip: Example of other register or variable fiddling: SYSCTRL->VREG.bit.RUNSTDBY = 1
 
 #endif /* MACROS_H_ */
\ No newline at end of file