diff --git a/B15F.elf b/B15F.elf index d842f33..3ecadd1 100644 Binary files a/B15F.elf and b/B15F.elf differ diff --git a/B15F.hex b/B15F.hex index 3c9bc2c..54d07c1 100644 --- a/B15F.hex +++ b/B15F.hex @@ -6,91 +6,100 @@ :100050000C9464000C9464000C9464000C94640090 :100060000C9464000C9464000C9464000C94640080 :100070000C9464000C9464000C9464000C94640070 -:100080000C9464000C9464000C946400C602112467 +:100080000C9464000C9464000C9464000A03112422 :100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6 -:1000A00001C01D92A131B207E1F710E0C7E4D0E032 -:1000B00004C02197FE010E94ED02C634D107C9F7A2 -:1000C0000E94C1020C94F6020C9400001F920F9241 +:1000A00001C01D92A231B207E1F710E0C7E4D0E031 +:1000B00004C02197FE010E943103C634D107C9F75D +:1000C0000E94F4020C943A030C9400001F920F92C9 :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 +:1000F000F3CF81E191E00E94B40060E08EE091E0F6 +:100100000E94F7006FEF8EE091E00E94180160E01E +:100110008BE091E00E94F7006FEF8BE091E00E948E +:1001200018016FEF88E091E00E94180181E091E0F2 +:100130000E94ED0180E091E00C94DA02CF9380E020 +:1001400091E00E94ED0280E091E00E94ED02C82F54 +:100150006FEF80E091E00E94E6026C2F80E091E07A +:10016000CF910C94E602089584B1806B84B92698EF +:100170008AB18C618AB980E58CBD81E08DBD8BB17F +:10018000837E8BB95A9A5B9A5C9A08958BB1837E71 +:100190008BB98BB160FD10C090E0892B8BB98BB10E +:1001A00061FD10C090E0892B8BB98BB162FD10C04E +:1001B00090E0892B8BB9089594E0892B8BB98BB192 +:1001C00061FFF0CF98E0892B8BB98BB162FFF0CF44 +:1001D00090E1892B8BB908956EBD0DB407FEFDCF5C +:1001E0008EB50895FC0171836083428308951F9347 +:1001F000CF93DF93EC01162F6A81888199810E9449 +:10020000C60060E4888199810E94EC0060E08881EA +:1002100099810E94EC00612F888199810E94EC00F5 +:1002200067E088819981DF91CF911F910C94C6007E +:100230001F93CF93DF93EC01162F6A8188819981F8 +:100240000E94C60060E4888199810E94EC0061E010 +:10025000888199810E94EC00612F888199810E9498 +:10026000EC0067E088819981DF91CF911F910C9418 +:10027000C6001F93CF93DF93EC01162F6A8188810C +:1002800099810E94C60060E4888199810E94EC00F7 +:1002900062E1888199810E94EC00612F88819981B7 +:1002A0000E94EC0067E088819981DF91CF911F91D6 +:1002B0000C94C6001F93CF93DF93EC01162F6A8135 +:1002C000888199810E94C60060E4888199810E949A +:1002D000EC0063E1888199810E94EC00612F8881A4 +:1002E00099810E94EC0067E088819981DF91CF912C +:1002F0001F910C94C6001F93CF93DF93EC016A818A +:10030000888199810E94C60061E4888199810E9458 +:10031000EC0062E1888199810E94EC0060E08881B4 +:1003200099810E94EC00182F67E0888199810E94D2 +:10033000C600812FDF91CF911F9108951F93CF9316 +:10034000DF93EC016A81888199810E94C60061E493 +:10035000888199810E94EC0063E1888199810E94E3 +:10036000EC0060E0888199810E94EC00182F67E022 +:10037000888199810E94C600812FDF91CF911F91C2 +:100380000895FC01428308950F931F93CF93DF9349 +:10039000EC018B016A81888199810E94C600B801B5 +:1003A0000024660F771F001C660F771F001C672F45 +:1003B000702D888199810E94EC00602F660F660F76 +:1003C000888199810E94EC0067E088819981DF91A2 +:1003D000CF911F910F910C94C60010927C0087E87A +:1003E00080937A00089580917C00807E682B6093D2 +:1003F0007C0080917A00806480937A0083EA91E0A7 +:100400000197F1F700C0000080917A0086FDFCCFD3 +:10041000809178009091790008950F931F93CF9366 +:10042000DF9361E08EE091E00E943901C1E0D0E00D +:1004300001E010E02FEF84E39CE0215080409040E9 +:10044000E1F700C00000B8010C2E01C0660F0A944D +:10045000EAF78EE091E00E9439012196C930D1057A +:1004600049F7DF91CF911F910F9108950F931F933B +:10047000CF93DF9361E08BE091E00E943901C1E00E +:10048000D0E001E010E02FEF84E39CE021508040B9 +:100490009040E1F700C00000B8010C2E01C0660FCB +:1004A0000A94EAF78BE091E00E9439012196C93065 +:1004B000D10549F7DF91CF911F910F910895CF9307 +:1004C000DF93C0E0D0E0BE0185E091E00E94C4016E +:1004D00087E893E10197F1F700C000002196C1156C +:1004E00094E0D90781F72FE78AE196E02150804018 +:1004F0009040E1F700C0000060E070E085E091E02E +:10050000DF91CF910C94C401CF93DF93C0E0D0E092 +:10051000BE0182E091E00E94C40187E893E1019767 +:10052000F1F700C000002196C11594E0D90781F7CA +:100530002FE78AE196E0215080409040E1F700C02B +:10054000000060E070E082E091E0DF91CF910C94D8 +:10055000C40160E081E091E00E94F301BC0185E00C +:1005600091E00E94C40161E081E091E00E94F3010A +:10057000BC0182E091E00E94C4018EE091E00E9403 +:100580009E01682F8EE091E00E94390188E091E0A1 +:100590000E949E01682F8BE091E00E943901D9CF23 +:1005A0000E940D020E9436020E945F020E94840295 +:1005B0000E94A90288E18093C10086E08093C20076 +:1005C0001092C5008FE18093C40008956093C60027 +:1005D0008091C00086FFFCCF08958091C00087FF06 +:1005E000FCCF8091C60008950E94790080E091E0E0 +:1005F0000E94ED0280E091E00E94ED02C82F6FEFB3 +:1006000080E091E00E94E6026C2F80E091E00E9481 +:10061000E602ECCF81E191E00E94B30042E061E1AB +:1006200071E08EE091E00E94F20043E061E171E050 +:100630008BE091E00E94F20045E061E171E088E02A +:1006400091E00E94F20040E061E171E085E091E01C +:100650000E94C10141E061E171E082E091E00C940F +:10066000C101EE0FFF1F0024001C0BBE0790F69186 +:08067000E02D0994F894FFCF7E :00000001FF diff --git a/Makefile b/Makefile index c78a78d..bc20456 100644 --- a/Makefile +++ b/Makefile @@ -10,9 +10,9 @@ OBJCOPY_PATH = C:\avr8-gnu-toolchain-win32_x86\bin\avr-objcopy.exe OUTPUT = B15F.elf HEX = B15F.hex -CFLAGS = -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 -DPIO_DISABLE_I2C +CFLAGS = -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 LDFLAGS = -OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o +OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o usart.o COMPILE = $(COMPILER_PATH) $(CFLAGS) diff --git a/global_vars.cpp b/global_vars.cpp index 154f77a..ac6f544 100644 --- a/global_vars.cpp +++ b/global_vars.cpp @@ -7,3 +7,4 @@ MCP23S17 sw(spi, SPIADR::SWITCH); TLC5615 dac0(spi, SPIADR::AA0); TLC5615 dac1(spi, SPIADR::AA1); ADU adu; +USART usart; diff --git a/global_vars.h b/global_vars.h index aff0a83..c7ecd0c 100644 --- a/global_vars.h +++ b/global_vars.h @@ -4,6 +4,7 @@ #include "mcp23s17.h" #include "tlc5615.h" #include "adu.h" +#include "usart.h" extern SPI spi; extern MCP23S17 beba0; @@ -12,5 +13,6 @@ extern MCP23S17 sw; extern TLC5615 dac0; extern TLC5615 dac1; extern ADU adu; +extern USART usart; #endif // GLOBAL_VARS_H diff --git a/main.cpp b/main.cpp index 56f2c20..1650305 100644 --- a/main.cpp +++ b/main.cpp @@ -29,6 +29,15 @@ void initAll() sw.setDirB(0xFF); // alle Eingang adu.init(); + usart.init(); +} + +void handleRequest() +{ + const uint8_t req = usart.readByte(); + uint8_t dummy = usart.readByte(); + usart.writeByte(USART::MSG_OK); + usart.writeByte(dummy); } int main() @@ -43,7 +52,7 @@ int main() while(1) { - testAll(); + handleRequest(); } return 0; diff --git a/usart.cpp b/usart.cpp new file mode 100644 index 0000000..b50c905 --- /dev/null +++ b/usart.cpp @@ -0,0 +1,26 @@ +#include "usart.h" + +void USART::init() +{ + UCSR0B = _BV(RXEN0) | _BV(TXEN0); + + // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit + UCSR0C = _BV(UCSZ00) |_BV(UCSZ01);// (1<> 8) & 0xFF; + UBRR0L = ((F_CPU / (16UL * BAUDRATE))-1) & 0xFF; + +} + +void USART::writeByte(uint8_t b) +{ + UDR0 = b; + while(!(UCSR0A & _BV(TXC0))); +} + +uint8_t USART::readByte() +{ + while (!(UCSR0A & (1< +#include + +constexpr uint16_t BAUDRATE = 38400UL; //9600UL//9600 + +class USART +{ +public: + void init(void); + void writeByte(uint8_t); + uint8_t readByte(void); + + constexpr static uint8_t MSG_OK = 0xFF; + constexpr static uint8_t MSG_FAIL = 0xFE; +}; + +#endif // USART_H