From fae65afe8b00624e1a653c5548c2a9bbbdb75ed1 Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Tue, 26 Mar 2019 11:35:41 +0100 Subject: [PATCH] echo befehl funktioniert --- B15F.elf | Bin 11128 -> 11552 bytes B15F.hex | 177 +++++++++++++++++++++++++----------------------- Makefile | 4 +- global_vars.cpp | 1 + global_vars.h | 2 + main.cpp | 11 ++- usart.cpp | 26 +++++++ usart.h | 20 ++++++ 8 files changed, 154 insertions(+), 87 deletions(-) create mode 100644 usart.cpp create mode 100644 usart.h diff --git a/B15F.elf b/B15F.elf index d842f33869e052ca7a9fdb7bd69c78524f6b4b2d..3ecadd1ff5722250f4fe894a71ba06177f5480b9 100644 GIT binary patch delta 3069 zcmbW3du-EH6vxl~wOa=(-9sJ~(y)!Ox$!8|DbJWOGh)!7OvMCASQ#Bdk-;bv63nk9 z6Q&Zh+zyl=fk|R~3*!$7I5vV64W=05gK3}(3lak^8-^K!)bIH{+8>o@;%~XV=X1_I z_nvd^Bl}~?fu*k(DDElYqN18jnMB+&h)6*bXif(UK}`=y`!GbaS?xTAzx?pad*+R_ z zzbnqj9GhGw%GFR`IPQuZrMmdeI7`FSG@wgvQ5SzTsnaF5Xc}nKbZ!yS`fDPH-Wlmt zVv;3SPDbw$Pg)SL7<< zFeRVYlvZiFi{V&!BK)H=tlV{*kMDo@tmrdm|JQX?Yi#xZ?L!k~OkR{%#j_!O{wVp9 zxuw=jW$E_n*|{Q73VHP$v)Yrh+j3~9EHsl*-Yk{HT!>_T^CO7 z)tG)?I;lGD>sxQ!nIU>eBR#Yss?kUf*)v2{8tVD>i1`|Erp`!D=kuBGj2Sf=*L)Ff zw1U5bQrz97zOUVI{l`v&iB5X;6drK z6D@=;ADjcW*j1WvyMju(DtH6}dSI9*`Pp8@I!3Xf#jW+z7z_nmbn*&h6 zJ9Kx-B~>8_1;3E|N?HI*k_w%D;JuhE zmz$!{Ixta)f1tC|iyCXFRcL#fzqHsnz(Z;Fk4?tz$=h$J}-y>_yGMT zQhRs{Y&`=`_*zTu=D93eRt&z9K{OR=u3#CME5hq*0aQXU1lhc&Rp3S}SPUIIJPtO$ z0-TX&z}AvBr15$lZ}{*v-IZqF56%)nHMwU8(*}H)#>dzJ8JGb^!M&)06YFq*-+|3D z#E140_(vpQ+K1EZHq4c%((>mD3?{On*a3$}jR`&AdEjz`XMj^B6*QCW2w;I>zlpJ_ zTVkihu%Csk#IP>|TPt<~98md4<14@(H$rg(C*PcKD_9Y!Q@tJBi)P;IeUP&)_O~!k z9vE?Gx1a-dM9e=pq=Sj$;DE6npQ#@3h-5_4Q#4NP$LNt5&IKKS`6$AvHaHuu$NeB$VU^uywsHnKb>j1==uRJa)~z#k;{Sk*dc&87}%{#KsN2 z=D_s&b?Z8-Ce@3arHk%=>WTTaPgbs8yE;(QA`cc%%hNTpUua$(@K5!g>La!`765JC$=qh5zX6n& B()s`Z delta 2783 zcmbW3e`p*<6vt;a_d~<=au-dFZLhhc;WW9(QHZ~aVtS=1Xth$IV2zNArjxY=RaoZ4_;dv?O8_u79K(2wF5TO{k^_?fHGXJ9pDXggRt0 z@AGEny*F>(Y|_8=;+CGM_DoHts%rgtFJsj4!!&e`-sK~q!_q^tnx%rI&eIxd;moc* zcb(9})fLCa=EkQdkDoqXY4)3+ntUX(`~B62{Zoq}^W^ln=^3fqbD0N?S?xsq5B|}` zpz)O!F#gg+6R%BnOl8cVv6nTQZ<-`cvZv>4DF@vfd7UlgFuT*z(UR1LGLXQk}2|l zae&h;j+o=-F`h20&`FjnnoTN{pmByD<&G7eQgqHfZb$SgeR!>Q;jTW67NB+J%YWE;=228-;#2KZWw zD5QWfF!ZPI<1($=EBaO}(?7wB`-7gV)iicQiWog?KKCug5A!;WWg&l{@C@Yd9FF46 zUxeK4VeDRvrC=|fxH=!cl6AHMiZ$4<+1XHgAw>ML%fL=BF5haD@;-1qq9!$EXuoUyXD z;7%AUb_^_l)qpR77ceIsT#I1nG>67n}F zRB7-IFz1CLz8hSu@O#)70>iIWD>ZNH55_O&qf4;4OqFaQ7m 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