diff --git a/B15F.elf b/B15F.elf index d3db3be..3007bd3 100644 Binary files a/B15F.elf and b/B15F.elf differ diff --git a/B15F.hex b/B15F.hex index 4092d27..d80459c 100644 --- a/B15F.hex +++ b/B15F.hex @@ -1,50 +1,63 @@ :100000000C9447000C9464000C9464000C946400FD :100010000C9464000C9464000C9464000C946400D0 -:100020000C9464000C9464000C9464000C946400C0 +:100020000C9466000C9464000C9464000C946400BE :100030000C9464000C9464000C9464000C946400B0 :100040000C9464000C9464000C9464000C946400A0 :100050000C9464000C9464000C9464000C94640090 :100060000C9464000C9464000C9464000C94640080 :100070000C9464000C9464000C9464000C94640070 -:100080000C9464000C9464000C94640070011124BE +:100080000C9464000C9464000C946400C601112468 :100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6 -:1000A00001C01D92A430B207E1F710E0C7E4D0E030 -:1000B00004C02197FE010E947B01C634D107C9F715 -:1000C0000E9458010C9484010C9400000895249A15 -:1000D000259A2698279A529A539A549A80E58CBD6D -:1000E00081E08DBD5A985B985C985A9A5B9A5C9AAD -:1000F00008955A985B985C9860FD5A9A61FD5B9AE6 -:1001000062FD5C9A08956EBD0DB407FEFDCF8EB5FD -:100110000895FC0171836083428308951F93CF93F8 -:10012000DF93EC01162F6A81888199810E94790002 -:1001300060E4888199810E94830060E088819981D0 -:100140000E948300612F888199810E94830067E06B -:1001500088819981DF91CF911F910C9479001F9331 -:10016000CF93DF93EC01162F6A81888199810E94D9 -:10017000790060E4888199810E94830061E0888130 -:1001800099810E948300612F888199810E94830058 -:1001900067E088819981DF91CF911F910C9479005C -:1001A0001F93CF93DF93EC01162F6A818881998189 -:1001B0000E94790060E4888199810E94830062E155 -:1001C000888199810E948300612F888199810E9492 -:1001D000830067E088819981DF91CF911F910C9412 -:1001E00079001F93CF93DF93EC01162F6A818881EA -:1001F00099810E94790060E4888199810E9483003E -:1002000063E1888199810E948300612F88819981AF -:100210000E94830067E088819981DF91CF911F91CF -:100220000C9479001F93CF93DF93EC016A8188814E -:1002300099810E94790061E4888199810E948300FC -:1002400062E1888199810E94830060E088819981C0 -:100250000E948300182F67E0888199810E947900AD -:10026000812FDF91CF911F9108951F93CF93DF933B -:10027000EC016A81888199810E94790061E488811A -:1002800099810E94830063E1888199810E948300A3 -:1002900060E0888199810E948300182F67E088813F -:1002A00099810E947900812FDF91CF911F9108954C -:1002B00083E091E00E94670060E080E091E00E94AE -:1002C0008E006FEF80E091E00E94AF0080E091E04F -:1002D0000E943501682F80E091E00E94D000F6CFA7 -:1002E00083E091E00E94660042E063E071E080E01C -:1002F00091E00C948900EE0FFF1F0024001C0BBE40 -:0C0300000790F691E02D0994F894FFCFCF +:1000A00001C01D92AA30B207E1F710E0C7E4D0E02A +:1000B00004C02197FE010E94DF01C634D107C9F7B1 +:1000C0000E949E010C94E8010C9400001F920F9274 +: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 +:10033000DF91CF911F910F910C949300209A2898F0 +:10034000A895789489E091E00E94810060E086E0C1 +:1003500091E00E94A8006FEF86E091E00E94C90042 +:100360006FEF83E091E00E94C900C0E0D0E0BE01E1 +:1003700080E091E00E94750182E48A95F1F700C067 +:100380002196C11584E0D80781F3F1CF89E091E08F +:100390000E94800042E069E071E086E091E00E9406 +:1003A000A30045E069E071E083E091E00E94A300D2 +:1003B00040E069E071E080E091E00C947201EE0FA2 +:1003C000FF1F0024001C0BBE0790F691E02D09943E +:0403D000F894FFCFCF :00000001FF diff --git a/Makefile b/Makefile index a146f0b..7dd3114 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 +OBJECTS = main.o spi.o mcp23s17.o tlc5615.o COMPILE = $(COMPILER_PATH) $(CFLAGS) diff --git a/TLC5615.cpp b/TLC5615.cpp new file mode 100644 index 0000000..2cf0d2f --- /dev/null +++ b/TLC5615.cpp @@ -0,0 +1,13 @@ +#include "TLC5615.h" + +TLC5615::TLC5615(SPI& api, uint8_t adr) : spi(spi), adr(adr) +{ +} + +void TLC5615::setValue(uint16_t val) const +{ + spi.setAdr(adr); + spi.pushByte(val >> 6); + spi.pushByte(val << 2); + spi.setAdr(SPIADR::NONE); +} diff --git a/TLC5615.h b/TLC5615.h new file mode 100644 index 0000000..6709308 --- /dev/null +++ b/TLC5615.h @@ -0,0 +1,18 @@ +#ifndef TLC5615_H +#define TLC5615_H + +#include "spi.h" + +class TLC5615 +{ +public: + TLC5615(SPI&, uint8_t); + void setValue(uint16_t) const; + + +private: + SPI& spi; + const uint8_t adr; +}; + +#endif // TLC5615_H diff --git a/main.cpp b/main.cpp index b074435..5e1e204 100644 --- a/main.cpp +++ b/main.cpp @@ -1,19 +1,51 @@ #include #include #include +#include #include "mcp23s17.h" +#include "tlc5615.h" + +#define LED B0 SPI spi; MCP23S17 beba0(spi, SPIADR::BEBA0); +MCP23S17 sw(spi, SPIADR::SWITCH); +TLC5615 dac0(spi, SPIADR::AA0); + +ISR(WDT_vect) +{ + while(1) + { + dWrite(LED, HIGH); + _delay_ms(200); + dWrite(LED, LOW); + _delay_ms(200); + } + WDTCSR |= _BV(WDIE); +} + +int main() +{ + //WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0); + dMode(LED, OUT); + dWrite(LED, LOW); + wdt_reset(); + + sei(); -int main() { spi.init(); beba0.setDirA(0x00); // alle Ausgang beba0.setDirB(0xFF); // alle Eingang + sw.setDirB(0xFF); // alle Eingang - while(1) { - beba0.writePortA(beba0.readPortB()); + while(1) + { + for(uint16_t i = 0; i < 1024; i++) + { + dac0.setValue(i); + _delay_us(10); + } } return 0; diff --git a/main.hex b/main.hex deleted file mode 100644 index d91cc8e..0000000 --- a/main.hex +++ /dev/null @@ -1,20 +0,0 @@ -:100000000C9446000C9450000C9450000C9450003A -:100010000C9450000C9450000C9450000C94500020 -:100020000C9450000C9450000C9450000C94500010 -:100030000C9450000C9450000C9450000C94500000 -:100040000C9450000C9450000C9450000C945000F0 -:100050000C9450000C9450000C9450000C945000E0 -:100060000C9450000C9450000C9450000C945000D0 -:100070000C9450000C9450000C9450000C945000C0 -:100080000C9450000C9450000C94500011241FBE8E -:10009000CFEFD0E4DEBFCDBF0E9486000C9490006D -:1000A0000C940000CF93DF93CDB7DEB784E290E0ED -:1000B00024E230E0F9012081206BFC0120838CE4F4 -:1000C00090E021E5FC0120830000DF91CF910895AD -:1000D000CF93DF931F92CDB7DEB789838EE490E094 -:1000E0002981FC0120838DE490E0FC0180818095D2 -:1000F000881F8827881F882309F0F5CF8EE490E0B9 -:10010000FC0180810F90DF91CF910895CF93DF9311 -:10011000CDB7DEB70E94520080E00E946800FCCF9D -:04012000F894FFCF81 -:00000001FF diff --git a/spi.h b/spi.h index 539867b..8999756 100644 --- a/spi.h +++ b/spi.h @@ -15,8 +15,11 @@ #define DMUX3 D4 enum SPIADR { + AA0 = 0, + AA1 = 1, BEBA0 = 2, BEBA1 = 3, + SWITCH = 5, NONE = 7, };