diff --git a/B15F.aps b/B15F.aps index 1790901..e1c2651 100644 --- a/B15F.aps +++ b/B15F.aps @@ -1 +1 @@ -B15F22-Mar-2019 14:29:5425-Mar-2019 12:57:42241022-Mar-2019 14:29:5444, 19, 0, 730AVR GCCB15F.elfF:\JTAGICE mkIIATmega1284.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000spi.cppmain.cppMakefilemcp23s17.cppspi.hmcp23s17.hdefault\B15F.lssdefault\B15F.mapc++NOatmega128111B15F.elfc++\0-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefaultYESMakefileatmega1284111B15F.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:\spi.cppF:\main.cppF:\MakefileF:\mcp23s17.cpp00000main.cpp100001Makefile100002spi.h100003spi.cpp100004mcp23s17.h100005mcp23s17.cpp1 +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++NOatmega128111B15F.elfc++\0-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enumsdefaultYESMakefileatmega1284111B15F.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 diff --git a/B15F.elf b/B15F.elf index 2832be0..a45fc7b 100644 Binary files a/B15F.elf and b/B15F.elf differ diff --git a/B15F.hex b/B15F.hex index 94f989d..3d8537e 100644 --- a/B15F.hex +++ b/B15F.hex @@ -6,62 +6,93 @@ :100050000C9464000C9464000C9464000C94640090 :100060000C9464000C9464000C9464000C94640080 :100070000C9464000C9464000C9464000C94640070 -:100080000C9464000C9464000C946400E801112446 +:100080000C9464000C9464000C946400D10211245C :100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6 -:1000A00001C01D92AB30B207E1F710E0C7E4D0E029 -:1000B00004C02197FE010E940102C634D107C9F78E -:1000C0000E94BE010C940A020C9400001F920F9231 +:1000A00001C01D92A131B207E1F710E0C7E4D0E032 +:1000B00004C02197FE010E94F802C634D107C9F797 +:1000C0000E94CC020C9401030C9400001F920F922A :1000D0000FB60F921124289A2FEF84E39CE0215051 :1000E00080409040E1F700C0000028982FEF84E3A3 :1000F0009CE0215080409040E1F700C00000EBCF31 -:100100000895249A259A2698279A529A539A549A8F -:1001100080E58CBD81E08DBD5A985B985C985A9AB9 -:100120005B9A5C9A08955A985B985C9860FD5A9A1D -:1001300061FD5B9A62FD5C9A08956EBD0DB407FE89 -:10014000FDCF8EB50895FC017183608342830895CD -:100150001F93CF93DF93EC01162F6A8188819981D9 -:100160000E94930060E4888199810E949D0060E074 -:10017000888199810E949D00612F888199810E94C8 -:100180009D0067E088819981DF91CF911F910C9448 -:1001900093001F93CF93DF93EC01162F6A81888120 -:1001A00099810E94930060E4888199810E949D005A -:1001B00061E0888199810E949D00612F88819981E9 -:1001C0000E949D0067E088819981DF91CF911F9106 -:1001D0000C9493001F93CF93DF93EC01162F6A8149 -:1001E000888199810E94930060E4888199810E94AE -:1001F0009D0062E1888199810E949D00612F888124 -:1002000099810E949D0067E088819981DF91CF915B -:100210001F910C9493001F93CF93DF93EC01162F43 -:100220006A81888199810E94930060E48881998124 -:100230000E949D0063E1888199810E949D00612F49 -:10024000888199810E949D0067E088819981DF9172 -:10025000CF911F910C9493001F93CF93DF93EC01E8 -:100260006A81888199810E94930061E488819981E3 -:100270000E949D0062E1888199810E949D0060E05A -:10028000888199810E949D00182F67E0888199815B -:100290000E949300812FDF91CF911F9108951F93AA -:1002A000CF93DF93EC016A81888199810E9493004A -:1002B00061E4888199810E949D0063E18881998130 -:1002C0000E949D0060E0888199810E949D00182F06 -:1002D00067E0888199810E949300812FDF91CF91FF -:1002E0001F910895FC01428308950F931F93CF93AC -:1002F000DF93EC018B016A81888199810E949300D0 -:10030000B8010024660F771F001C660F771F001CC2 -:10031000672F702D888199810E949D00602F660F44 -:10032000660F888199810E949D0067E0888199818C -:10033000DF91CF911F910F910C94930010927C004C -:1003400087E880937A00089580917C00807E682BF6 -:1003500060937C0080917A00806480937A0083EAC5 -:1003600091E00197F1F700C0000080917A0086FDCE -:10037000FCCF8091780090917900089581E6809378 -:100380006000209A2898A89578948AE091E00E94CD -:10039000810060E087E091E00E94A8006FEF87E0B5 -:1003A00091E00E94C9006FEF84E091E00E94C900D3 -:1003B00080E091E00E949E0166E080E091E00E9472 -:1003C000A401BC0181E091E00E947501A895F4CFE1 -:1003D0008AE091E00E94800042E06AE071E087E0FC -:1003E00091E00E94A30045E06AE071E084E091E0C2 -:1003F0000E94A30040E06AE071E081E091E00C948B -:100400007201EE0FFF1F0024001C0BBE0790F69137 -:08041000E02D0994F894FFCFE0 +: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 :00000001FF diff --git a/Makefile b/Makefile index 3389530..e8ace70 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 +OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o vars.o COMPILE = $(COMPILER_PATH) $(CFLAGS) diff --git a/b15f.aws b/b15f.aws index d904edc..a961817 100644 --- a/b15f.aws +++ b/b15f.aws @@ -1 +1 @@ - + diff --git a/main.cpp b/main.cpp index 3a60a8a..21ebe35 100644 --- a/main.cpp +++ b/main.cpp @@ -2,19 +2,12 @@ #include #include #include -#include "mcp23s17.h" -#include "tlc5615.h" -#include "adu.h" +#include "vars.h" +#include "selftest.h" + #define LED B0 - -SPI spi; -MCP23S17 beba0(spi, SPIADR::BEBA0); -MCP23S17 sw(spi, SPIADR::SWITCH); -TLC5615 dac0(spi, SPIADR::AA0); -ADU adu; - ISR(WDT_vect) { while(1) @@ -27,26 +20,32 @@ ISR(WDT_vect) WDTCSR |= _BV(WDIE); } -int main() +void initAll() { - WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0); - dMode(LED, OUT); - dWrite(LED, LOW); - wdt_reset(); - - sei(); - spi.init(); + beba0.setDirA(0x00); // alle Ausgang beba0.setDirB(0xFF); // alle Eingang + beba1.setDirA(0x00); // alle Ausgang + beba1.setDirB(0xFF); // alle Eingang sw.setDirB(0xFF); // alle Eingang adu.init(); +} + +int main() +{ + /*WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0); + dMode(LED, OUT); + dWrite(LED, LOW); + wdt_reset(); + sei();*/ + + initAll(); while(1) { - dac0.setValue(adu.getValue(6)); - wdt_reset(); + testAll(); } return 0; diff --git a/selftest.cpp b/selftest.cpp new file mode 100644 index 0000000..f8b532f --- /dev/null +++ b/selftest.cpp @@ -0,0 +1,49 @@ +#include "selftest.h" + +void testAll(void) +{ + testBEBA0(); + testBEBA1(); + testDAC0(); + testDAC1(); +} + +void testBEBA0(void) +{ + for(uint8_t i = 0; i < 9; i++) + { + beba0.writePortA(_BV(i)); + + if(i < 8) + _delay_ms(200); + } +} + +void testBEBA1(void) +{ + for(uint8_t i = 0; i < 9; i++) + { + beba1.writePortA(_BV(i)); + + if(i < 8) + _delay_ms(200); + } +} + +void testDAC0(void) +{ + for(uint16_t i = 0; i < 1024; i++) + { + dac0.setValue(i); + _delay_ms(1); + } +} + +void testDAC1(void) +{ + for(uint16_t i = 0; i < 1024; i++) + { + dac1.setValue(i); + _delay_ms(1); + } +} diff --git a/selftest.h b/selftest.h new file mode 100644 index 0000000..0957a55 --- /dev/null +++ b/selftest.h @@ -0,0 +1,12 @@ +#ifndef SELFTEST_H +#define SELFTEST_H + +#include "vars.h" + +void testAll(void); +void testBEBA0(void); +void testBEBA1(void); +void testDAC0(void); +void testDAC1(void); + +#endif // SELFTEST_H diff --git a/vars.cpp b/vars.cpp new file mode 100644 index 0000000..414a876 --- /dev/null +++ b/vars.cpp @@ -0,0 +1,9 @@ +#include "vars.h" + +SPI spi; +MCP23S17 beba0(spi, SPIADR::BEBA0); +MCP23S17 beba1(spi, SPIADR::BEBA1); +MCP23S17 sw(spi, SPIADR::SWITCH); +TLC5615 dac0(spi, SPIADR::AA0); +TLC5615 dac1(spi, SPIADR::AA1); +ADU adu; diff --git a/vars.h b/vars.h new file mode 100644 index 0000000..6654e2a --- /dev/null +++ b/vars.h @@ -0,0 +1,16 @@ +#ifndef VARS_H +#define VARS_H + +#include "mcp23s17.h" +#include "tlc5615.h" +#include "adu.h" + +extern SPI spi; +extern MCP23S17 beba0; +extern MCP23S17 beba1; +extern MCP23S17 sw; +extern TLC5615 dac0; +extern TLC5615 dac1; +extern ADU adu; + +#endif // VARS_H