diff --git a/B15F.aps b/B15F.aps
index e1c2651..08b5532 100644
--- a/B15F.aps
+++ b/B15F.aps
@@ -1 +1 @@
-B15F22-Mar-2019 14:29:5425-Mar-2019 16:14:23241022-Mar-2019 14:29:5444, 19, 0, 730AVR GCCB15F.elfF:\JTAGICE mkIIATmega1284.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000spi.cppmain.cppMakefilemcp23s17.cppTLC5615.cppadu.cppselftest.cppvars.cppspi.hmcp23s17.hTLC5615.hadu.hselftest.hvars.hdefault\B15F.lssdefault\B15F.mapc++NOatmega12811
B15F.elfc++\0-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefaultYESMakefileatmega128411
B15F.elfdefault\0C:\avr8-gnu-toolchain-win32_x86\avr\include\C:\avr8-gnu-toolchain-win32_x86\avr\lib\libc.a-Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault0C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exeC:\WinAVR-20100110\utils\bin\make.exe00000main.cpp100001Makefile100002selftest.h100003selftest.cpp100004vars.h1
+B15F22-Mar-2019 14:29:5426-Mar-2019 08:32:01241022-Mar-2019 14:29:5444, 19, 0, 730AVR GCCB15F.elfF:\JTAGICE mkIIATmega1284.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000spi.cppmain.cppMakefilemcp23s17.cppTLC5615.cppadu.cppselftest.cppglobal_vars.cppspi.hmcp23s17.hTLC5615.hadu.hselftest.hglobal_vars.hdefault\B15F.lssdefault\B15F.mapc++NOatmega12811
B15F.elfc++\0-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefaultYESMakefileatmega128411
B15F.elfdefault\1C:\avr8-gnu-toolchain-win32_x86\avr\include\C:\avr8-gnu-toolchain-win32_x86\avr\lib\libc.a-Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefault0C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exeC:\WinAVR-20100110\utils\bin\make.exeF:\spi.hF:\mcp23s17.hF:\TLC5615.hF:\adu.hF:\selftest.hF:\global_vars.hF:\spi.cppF:\main.cppF:\MakefileF:\mcp23s17.cppF:\TLC5615.cppF:\adu.cppF:\selftest.cppF:\global_vars.cpp00000main.cpp100001Makefile100002selftest.h100003selftest.cpp100004global_vars.cpp100005spi.h100006spi.cpp1
diff --git a/B15F.elf b/B15F.elf
index a45fc7b..d842f33 100644
Binary files a/B15F.elf and b/B15F.elf differ
diff --git a/B15F.hex b/B15F.hex
index 3d8537e..3c9bc2c 100644
--- a/B15F.hex
+++ b/B15F.hex
@@ -6,93 +6,91 @@
:100050000C9464000C9464000C9464000C94640090
:100060000C9464000C9464000C9464000C94640080
:100070000C9464000C9464000C9464000C94640070
-:100080000C9464000C9464000C946400D10211245C
+:100080000C9464000C9464000C946400C602112467
:100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6
:1000A00001C01D92A131B207E1F710E0C7E4D0E032
-:1000B00004C02197FE010E94F802C634D107C9F797
-:1000C0000E94CC020C9401030C9400001F920F922A
-:1000D0000FB60F921124289A2FEF84E39CE0215051
-:1000E00080409040E1F700C0000028982FEF84E3A3
-:1000F0009CE0215080409040E1F700C00000EBCF31
-:1001000080E191E00E94A20060E08DE091E00E9419
-:10011000C9006FEF8DE091E00E94EA0060E08AE0A4
-:1001200091E00E94C9006FEF8AE091E00E94EA002E
-:100130006FEF87E091E00E94EA0080E091E00C948C
-:10014000BF010895249A259A2698279A529A539A7D
-:10015000549A80E58CBD81E08DBD5A985B985C987F
-:100160005A9A5B9A5C9A08955A985B985C9860FDDD
-:100170005A9A61FD5B9A62FD5C9A08956EBD0DB45A
-:1001800007FEFDCF8EB50895FC0171836083428325
-:1001900008951F93CF93DF93EC01162F6A81888116
-:1001A00099810E94B40060E4888199810E94BE0018
-:1001B00060E0888199810E94BE00612F88819981C9
-:1001C0000E94BE0067E088819981DF91CF911F91E5
-:1001D0000C94B4001F93CF93DF93EC01162F6A8128
-:1001E000888199810E94B40060E4888199810E948D
-:1001F000BE0061E0888199810E94BE00612F8881E4
-:1002000099810E94BE0067E088819981DF91CF913A
-:100210001F910C94B4001F93CF93DF93EC01162F22
-:100220006A81888199810E94B40060E48881998103
-:100230000E94BE0062E1888199810E94BE00612F08
-:10024000888199810E94BE0067E088819981DF9151
-:10025000CF911F910C94B4001F93CF93DF93EC01C7
-:10026000162F6A81888199810E94B40060E4888198
-:1002700099810E94BE0063E1888199810E94BE003D
-:10028000612F888199810E94BE0067E088819981F1
-:10029000DF91CF911F910C94B4001F93CF93DF9304
-:1002A000EC016A81888199810E94B40061E48881AF
-:1002B00099810E94BE0062E1888199810E94BE00FE
-:1002C00060E0888199810E94BE00182F67E08881D4
-:1002D00099810E94B400812FDF91CF911F910895E1
-:1002E0001F93CF93DF93EC016A81888199810E94EB
-:1002F000B40061E4888199810E94BE0063E1888135
-:1003000099810E94BE0060E0888199810E94BE00B0
-:10031000182F67E0888199810E94B400812FDF91B6
-:10032000CF911F910895FC01428308950F931F936D
-:10033000CF93DF93EC018B016A81888199810E94C0
-:10034000B400B8010024660F771F001C660F771FEA
-:10035000001C672F702D888199810E94BE00602F3C
-:10036000660F660F888199810E94BE0067E08881D0
-:100370009981DF91CF911F910F910C94B40010924D
-:100380007C0087E880937A00089580917C00807ECD
-:10039000682B60937C0080917A00806480937A005F
-:1003A00083EA91E00197F1F700C0000080917A00A4
-:1003B00086FDFCCF809178009091790008950F938D
-:1003C0001F93CF93DF9361E08DE091E00E940B01DA
-:1003D000C1E0D0E001E010E02FEF84E39CE0215089
-:1003E00080409040E1F700C00000B8010C2E01C031
-:1003F000660F0A94EAF78DE091E00E940B012196C6
-:10040000C930D10549F761E08AE091E00E940B0113
-:10041000C1E0D0E001E010E08FEF94E32CE08150E8
-:1004200090402040E1F700C00000B8010C2E01C050
-:10043000660F0A94EAF78AE091E00E940B01219688
-:10044000C930D10549F7C0E0D0E0BE0184E091E0B9
-:100450000E94960187E893E10197F1F700C0000040
-:100460002196C11594E0D90781F7C0E0D0E0BE0124
-:1004700081E091E00E94960187E893E10197F1F70E
-:1004800000C000002196C11594E0D90781F7DF91E3
-:10049000CF911F910F9108950F931F93CF93DF93E7
-:1004A00061E08DE091E00E940B01C1E0D0E001E04D
-:1004B00010E02FEF84E39CE0215080409040E1F772
-:1004C00000C00000B8010C2E01C0660F0A94EAF7C4
-:1004D0008DE091E00E940B012196C930D10549F7CA
-:1004E000DF91CF911F910F9108950F931F93CF9399
-:1004F000DF9361E08AE091E00E940B01C1E0D0E06F
-:1005000001E010E02FEF84E39CE021508040904018
-:10051000E1F700C00000B8010C2E01C0660F0A947C
-:10052000EAF78AE091E00E940B012196C930D105DB
-:1005300049F7DF91CF911F910F910895CF93DF93EA
-:10054000C0E0D0E0BE0184E091E00E94960187E81F
-:1005500093E10197F1F700C000002196C11594E0E6
-:10056000D90781F7DF91CF910895CF93DF93C0E052
-:10057000D0E0BE0181E091E00E94960187E893E11E
-:100580000197F1F700C000002196C11594E0D9074A
-:1005900081F7DF91CF9108950E9480000E94DF01D2
-:1005A000FDCF80E191E00E94A10042E060E171E0B6
-:1005B0008DE091E00E94C40043E060E171E08AE0D8
-:1005C00091E00E94C40045E060E171E087E091E0C5
-:1005D0000E94C40040E060E171E084E091E00E948C
-:1005E000930141E060E171E081E091E00C949301BE
-:1005F000EE0FFF1F0024001C0BBE0790F691E02DAC
-:060600000994F894FFCFFD
+:1000B00004C02197FE010E94ED02C634D107C9F7A2
+:1000C0000E94C1020C94F6020C9400001F920F9241
+:1000D0000FB60F92112491E085B1892785B92FEFD2
+:1000E00034E38CE0215030408040E1F700C0000054
+:1000F000F3CF80E191E00E949B0060E08DE091E011
+:100100000E94DE006FEF8DE091E00E94FF0060E052
+:100110008AE091E00E94DE006FEF8AE091E00E94A9
+:10012000FF006FEF87E091E00E94FF0080E091E028
+:100130000C94D401089584B1806B84B926988AB157
+:100140008C618AB980E58CBD81E08DBD8BB1837EE9
+:100150008BB95A9A5B9A5C9A08958BB1837E8BB95E
+:100160008BB160FD10C090E0892B8BB98BB161FD24
+:1001700010C090E0892B8BB98BB162FD10C090E06C
+:10018000892B8BB9089594E0892B8BB98BB161FFD2
+:10019000F0CF98E0892B8BB98BB162FFF0CF90E163
+:1001A000892B8BB908956EBD0DB407FEFDCF8EB5BA
+:1001B0000895FC0171836083428308951F93CF9358
+:1001C000DF93EC01162F6A81888199810E94AD002E
+:1001D00060E4888199810E94D30060E088819981E0
+:1001E0000E94D300612F888199810E94D30067E02B
+:1001F00088819981DF91CF911F910C94AD001F935D
+:10020000CF93DF93EC01162F6A81888199810E9438
+:10021000AD0060E4888199810E94D30061E088810B
+:1002200099810E94D300612F888199810E94D30017
+:1002300067E088819981DF91CF911F910C94AD0087
+:100240001F93CF93DF93EC01162F6A8188819981E8
+:100250000E94AD0060E4888199810E94D30062E130
+:10026000888199810E94D300612F888199810E94A1
+:10027000D30067E088819981DF91CF911F910C9421
+:10028000AD001F93CF93DF93EC01162F6A81888115
+:1002900099810E94AD0060E4888199810E94D30019
+:1002A00063E1888199810E94D300612F88819981BF
+:1002B0000E94D30067E088819981DF91CF911F91DF
+:1002C0000C94AD001F93CF93DF93EC016A8188817A
+:1002D00099810E94AD0061E4888199810E94D300D8
+:1002E00062E1888199810E94D30060E088819981D0
+:1002F0000E94D300182F67E0888199810E94AD0089
+:10030000812FDF91CF911F9108951F93CF93DF939A
+:10031000EC016A81888199810E94AD0061E4888145
+:1003200099810E94D30063E1888199810E94D30062
+:1003300060E0888199810E94D300182F67E088814E
+:1003400099810E94AD00812FDF91CF911F91089577
+:10035000FC01428308950F931F93CF93DF93EC0129
+:100360008B016A81888199810E94AD00B8010024C7
+:10037000660F771F001C660F771F001C672F702DFC
+:10038000888199810E94D300602F660F660F888153
+:1003900099810E94D30067E088819981DF91CF9194
+:1003A0001F910F910C94AD0010927C0087E8809310
+:1003B0007A00089580917C00807E682B60937C0099
+:1003C00080917A00806480937A0083EA91E00197BB
+:1003D000F1F700C0000080917A0086FDFCCF80918B
+:1003E00078009091790008950F931F93CF93DF9336
+:1003F00061E08DE091E00E942001C1E0D0E001E0E9
+:1004000010E02FEF84E39CE0215080409040E1F722
+:1004100000C00000B8010C2E01C0660F0A94EAF774
+:100420008DE091E00E9420012196C930D10549F765
+:10043000DF91CF911F910F9108950F931F93CF9349
+:10044000DF9361E08AE091E00E942001C1E0D0E00A
+:1004500001E010E02FEF84E39CE0215080409040C9
+:10046000E1F700C00000B8010C2E01C0660F0A942D
+:10047000EAF78AE091E00E9420012196C930D10577
+:1004800049F7DF91CF911F910F910895CF93DF939B
+:10049000C0E0D0E0BE0184E091E00E94AB0187E8BB
+:1004A00093E10197F1F700C000002196C11594E097
+:1004B000D90781F72FE78AE196E0215080409040EC
+:1004C000E1F700C0000060E070E084E091E0DF91BF
+:1004D000CF910C94AB01CF93DF93C0E0D0E0BE018D
+:1004E00081E091E00E94AB0187E893E10197F1F789
+:1004F00000C000002196C11594E0D90781F72FE7CD
+:100500008AE196E0215080409040E1F700C0000071
+:1005100060E070E081E091E0DF91CF910C94AB015D
+:1005200060E080E091E00E94DA01BC0184E091E0AB
+:100530000E94AB0161E080E091E00E94DA01BC0121
+:1005400081E091E00E94AB018DE091E00E94850185
+:10055000682F8DE091E00E94200187E091E00E94E9
+:100560008501682F8AE091E00E942001D9CF0E9486
+:10057000F4010E941D020E9446020E946B020E942A
+:1005800090020E9479000E94B702FDCF80E191E0C5
+:100590000E949A0042E060E171E08DE091E00E94EB
+:1005A000D90043E060E171E08AE091E00E94D90067
+:1005B00045E060E171E087E091E00E94D90040E011
+:1005C00060E171E084E091E00E94A80141E060E117
+:1005D00071E081E091E00C94A801EE0FFF1F002470
+:1005E000001C0BBE0790F691E02D0994F894FFCF04
:00000001FF
diff --git a/Makefile b/Makefile
index e8ace70..c78a78d 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ OUTPUT = B15F.elf
HEX = B15F.hex
CFLAGS = -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 -DPIO_DISABLE_I2C
LDFLAGS =
-OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o vars.o
+OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o
COMPILE = $(COMPILER_PATH) $(CFLAGS)
diff --git a/vars.cpp b/global_vars.cpp
similarity index 84%
rename from vars.cpp
rename to global_vars.cpp
index 414a876..154f77a 100644
--- a/vars.cpp
+++ b/global_vars.cpp
@@ -1,4 +1,4 @@
-#include "vars.h"
+#include "global_vars.h"
SPI spi;
MCP23S17 beba0(spi, SPIADR::BEBA0);
diff --git a/vars.h b/global_vars.h
similarity index 70%
rename from vars.h
rename to global_vars.h
index 6654e2a..aff0a83 100644
--- a/vars.h
+++ b/global_vars.h
@@ -1,5 +1,5 @@
-#ifndef VARS_H
-#define VARS_H
+#ifndef GLOBAL_VARS_H
+#define GLOBAL_VARS_H
#include "mcp23s17.h"
#include "tlc5615.h"
@@ -13,4 +13,4 @@ extern TLC5615 dac0;
extern TLC5615 dac1;
extern ADU adu;
-#endif // VARS_H
+#endif // GLOBAL_VARS_H
diff --git a/main.cpp b/main.cpp
index 21ebe35..56f2c20 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,19 +2,17 @@
#include
#include
#include
-#include "vars.h"
+#include "global_vars.h"
#include "selftest.h"
-#define LED B0
+#define LED PB0
ISR(WDT_vect)
{
while(1)
{
- dWrite(LED, HIGH);
- _delay_ms(200);
- dWrite(LED, LOW);
+ PORTB ^= _BV(LED);
_delay_ms(200);
}
WDTCSR |= _BV(WDIE);
@@ -36,8 +34,8 @@ void initAll()
int main()
{
/*WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0);
- dMode(LED, OUT);
- dWrite(LED, LOW);
+ DDRB |= _BV(LED);
+ PORTB &= ~_BV(LED);
wdt_reset();
sei();*/
diff --git a/pio.h b/pio.h
deleted file mode 100644
index 17fd75a..0000000
--- a/pio.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/***
- * _______ _____ ___
- * |_ __ \|_ _|.' `.
- * | |__) | | | / .-. \
- * | ___/ | | | | | |
- * _| |_ _| |_\ `-' /
- * |_____| |_____|`.___.'
- *
- * Preprocessor I/O Library
- *
- * ~ version 1.0.0
- * ~ written by Tristan Krause
- * ~ visit www.devfix.net
- *
- * You should have received a copy of the MIT License.
- * If not, see .
- *
- * How does it work?
- * ----------------------------------------------
- * Instead of the classical way
- * (1a) DDRA |= (1<
-
-#ifdef HIGH
-#undef HIGH
-#endif
-#define HIGH 1
-
-#ifndef LOW
-#undef LOW
-#endif
-#define LOW 0
-
-#ifndef OUT
-#undef OUT
-#endif
-#define OUT 1
-
-#ifndef OUTPUT
-#undef OUTPUT
-#endif
-#define OUTPUT 1
-
-#ifndef IN
-#undef IN
-#endif
-#define IN 0
-
-#ifndef INPUT
-#undef INPUT
-#endif
-#define INPUT 0
-
-#include "pio/dmode.h"
-#include "pio/dwrite.h"
-#include "pio/dread.h"
-
-#include "pio/mcus.h"
-
-#endif // PIO_H
diff --git a/pio/dmode.h b/pio/dmode.h
deleted file mode 100644
index a97cfcc..0000000
--- a/pio/dmode.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/***
- * dmode.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should be included directly. Use "pio.h" instead.
-#endif
-
-#ifndef PIO_DMODE_H
-#define PIO_DMODE_H
-
-#define dMode(A, B) dMode_(A, B)
-#define dMode_(A, B) DMODE ## _ ## A ## _ ## B
-
-#ifdef PA0
-#define DMODE_A0_1 DDRA |= 0x01
-#define DMODE_A0_0 DDRA &= 0xFE
-#else
-#define DMODE_A0_1 # Pin A0 not supported on this MCU!
-#define DMODE_A0_0 DMODE_A0_1
-#endif
-#ifdef PA1
-#define DMODE_A1_1 DDRA |= 0x02
-#define DMODE_A1_0 DDRA &= 0xFD
-#else
-#define DMODE_A1_1 # Pin A1 not supported on this MCU!
-#define DMODE_A1_0 DMODE_A1_1
-#endif
-#ifdef PA2
-#define DMODE_A2_1 DDRA |= 0x04
-#define DMODE_A2_0 DDRA &= 0xFB
-#else
-#define DMODE_A2_1 # Pin A2 not supported on this MCU!
-#define DMODE_A2_0 DMODE_A2_1
-#endif
-#ifdef PA3
-#define DMODE_A3_1 DDRA |= 0x08
-#define DMODE_A3_0 DDRA &= 0xF7
-#else
-#define DMODE_A3_1 # Pin A3 not supported on this MCU!
-#define DMODE_A3_0 DMODE_A3_1
-#endif
-#ifdef PA4
-#define DMODE_A4_1 DDRA |= 0x10
-#define DMODE_A4_0 DDRA &= 0xEF
-#else
-#define DMODE_A4_1 # Pin A4 not supported on this MCU!
-#define DMODE_A4_0 DMODE_A4_1
-#endif
-#ifdef PA5
-#define DMODE_A5_1 DDRA |= 0x20
-#define DMODE_A5_0 DDRA &= 0xDF
-#else
-#define DMODE_A5_1 # Pin A5 not supported on this MCU!
-#define DMODE_A5_0 DMODE_A5_1
-#endif
-#ifdef PA6
-#define DMODE_A6_1 DDRA |= 0x40
-#define DMODE_A6_0 DDRA &= 0xBF
-#else
-#define DMODE_A6_1 # Pin A6 not supported on this MCU!
-#define DMODE_A6_0 DMODE_A6_1
-#endif
-#ifdef PA7
-#define DMODE_A7_1 DDRA |= 0x80
-#define DMODE_A7_0 DDRA &= 0x7F
-#else
-#define DMODE_A7_1 # Pin A7 not supported on this MCU!
-#define DMODE_A7_0 DMODE_A7_1
-#endif
-
-
-#ifdef PB0
-#define DMODE_B0_1 DDRB |= 0x01
-#define DMODE_B0_0 DDRB &= 0xFE
-#else
-#define DMODE_B0_1 # Pin B0 not supported on this MCU!
-#define DMODE_B0_0 DMODE_B0_1
-#endif
-#ifdef PB1
-#define DMODE_B1_1 DDRB |= 0x02
-#define DMODE_B1_0 DDRB &= 0xFD
-#else
-#define DMODE_B1_1 # Pin B1 not supported on this MCU!
-#define DMODE_B1_0 DMODE_B1_1
-#endif
-#ifdef PB2
-#define DMODE_B2_1 DDRB |= 0x04
-#define DMODE_B2_0 DDRB &= 0xFB
-#else
-#define DMODE_B2_1 # Pin B2 not supported on this MCU!
-#define DMODE_B2_0 DMODE_B2_1
-#endif
-#ifdef PB3
-#define DMODE_B3_1 DDRB |= 0x08
-#define DMODE_B3_0 DDRB &= 0xF7
-#else
-#define DMODE_B3_1 # Pin B3 not supported on this MCU!
-#define DMODE_B3_0 DMODE_B3_1
-#endif
-#ifdef PB4
-#define DMODE_B4_1 DDRB |= 0x10
-#define DMODE_B4_0 DDRB &= 0xEF
-#else
-#define DMODE_B4_1 # Pin B4 not supported on this MCU!
-#define DMODE_B4_0 DMODE_B4_1
-#endif
-#ifdef PB5
-#define DMODE_B5_1 DDRB |= 0x20
-#define DMODE_B5_0 DDRB &= 0xDF
-#else
-#define DMODE_B5_1 # Pin B5 not supported on this MCU!
-#define DMODE_B5_0 DMODE_B5_1
-#endif
-#ifdef PB6
-#define DMODE_B6_1 DDRB |= 0x40
-#define DMODE_B6_0 DDRB &= 0xBF
-#else
-#define DMODE_B6_1 # Pin B6 not supported on this MCU!
-#define DMODE_B6_0 DMODE_B6_1
-#endif
-#ifdef PB7
-#define DMODE_B7_1 DDRB |= 0x80
-#define DMODE_B7_0 DDRB &= 0x7F
-#else
-#define DMODE_B7_1 # Pin B7 not supported on this MCU!
-#define DMODE_B7_0 DMODE_B7_1
-#endif
-
-
-#ifdef PC0
-#define DMODE_C0_1 DDRC |= 0x01
-#define DMODE_C0_0 DDRC &= 0xFE
-#else
-#define DMODE_C0_1 # Pin C0 not supported on this MCU!
-#define DMODE_C0_0 DMODE_C0_1
-#endif
-#ifdef PC1
-#define DMODE_C1_1 DDRC |= 0x02
-#define DMODE_C1_0 DDRC &= 0xFD
-#else
-#define DMODE_C1_1 # Pin C1 not supported on this MCU!
-#define DMODE_C1_0 DMODE_C1_1
-#endif
-#ifdef PC2
-#define DMODE_C2_1 DDRC |= 0x04
-#define DMODE_C2_0 DDRC &= 0xFB
-#else
-#define DMODE_C2_1 # Pin C2 not supported on this MCU!
-#define DMODE_C2_0 DMODE_C2_1
-#endif
-#ifdef PC3
-#define DMODE_C3_1 DDRC |= 0x08
-#define DMODE_C3_0 DDRC &= 0xF7
-#else
-#define DMODE_C3_1 # Pin C3 not supported on this MCU!
-#define DMODE_C3_0 DMODE_C3_1
-#endif
-#ifdef PC4
-#define DMODE_C4_1 DDRC |= 0x10
-#define DMODE_C4_0 DDRC &= 0xEF
-#else
-#define DMODE_C4_1 # Pin C4 not supported on this MCU!
-#define DMODE_C4_0 DMODE_C4_1
-#endif
-#ifdef PC5
-#define DMODE_C5_1 DDRC |= 0x20
-#define DMODE_C5_0 DDRC &= 0xDF
-#else
-#define DMODE_C5_1 # Pin C5 not supported on this MCU!
-#define DMODE_C5_0 DMODE_C5_1
-#endif
-#ifdef PC6
-#define DMODE_C6_1 DDRC |= 0x40
-#define DMODE_C6_0 DDRC &= 0xBF
-#else
-#define DMODE_C6_1 # Pin C6 not supported on this MCU!
-#define DMODE_C6_0 DMODE_C6_1
-#endif
-#ifdef PC7
-#define DMODE_C7_1 DDRC |= 0x80
-#define DMODE_C7_0 DDRC &= 0x7F
-#else
-#define DMODE_C7_1 # Pin C7 not supported on this MCU!
-#define DMODE_C7_0 DMODE_C7_1
-#endif
-
-
-#ifdef PD0
-#define DMODE_D0_1 DDRD |= 0x01
-#define DMODE_D0_0 DDRD &= 0xFE
-#else
-#define DMODE_D0_1 # Pin D0 not supported on this MCU!
-#define DMODE_D0_0 DMODE_D0_1
-#endif
-#ifdef PD1
-#define DMODE_D1_1 DDRD |= 0x02
-#define DMODE_D1_0 DDRD &= 0xFD
-#else
-#define DMODE_D1_1 # Pin D1 not supported on this MCU!
-#define DMODE_D1_0 DMODE_D1_1
-#endif
-#ifdef PD2
-#define DMODE_D2_1 DDRD |= 0x04
-#define DMODE_D2_0 DDRD &= 0xFB
-#else
-#define DMODE_D2_1 # Pin D2 not supported on this MCU!
-#define DMODE_D2_0 DMODE_D2_1
-#endif
-#ifdef PD3
-#define DMODE_D3_1 DDRD |= 0x08
-#define DMODE_D3_0 DDRD &= 0xF7
-#else
-#define DMODE_D3_1 # Pin D3 not supported on this MCU!
-#define DMODE_D3_0 DMODE_D3_1
-#endif
-#ifdef PD4
-#define DMODE_D4_1 DDRD |= 0x10
-#define DMODE_D4_0 DDRD &= 0xEF
-#else
-#define DMODE_D4_1 # Pin D4 not supported on this MCU!
-#define DMODE_D4_0 DMODE_D4_1
-#endif
-#ifdef PD5
-#define DMODE_D5_1 DDRD |= 0x20
-#define DMODE_D5_0 DDRD &= 0xDF
-#else
-#define DMODE_D5_1 # Pin D5 not supported on this MCU!
-#define DMODE_D5_0 DMODE_D5_1
-#endif
-#ifdef PD6
-#define DMODE_D6_1 DDRD |= 0x40
-#define DMODE_D6_0 DDRD &= 0xBF
-#else
-#define DMODE_D6_1 # Pin D6 not supported on this MCU!
-#define DMODE_D6_0 DMODE_D6_1
-#endif
-#ifdef PD7
-#define DMODE_D7_1 DDRD |= 0x80
-#define DMODE_D7_0 DDRD &= 0x7F
-#else
-#define DMODE_D7_1 # Pin D7 not supported on this MCU!
-#define DMODE_D7_0 DMODE_D7_1
-#endif
-
-#endif // PIO_DMODE_H
diff --git a/pio/dread.h b/pio/dread.h
deleted file mode 100644
index 2e2d35d..0000000
--- a/pio/dread.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/***
- * dread.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should be included directly. Use "pio.h" instead.
-#endif
-
-#ifndef PIO_DREAD_H
-#define PIO_DREAD_H
-
-#define dRead(A) dRead_(A)
-#define dRead_(A) DREAD ## _ ## A
-
-#ifdef PA0
-#define DREAD_A0 (PINA & 0x01)
-#else
-#define DREAD_A0 # Pin A0 not supported on this MCU!
-#endif
-#ifdef PA1
-#define DREAD_A1 (PINA & 0x02)
-#else
-#define DREAD_A1 # Pin A1 not supported on this MCU!
-#endif
-#ifdef PA2
-#define DREAD_A2 (PINA & 0x04)
-#else
-#define DREAD_A2 # Pin A2 not supported on this MCU!
-#endif
-#ifdef PA3
-#define DREAD_A3 (PINA & 0x08)
-#else
-#define DREAD_A3 # Pin A3 not supported on this MCU!
-#endif
-#ifdef PA4
-#define DREAD_A4 (PINA & 0x10)
-#else
-#define DREAD_A4 # Pin A4 not supported on this MCU!
-#endif
-#ifdef PA5
-#define DREAD_A5 (PINA & 0x20)
-#else
-#define DREAD_A5 # Pin A5 not supported on this MCU!
-#endif
-#ifdef PA6
-#define DREAD_A6 (PINA & 0x40)
-#else
-#define DREAD_A6 # Pin A6 not supported on this MCU!
-#endif
-#ifdef PA7
-#define DREAD_A7 (PINA & 0x80)
-#else
-#define DREAD_A7 # Pin A7 not supported on this MCU!
-#endif
-
-
-#ifdef PB0
-#define DREAD_B0 (PINB & 0x01)
-#else
-#define DREAD_B0 # Pin B0 not supported on this MCU!
-#endif
-#ifdef PB1
-#define DREAD_B1 (PINB & 0x02)
-#else
-#define DREAD_B1 # Pin B1 not supported on this MCU!
-#endif
-#ifdef PB2
-#define DREAD_B2 (PINB & 0x04)
-#else
-#define DREAD_B2 # Pin B2 not supported on this MCU!
-#endif
-#ifdef PB3
-#define DREAD_B3 (PINB & 0x08)
-#else
-#define DREAD_B3 # Pin B3 not supported on this MCU!
-#endif
-#ifdef PB4
-#define DREAD_B4 (PINB & 0x10)
-#else
-#define DREAD_B4 # Pin B4 not supported on this MCU!
-#endif
-#ifdef PB5
-#define DREAD_B5 (PINB & 0x20)
-#else
-#define DREAD_B5 # Pin B5 not supported on this MCU!
-#endif
-#ifdef PB6
-#define DREAD_B6 (PINB & 0x40)
-#else
-#define DREAD_B6 # Pin B6 not supported on this MCU!
-#endif
-#ifdef PB7
-#define DREAD_B7 (PINB & 0x80)
-#else
-#define DREAD_B7 # Pin B7 not supported on this MCU!
-#endif
-
-
-#ifdef PC0
-#define DREAD_C0 (PINC & 0x01)
-#else
-#define DREAD_C0 # Pin C0 not supported on this MCU!
-#endif
-#ifdef PC1
-#define DREAD_C1 (PINC & 0x02)
-#else
-#define DREAD_C1 # Pin C1 not supported on this MCU!
-#endif
-#ifdef PC2
-#define DREAD_C2 (PINC & 0x04)
-#else
-#define DREAD_C2 # Pin C2 not supported on this MCU!
-#endif
-#ifdef PC3
-#define DREAD_C3 (PINC & 0x08)
-#else
-#define DREAD_C3 # Pin C3 not supported on this MCU!
-#endif
-#ifdef PC4
-#define DREAD_C4 (PINC & 0x10)
-#else
-#define DREAD_C4 # Pin C4 not supported on this MCU!
-#endif
-#ifdef PC5
-#define DREAD_C5 (PINC & 0x20)
-#else
-#define DREAD_C5 # Pin C5 not supported on this MCU!
-#endif
-#ifdef PC6
-#define DREAD_C6 (PINC & 0x40)
-#else
-#define DREAD_C6 # Pin C6 not supported on this MCU!
-#endif
-#ifdef PC7
-#define DREAD_C7 (PINC & 0x80)
-#else
-#define DREAD_C7 # Pin C7 not supported on this MCU!
-#endif
-
-
-#ifdef PD0
-#define DREAD_D0 (PIND & 0x01)
-#else
-#define DREAD_D0 # Pin D0 not supported on this MCU!
-#endif
-#ifdef PD1
-#define DREAD_D1 (PIND & 0x02)
-#else
-#define DREAD_D1 # Pin D1 not supported on this MCU!
-#endif
-#ifdef PD2
-#define DREAD_D2 (PIND & 0x04)
-#else
-#define DREAD_D2 # Pin D2 not supported on this MCU!
-#endif
-#ifdef PD3
-#define DREAD_D3 (PIND & 0x08)
-#else
-#define DREAD_D3 # Pin D3 not supported on this MCU!
-#endif
-#ifdef PD4
-#define DREAD_D4 (PIND & 0x10)
-#else
-#define DREAD_D4 # Pin D4 not supported on this MCU!
-#endif
-#ifdef PD5
-#define DREAD_D5 (PIND & 0x20)
-#else
-#define DREAD_D5 # Pin D5 not supported on this MCU!
-#endif
-#ifdef PD6
-#define DREAD_D6 (PIND & 0x40)
-#else
-#define DREAD_D6 # Pin D6 not supported on this MCU!
-#endif
-#ifdef PD7
-#define DREAD_D7 (PIND & 0x80)
-#else
-#define DREAD_D7 # Pin D7 not supported on this MCU!
-#endif
-#endif // PIO_DREAD_H
diff --git a/pio/dwrite.h b/pio/dwrite.h
deleted file mode 100644
index a8ccd2a..0000000
--- a/pio/dwrite.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/***
- * dwrite.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should be included directly. Use "pio.h" instead.
-#endif
-
-#ifndef PIO_DWRITE_H
-#define PIO_DWRITE_H
-
-#define dWrite(A, B) dWrite_(A, B)
-#define dWrite_(A, B) DWRITE ## _ ## A ## _ ## B
-
-#ifdef PA0
-#define DWRITE_A0_1 PORTA |= 0x01
-#define DWRITE_A0_0 PORTA &= 0xFE
-#else
-#define DWRITE_A0_1 # Pin A0 not supported on this MCU!
-#define DWRITE_A0_0 DWRITE_A0_1
-#endif
-#ifdef PA1
-#define DWRITE_A1_1 PORTA |= 0x02
-#define DWRITE_A1_0 PORTA &= 0xFD
-#else
-#define DWRITE_A1_1 # Pin A1 not supported on this MCU!
-#define DWRITE_A1_0 DWRITE_A1_1
-#endif
-#ifdef PA2
-#define DWRITE_A2_1 PORTA |= 0x04
-#define DWRITE_A2_0 PORTA &= 0xFB
-#else
-#define DWRITE_A2_1 # Pin A2 not supported on this MCU!
-#define DWRITE_A2_0 DWRITE_A2_1
-#endif
-#ifdef PA3
-#define DWRITE_A3_1 PORTA |= 0x08
-#define DWRITE_A3_0 PORTA &= 0xF7
-#else
-#define DWRITE_A3_1 # Pin A3 not supported on this MCU!
-#define DWRITE_A3_0 DWRITE_A3_1
-#endif
-#ifdef PA4
-#define DWRITE_A4_1 PORTA |= 0x10
-#define DWRITE_A4_0 PORTA &= 0xEF
-#else
-#define DWRITE_A4_1 # Pin A4 not supported on this MCU!
-#define DWRITE_A4_0 DWRITE_A4_1
-#endif
-#ifdef PA5
-#define DWRITE_A5_1 PORTA |= 0x20
-#define DWRITE_A5_0 PORTA &= 0xDF
-#else
-#define DWRITE_A5_1 # Pin A5 not supported on this MCU!
-#define DWRITE_A5_0 DWRITE_A5_1
-#endif
-#ifdef PA6
-#define DWRITE_A6_1 PORTA |= 0x40
-#define DWRITE_A6_0 PORTA &= 0xBF
-#else
-#define DWRITE_A6_1 # Pin A6 not supported on this MCU!
-#define DWRITE_A6_0 DWRITE_A6_1
-#endif
-#ifdef PA7
-#define DWRITE_A7_1 PORTA |= 0x80
-#define DWRITE_A7_0 PORTA &= 0x7F
-#else
-#define DWRITE_A7_1 # Pin A7 not supported on this MCU!
-#define DWRITE_A7_0 DWRITE_A7_1
-#endif
-
-
-#ifdef PB0
-#define DWRITE_B0_1 PORTB |= 0x01
-#define DWRITE_B0_0 PORTB &= 0xFE
-#else
-#define DWRITE_B0_1 # Pin B0 not supported on this MCU!
-#define DWRITE_B0_0 DWRITE_B0_1
-#endif
-#ifdef PB1
-#define DWRITE_B1_1 PORTB |= 0x02
-#define DWRITE_B1_0 PORTB &= 0xFD
-#else
-#define DWRITE_B1_1 # Pin B1 not supported on this MCU!
-#define DWRITE_B1_0 DWRITE_B1_1
-#endif
-#ifdef PB2
-#define DWRITE_B2_1 PORTB |= 0x04
-#define DWRITE_B2_0 PORTB &= 0xFB
-#else
-#define DWRITE_B2_1 # Pin B2 not supported on this MCU!
-#define DWRITE_B2_0 DWRITE_B2_1
-#endif
-#ifdef PB3
-#define DWRITE_B3_1 PORTB |= 0x08
-#define DWRITE_B3_0 PORTB &= 0xF7
-#else
-#define DWRITE_B3_1 # Pin B3 not supported on this MCU!
-#define DWRITE_B3_0 DWRITE_B3_1
-#endif
-#ifdef PB4
-#define DWRITE_B4_1 PORTB |= 0x10
-#define DWRITE_B4_0 PORTB &= 0xEF
-#else
-#define DWRITE_B4_1 # Pin B4 not supported on this MCU!
-#define DWRITE_B4_0 DWRITE_B4_1
-#endif
-#ifdef PB5
-#define DWRITE_B5_1 PORTB |= 0x20
-#define DWRITE_B5_0 PORTB &= 0xDF
-#else
-#define DWRITE_B5_1 # Pin B5 not supported on this MCU!
-#define DWRITE_B5_0 DWRITE_B5_1
-#endif
-#ifdef PB6
-#define DWRITE_B6_1 PORTB |= 0x40
-#define DWRITE_B6_0 PORTB &= 0xBF
-#else
-#define DWRITE_B6_1 # Pin B6 not supported on this MCU!
-#define DWRITE_B6_0 DWRITE_B6_1
-#endif
-#ifdef PB7
-#define DWRITE_B7_1 PORTB |= 0x80
-#define DWRITE_B7_0 PORTB &= 0x7F
-#else
-#define DWRITE_B7_1 # Pin B7 not supported on this MCU!
-#define DWRITE_B7_0 DWRITE_B7_1
-#endif
-
-
-#ifdef PC0
-#define DWRITE_C0_1 PORTC |= 0x01
-#define DWRITE_C0_0 PORTC &= 0xFE
-#else
-#define DWRITE_C0_1 # Pin C0 not supported on this MCU!
-#define DWRITE_C0_0 DWRITE_C0_1
-#endif
-#ifdef PC1
-#define DWRITE_C1_1 PORTC |= 0x02
-#define DWRITE_C1_0 PORTC &= 0xFD
-#else
-#define DWRITE_C1_1 # Pin C1 not supported on this MCU!
-#define DWRITE_C1_0 DWRITE_C1_1
-#endif
-#ifdef PC2
-#define DWRITE_C2_1 PORTC |= 0x04
-#define DWRITE_C2_0 PORTC &= 0xFB
-#else
-#define DWRITE_C2_1 # Pin C2 not supported on this MCU!
-#define DWRITE_C2_0 DWRITE_C2_1
-#endif
-#ifdef PC3
-#define DWRITE_C3_1 PORTC |= 0x08
-#define DWRITE_C3_0 PORTC &= 0xF7
-#else
-#define DWRITE_C3_1 # Pin C3 not supported on this MCU!
-#define DWRITE_C3_0 DWRITE_C3_1
-#endif
-#ifdef PC4
-#define DWRITE_C4_1 PORTC |= 0x10
-#define DWRITE_C4_0 PORTC &= 0xEF
-#else
-#define DWRITE_C4_1 # Pin C4 not supported on this MCU!
-#define DWRITE_C4_0 DWRITE_C4_1
-#endif
-#ifdef PC5
-#define DWRITE_C5_1 PORTC |= 0x20
-#define DWRITE_C5_0 PORTC &= 0xDF
-#else
-#define DWRITE_C5_1 # Pin C5 not supported on this MCU!
-#define DWRITE_C5_0 DWRITE_C5_1
-#endif
-#ifdef PC6
-#define DWRITE_C6_1 PORTC |= 0x40
-#define DWRITE_C6_0 PORTC &= 0xBF
-#else
-#define DWRITE_C6_1 # Pin C6 not supported on this MCU!
-#define DWRITE_C6_0 DWRITE_C6_1
-#endif
-#ifdef PC7
-#define DWRITE_C7_1 PORTC |= 0x80
-#define DWRITE_C7_0 PORTC &= 0x7F
-#else
-#define DWRITE_C7_1 # Pin C7 not supported on this MCU!
-#define DWRITE_C7_0 DWRITE_C7_1
-#endif
-
-
-#ifdef PD0
-#define DWRITE_D0_1 PORTD |= 0x01
-#define DWRITE_D0_0 PORTD &= 0xFE
-#else
-#define DWRITE_D0_1 # Pin D0 not supported on this MCU!
-#define DWRITE_D0_0 DWRITE_D0_1
-#endif
-#ifdef PD1
-#define DWRITE_D1_1 PORTD |= 0x02
-#define DWRITE_D1_0 PORTD &= 0xFD
-#else
-#define DWRITE_D1_1 # Pin D1 not supported on this MCU!
-#define DWRITE_D1_0 DWRITE_D1_1
-#endif
-#ifdef PD2
-#define DWRITE_D2_1 PORTD |= 0x04
-#define DWRITE_D2_0 PORTD &= 0xFB
-#else
-#define DWRITE_D2_1 # Pin D2 not supported on this MCU!
-#define DWRITE_D2_0 DWRITE_D2_1
-#endif
-#ifdef PD3
-#define DWRITE_D3_1 PORTD |= 0x08
-#define DWRITE_D3_0 PORTD &= 0xF7
-#else
-#define DWRITE_D3_1 # Pin D3 not supported on this MCU!
-#define DWRITE_D3_0 DWRITE_D3_1
-#endif
-#ifdef PD4
-#define DWRITE_D4_1 PORTD |= 0x10
-#define DWRITE_D4_0 PORTD &= 0xEF
-#else
-#define DWRITE_D4_1 # Pin D4 not supported on this MCU!
-#define DWRITE_D4_0 DWRITE_D4_1
-#endif
-#ifdef PD5
-#define DWRITE_D5_1 PORTD |= 0x20
-#define DWRITE_D5_0 PORTD &= 0xDF
-#else
-#define DWRITE_D5_1 # Pin D5 not supported on this MCU!
-#define DWRITE_D5_0 DWRITE_D5_1
-#endif
-#ifdef PD6
-#define DWRITE_D6_1 PORTD |= 0x40
-#define DWRITE_D6_0 PORTD &= 0xBF
-#else
-#define DWRITE_D6_1 # Pin D6 not supported on this MCU!
-#define DWRITE_D6_0 DWRITE_D6_1
-#endif
-#ifdef PD7
-#define DWRITE_D7_1 PORTD |= 0x80
-#define DWRITE_D7_0 PORTD &= 0x7F
-#else
-#define DWRITE_D7_1 # Pin D7 not supported on this MCU!
-#define DWRITE_D7_0 DWRITE_D7_1
-#endif
-
-
-#endif // PIO_DWRITE_H
diff --git a/pio/i2c/impl0.h b/pio/i2c/impl0.h
deleted file mode 100644
index 1733b94..0000000
--- a/pio/i2c/impl0.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/***
- * impl0.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the super parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should be included directly. Use "pio.h" instead.
-#endif
-
-#ifndef F_CPU
-#error F_CPU not defined!
-#endif
-
-#ifndef F_I2C
-#ifndef PIO_DISABLE_I2C
-#warning F_I2C not defined, I2C disabled.
-#endif
-#else
-
-#include
-
-// AVR TWI master transmitter status codes
-#define TWS_START 0x08
-#define TWS_REPEATED_START 0x10
-#define TWS_ADDR_ACK 0x18
-#define TWS_ADDR_NOT_ACK 0x20
-#define TWS_DATA_ACK 0x28
-#define TWS_DATA_NOT_ACK 0x30
-#define TWS_ARB_LOST 0x38
-
-// functions
-void i2cInit(void);
-void i2cBeginTransmission(uint8_t);
-void i2cSend(uint8_t);
-void i2cEndTransmission(void);
-
-// error function pointer
-void (*i2cError)(void) = NULL;
-
-void i2cInit() {
- // i2c clock speed, see SCL frequency formula in datasheet
- uint16_t sp = F_CPU / F_I2C - 16;
- uint16_t bp = sp;
- while(sp > 510) {
- TWSR++;
- sp /= 4;
- }
- TWBR = bp / (1<<(2*(TWSR & 0x03)+1));
-}
-
-void i2cBeginTransmission(uint8_t addr) {
- TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTA);
- while (!(TWCR & _BV(TWINT)));
- if((TWSR & 0xF8) != TWS_START)
- i2cError();
-
- TWDR = (addr & 0xFE) << 1;
- TWCR = _BV(TWEN) | _BV(TWINT);
- while (!(TWCR & _BV(TWINT)));
- if((TWSR & 0xF8) != TWS_ADDR_ACK)
- i2cError();
-}
-
-void i2cSend(uint8_t b) {
- TWDR = b;
- TWCR = _BV(TWEN) | _BV(TWINT);
- while (!(TWCR & _BV(TWINT)));
- if((TWSR & 0xF8) != TWS_DATA_ACK)
- i2cError();
-}
-
-void i2cEndTransmission() {
- TWCR = _BV(TWEN) | _BV(TWINT) | _BV(TWSTO);
- while (TWCR & _BV(TWSTO));
-}
-
-#endif
diff --git a/pio/mcus.h b/pio/mcus.h
deleted file mode 100644
index 0d96938..0000000
--- a/pio/mcus.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/***
- * mcus.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should be included directly. Use "pio.h" instead.
-#endif
-
-#ifndef PIO_MCUS_H
-#define PIO_MCUS_H
-
-#include "mcus/atmega328p.h"
-#include "mcus/atmega16.h"
-#include "mcus/atmega1284.h"
-
-#ifndef MCU
-#error No compatible MCU header file found.
-#endif
-
-#endif // PIO_MCUS_H
diff --git a/pio/mcus/atmega1284.h b/pio/mcus/atmega1284.h
deleted file mode 100644
index 88dc7fc..0000000
--- a/pio/mcus/atmega1284.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/***
- * atmega1284.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the super parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should not be included directly. Use "pio.h" instead.
-#endif
-
-#ifdef __AVR_ATmega1284__
-
-#define MCU ATmega1284
-
-#include "../i2c/impl0.h"
-
-#endif
diff --git a/pio/mcus/atmega16.h b/pio/mcus/atmega16.h
deleted file mode 100644
index 976b1dd..0000000
--- a/pio/mcus/atmega16.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/***
- * atmega16.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the super parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should not be included directly. Use "pio.h" instead.
-#endif
-
-#ifdef __AVR_ATmega16__
-
-#define MCU ATmega16
-
-#include "../i2c/impl0.h"
-
-#endif
diff --git a/pio/mcus/atmega328p.h b/pio/mcus/atmega328p.h
deleted file mode 100644
index 14632cc..0000000
--- a/pio/mcus/atmega328p.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/***
- * atmega328p.h
- * This file is part of the PIO library.
- * For license information see "pio.h" in the super parent directory.
- */
-
-#if !defined(PIOLIB) || PIOLIB < 100
-#error This file should not be included directly. Use "pio.h" instead.
-#endif
-
-
-#ifdef __AVR_ATmega328P__
-#error Not implemented!
-#endif
diff --git a/selftest.cpp b/selftest.cpp
index f8b532f..911d54e 100644
--- a/selftest.cpp
+++ b/selftest.cpp
@@ -6,6 +6,7 @@ void testAll(void)
testBEBA1();
testDAC0();
testDAC1();
+ testMirror();
}
void testBEBA0(void)
@@ -37,6 +38,8 @@ void testDAC0(void)
dac0.setValue(i);
_delay_ms(1);
}
+ _delay_ms(100);
+ dac0.setValue(0);
}
void testDAC1(void)
@@ -46,4 +49,17 @@ void testDAC1(void)
dac1.setValue(i);
_delay_ms(1);
}
+ _delay_ms(100);
+ dac1.setValue(0);
+}
+
+void testMirror()
+{
+ while(1)
+ {
+ dac0.setValue(adu.getValue(0));
+ dac1.setValue(adu.getValue(1));
+ beba0.writePortA(beba0.readPortB());
+ beba1.writePortA(sw.readPortB());
+ }
}
diff --git a/selftest.h b/selftest.h
index 0957a55..0035ed1 100644
--- a/selftest.h
+++ b/selftest.h
@@ -1,12 +1,13 @@
#ifndef SELFTEST_H
#define SELFTEST_H
-#include "vars.h"
+#include "global_vars.h"
void testAll(void);
void testBEBA0(void);
void testBEBA1(void);
void testDAC0(void);
void testDAC1(void);
+void testMirror(void);
#endif // SELFTEST_H
diff --git a/spi.cpp b/spi.cpp
index a99cc05..699b8d8 100644
--- a/spi.cpp
+++ b/spi.cpp
@@ -8,16 +8,11 @@ void SPI::init(void) const
{
// Konfiguriere SPI DDRs
- dMode(SLSL, OUT);
- dMode(MOSI, OUT);
- dMode(MISO, IN);
- dMode(SCLK, OUT);
+ DDRB |= _BV(SLSL) | _BV(MOSI) | _BV(SCLK);
+ DDRB &= ~_BV(MISO);
// Konfiguriere DMUX DDRs
- dMode(DMUX1, OUT);
- dMode(DMUX2, OUT);
- dMode(DMUX3, OUT);
-
+ DDRD |= _BV(DMUX1) | _BV(DMUX2) | _BV(DMUX3);
// aktiviere SPI, Master Modus, SPI Modus 0
// F_SPI = F_CPU / 2 (prescaler 2)
@@ -28,23 +23,12 @@ void SPI::init(void) const
setAdr(SPIADR::NONE);
}
-/*void SPI::setFreq(uint32_t freq) const
-{
-
-}*/
-
void SPI::setAdr(uint8_t adr) const
{
- dWrite(DMUX1, 0);
- dWrite(DMUX2, 0);
- dWrite(DMUX3, 0);
-
- if(adr & 0x01)
- dWrite(DMUX1, 1);
- if(adr & 0x02)
- dWrite(DMUX2, 1);
- if(adr & 0x04)
- dWrite(DMUX3, 1);
+ PORTD &= ~(_BV(DMUX1) | _BV(DMUX2) | _BV(DMUX3));
+ PORTD |= (adr & 0x01) ? _BV(DMUX1) : 0;
+ PORTD |= (adr & 0x02) ? _BV(DMUX2) : 0;
+ PORTD |= (adr & 0x04) ? _BV(DMUX3) : 0;
}
uint8_t SPI::pushByte(uint8_t b) const
diff --git a/spi.h b/spi.h
index 60cb6f8..4468c3e 100644
--- a/spi.h
+++ b/spi.h
@@ -2,17 +2,17 @@
#define SPI_H
#include
+#include
#include
-#include "pio.h"
-#define SLSL B4
-#define MOSI B5
-#define MISO B6
-#define SCLK B7
+#define SLSL PB4
+#define MOSI PB5
+#define MISO PB6
+#define SCLK PB7
-#define DMUX1 D2
-#define DMUX2 D3
-#define DMUX3 D4
+#define DMUX1 PD2
+#define DMUX2 PD3
+#define DMUX3 PD4
enum SPIADR {
AA0 = 0,
@@ -29,7 +29,6 @@ class SPI
public:
SPI(void);
void init(void) const;
- //void setFreq(uint32_t) const;
void setAdr(uint8_t) const;
uint8_t pushByte(uint8_t) const;