From ebeba35782f56ff1c87ebb80631cfce02ada06c8 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Sun, 10 Apr 2022 20:39:54 +0200 Subject: [PATCH] Timer implemented, About and Help Frames added --- bin/Control/MyControlModel.class | Bin 8046 -> 8114 bytes bin/Control/MyControlView.class | Bin 6802 -> 7129 bytes bin/Model/Microcontroller/PIC.class | Bin 12720 -> 13449 bytes bin/Model/Microcontroller/RUNTIMER.class | Bin 293 -> 1800 bytes bin/Model/Microcontroller/WATCHDOG.class | Bin 1140 -> 0 bytes bin/Model/MyModel.class | Bin 4123 -> 3860 bytes bin/Runtime/Main.class | Bin 1935 -> 1852 bytes bin/View/GUIAbout.class | Bin 0 -> 1752 bytes bin/View/GUIHelp.class | Bin 0 -> 1573 bytes bin/View/GUITime.class | Bin 4061 -> 4308 bytes ...udium Skript Verbesserungsvorschläge.docx# | 1 - ...tudium Skript Verbesserungsvorschläge.docx | Bin 19485 -> 19486 bytes src/Control/MyControlModel.java | 5 + src/Control/MyControlView.java | 5 + src/Model/Microcontroller/PIC.java | 82 +++++++++++++- src/Model/Microcontroller/RUNTIMER.java | 99 ++++++++++++++++- src/Model/Microcontroller/WATCHDOG.java | 105 ------------------ src/Model/MyModel.java | 57 +--------- src/Runtime/Main.java | 4 +- src/View/GUIAbout.java | 53 +++++++++ src/View/GUIHelp.java | 54 +++++++++ src/View/GUITime.java | 27 +++-- 22 files changed, 318 insertions(+), 174 deletions(-) delete mode 100644 bin/Model/Microcontroller/WATCHDOG.class create mode 100644 bin/View/GUIAbout.class create mode 100644 bin/View/GUIHelp.class delete mode 100644 documentation/WORD/.~lock.Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx# delete mode 100755 src/Model/Microcontroller/WATCHDOG.java create mode 100644 src/View/GUIAbout.java create mode 100644 src/View/GUIHelp.java diff --git a/bin/Control/MyControlModel.class b/bin/Control/MyControlModel.class index c540a8a907ce15525ffef59783e418b16809cbe3..644cc8599d8f5ab4b97e9f15e9356a6d7e198d85 100644 GIT binary patch delta 1120 zcmYL{3rv<(9L9eS@Wn+eKSAz%2)V=$Oh{2QFlhuK2$6y!g33k03m}rW3fe>~BNo10 zkf>RkeH$(p;Q(XZFQ%)FS~Y9SR-0|*vej0uTF@V=^}gHtJpXgfd!FY!|8sTaE4PJQ zn0WQ|$w{)cXD}qwy)00hMQC|r{k}!{Wd(QE?`#QCHQqqgh?)Nl=hQUc+ZLj&cxNbI z^`YA4tadNacBjJ~rN*IN_bFv~31A+Rh);1;&Am^PNM zpA2VzSi38eP?kG?hUL1ljAc8y;km9=#&Vp;jO7};!}&ZsQw7cqb3Vx~CWsQQ=PqVb zN+N4bX`Ss>#_g0_wcg$h)KEbq8)>4F18ky`DjsLE~q;^2D1eEKV6#$if%-DQe^I?ag_(-vgD}j%d#HYH6&$NJx%HRtv=SyYrm2$bHe7;c$-|B8ItDNst z!S|}-2W{a;)p1n~{Hz`Pq9%UT9)8nae%F2cp?3b#AtrQ0Qn&onBbScrI`u0^FQ_0y zCl#twa_cnbG^#MWQ&_75rkZH(4_akRv*bpcP_*3;4}NxrYiiIvmddy-C?&?}j=$9} z$mLv!FH)To=}DN;Sd?O&*pX@>Iys&s?R4rqb1QdE)fVdHmH$J{!)+oF1S*m^OC-_I zYpJ9wjy%OvXt+*usZ=7hx{>XgN2?`uK=bKVGLB)tQk}0ok&#WzGNXC8)T|a`-NwwQ PGc#dh;BK?(r`Ep#5$^`G delta 1071 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 P=u&(W@Dbfy$C>{Dp2#u& literal 12720 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%0DA3 zkCT$`@5mkfbl8d4i>nS-}y zxZ^lL3aAKooTgW7m7GcO)}nkbkP3>e8F*G3Q*z$0X0T5)cm$G8V5&h1j~+=1XBvJx zFp6*cf@k3zKCLQ?9RpgJmK(^z=fePn+zNm(4AK~ZRAVIFZZwPX4CEM@)MPy77?UvH z$i`wL2L;A-R2#E!nK2t-V-A{)dFU|aYakapYI#8J@PORm0lCcsGU5T*M;8kNK$ghHbVWkwA# zsO_cqYESRg_#*XC1X}It?PmzRM-wQGG-VV$%S zrOtB)(mC^PWS#DLQ`As5b{@jG(=U2SqZ{|CtIoZrCyqQuKNw9!AxsoDAj{Z9Ry1R_ z(Sij=6!}IRrA9ldj4fDUY$YPsp~cv)QE`$$)I%lep%V2_S?{4z=c3|8#(cvVrD~!> z9vHm|Fc27>PRu)J1lUd0_fYjulK^{3fLlm_TSSa?Ghzo zx+CW;OrA~_WhtqK#2IJPF)EuGzoiau(PF=6Ab*=W`~kC!Kcm=qN6YV2`6ZtGCE6hk z9f;_2vnc1IOu@P!!3{)R#j*uK%HkBDA5*yhWu|!-$;2d;K`+ZViOHsk3r$N4=S0p0 zu5b!I&OezVJm!h?kSo%14N*6~;kHkzmQp_Bw%>N!@9OJk3}sL)_|3scFoz&u29RbB zMV2`X*=8zcnj^8$OhciWj#@LLm*mTPNzO(1yR4)Qe6Po&jj=SlT1j*&nbf~-=+bU+ zrnyU%{{s|uLKXFS!b$%u=}xP^IChrxmrnm?HdUO06mvR8o4FWo&cFrc985FkVXnD= z##x9Z<|3-Q6g6fsR+}Zb(kw-bS%w{^v-ENTey7K(PA~m;x&c4H^@K`(77OZ4I{7(O z{~*ZsaRE!F5xP`*!2@d)!BX{puhoqM*7ep&LNQ2}`G+uE;n)-N>Gq$`yyLt@#8R$N zV6Gxst1;Ycz({iqGR#JdHN(g?BbaS&!XmR7rDh8%%qXhNHq@JOG@0$#Xl_B&+=fo` zT1^-yj_mXh+vy>;(?jek7cu1sNs#YhtT7}@XU6~XU`lmi+TNE_glV94>H#D=i_{Op zQN8cXLy!Z}ZbGz&5Pg~ueTMMdL{i;?pm`gnoBJ@w+>iO@oya#2V5xaGVY-(v-A9=2 zCrl6EI`eQZh_-tWZTBGB?m^Vj3!*{ry~nuiPaHHvRoyRo;r33l&LW2SZm4y$MQ6U| z&KakQ(W=%pk5b3SFv@%!6U-;5+tW1tGg|H}XEIOjd^be|m>5*mXX;?fJ(KqkRC(bg z&zL=&KP^C9Zy5s_Q?L5Yvprv=uHUCUU#2~OM0>tMd;WwvA7d>18RnVC84ur}Eq{d~ z^Gybcw;3evLNo*ykpD9ZQP({}9neGjHwm-Bm1=e*%;!h8fg&SRXY z#h=`H*ELVWKq%IhKv7Rsf5v5m;)aqRbkJ8Y>N}tWmh!8iOmXvDj>7 z;c9CFuC*rPCM&xaczZok?e&~tujdRMeVrl87~}?wA9&92tm_O_Y6+U&nV->r)(LXY z;VieDrqgn;X2WmgVURVC5X?uawFqOZrI=t9QT<}%StZD~mLX)7_41i2PrWL42gT2G z-%~!50P8ti(khaMdgT{^TYjrvfcbD&+Kb07M2F140ph*d|+FGq^C5~HkojI&nJ z@>fvpwU}WwVXn0f^Q{e7W;L^7X~AVy6l<-k5VvBzEZy!w(e7Eg-L-TIjp^*5d6{9N z;di{`WzW!`prKWfIV+fc)~3{<&e{%Xbz-o!6KU2ijJ0mSOl!B6)u|?Dd9u!O&E}SF zV;S9k)MF=ZqzL5|h!FeKU>`%dBC1ihDjI;7XO)&5O5O%x?ZZgx0KM=ab+`+2tb6E* z_oKu*L@It6b=HH}U>)g2$%v<0#Ir-hwS&^q2Qf0kuky_+9`d(PQHA_crA<$HugH1U zb(&*`F1pgA$gm#6BFOgu+)=vsg}^I>ZegW9=7uDc#5@|R!~*_G$r1d zr}$J=!&=WF(R!Zpe2>xXMRNNkEr(OUPjlsPSumQj{n(rRHkXz<`Lc3-l~UAoz0k>brBZ457}KzW&Z#u~Gf%{G0?=Ox z(BBBq-wDt^3DCbj9H5_j>^VSyl$$K*@mqz?S(Yjq9U&n_0+Pibq>5x@iNTo6HN}Nu zm=?(?S9%s*oY(c?WEZDi<;rALuKdEo=|E;`+#QJ4VoH16?{nRGwLB%Nb&s%1Rt$D)A<3@RBW(WV=4WDo}jk1u+)^F%K!?LZpdBm>}{oNfcm) zC`6tpqOC4Mfw&lDq5>775;Y=(I#Gl5Vg)vfRk%i6hEIsq_>^eC0kKBg)!C9g=*5JC zUi>=fRSY+|6+;S7aa2YTJnFcCAM5?*t}sYjPOZXXA0j zpxy04JBo*94zw9OIO_-65xx|?^!=^pSLY)Bh%X~iJb>ZiFh+~7V5)fN!{g7JJ@Lob zL9bTsb691p{0!Q1mspdZp22g^p$53kwvBrcJSJ z>L5xHXYt24z*|fHLOjZN_c-I-Qw%51Fr0iF+2Xs%70+RwcpeMHi!}BRP%3_iO7SvX z_D84}ucAS`Mt}MVHj3A2^kdj6eva+pIChISaI^RoZWq7B1LDnIzIE6mz+pFLN`4FA zoN^B3`IA$lrSlN;E$v&`Jfl+QozAxZNcc}O*!s9bsQ=?$;b4EjKapPcJI~8rrv~M^mFdvSZ8sH$ka!JJqGgW<2-e)r!3@8@egF7fzFyzd;^%M=XlX^RYtwjT$N*I zxf@02r1kzr>-~e7>RpTxCoqx4My|AwFMTMM2`HC|2+3ruU=&|1hhd!@j`eZ`T4fsA zC7n%#F|pq06Gi?-8ZDJ{r@-=X+RhkqMS28DlXitNnuIq3WPL7!u1iM~GYk@*P7 zB}kP87%PjAElV*~UW8e48Rp7zl*%fie<|u^HP*=Gh{-yQpmUDe<{{YTA=u^x#3nZ& zrt&L>6m1`7t7y{uDu811YbinA?#oJCGuGAWiN-%}e^6#i~Pb|Gv61cI%!6)KjnRHGIxm6jCw)mTy>fncc)T{b&mX@20c>Dbl> z9i4GH`k>VZ`{0{19evQz5uEYC@!2>15Bw8+cdXyN2|wx-Gjs1bd-vS$eCIo7^V>f^ z|MKu5F5sGufWV1NwcwPJ8Q1ozcD3Sr)l$jvlG&vzi|Nc%R!5US`-XMXN|vljF*&!k z;n==Fb0J%+_-@$|5R(E%A!EJ0Z29(jp;{CO7qW}#itXjCl0eh)=R_Io9GnNb1lyjyYoF;YwXPuyUha1-PnMi3naB8UkD6NC8{2y_`}L0Ed-23lbVw9UE| z=Sr=-=6H+NT8Xq{vsK$F&Z_T(4h(F zQWK>>#9nvo8@uv^aT5JHo)$QIs0;?4!6`x%9e;H`H?AsMkrxvN24M=sFCZf8P;;8IpBRlM&(Fg_`Bv&TTqQfuoa159YPhuSy+gsjqJTIrDAT9WC|lTIP?xzW!TF zZSFePcb)mVBhcci>Tk;F7HJa8RcoH@OuKTfBD_C?C`*pY za#oe)q|)lV5kZuD8=vMFAE0eBe?q$%+(xH4w2k=p>cSJ;V`$=TaBpUt<;5tD@T9wb z4M*`Lp9mm71cLJO!?6bV7^z8enmMqID?83A3czT>GS&V-1C0c*L3$e31I45}o zA!|Fynt(VZ=|%@n`pBlAEQVOaIaV=F9!RjPu|1?u44v8T*3z5yoC&WEZ`Qhc!v@1VHqFb8t&o^e9XvC iVINTaUPBq`z_{0`jhuuCT1Q&cPuF!hqE~qsz{ff$?|Nk@CG6+oMvXNu6$;`_vv14Rl*3b-NWMFa5Pf6usU}oUtVPIuo zoA@Poaxk-s7Xt$$5CR2&Bs&8GgFcwgz`&}toq=N`P=JYn3rK>b8GxF(fg}%@%?hM> OfjmYAJ|M}&zz+cMN)glm diff --git a/bin/Model/Microcontroller/WATCHDOG.class b/bin/Model/Microcontroller/WATCHDOG.class deleted file mode 100644 index ec31c61319ba3cecb30b2d26a0264c1940c77382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmaJSinmh?te~;W z%OwRV$@9Vw6zJkFxUACdIj$4TDv0MNHV87u-f6_qVc;B$6cltBNI(;>$AFHcc;^kI zns>bh($ExitT?W{)~IjWe#zRdkx2K7SGH;!mhVU$U8+IVA)k?z|Ic`r6nE^P6i!5D z%Lz1pWUTN0NvQc{;hfmBY7I8*V#Vf}!CA}EyI68Iqvn^SIPN#xG$t^q!~9Fu;@jQ8 zt{b?DAq7d-ay?;_=I~PnMlmMdbpw}iMZB8^Mvzm`MuE$(R;}03yy>FX@XPi?M-*xM zv%)Fa9&)UUb1W4xQJ7v#^bIZ54K1~$)%cRz;MvA#lT`|Bzxf62X6g`~X8aJ{;$`H> zehN$bcn*Z+8MerBVZCTaA9~QwbATs8NCGh$WR$}N3`I?*StCtS=4W(fFkJt@AjZNb z8+m*JkZJ)?ga}}kEM+>)yhw&8l+r{2Oinx*B4oo@ix33;QaEo;M2@fuv_d99GTra# zoF;PT6p=)W2=~$=5^J_F2dUCoBJ(7&@J}Miu<>|H`X78PM7G{xUAXA`SQM)spx6A0 zylmhI*An|kn)(q6l1m(5teMM7PHp9w%<`YHk8ndCY6r(3gVc_!TT8l!dYzR0yb w;cy#N=PAbV3 z&vBu0$(3;+d%WG;sN8ZV(X^x|%V8G;w1m`|D8F{d7kr}dA$BvD)Do1ZeeMOJ^Uyq zemSQt8ZYGrjt%zahq^B0a$485W;b`+nVt;QVP_5)7o?UUxePVO!tKwV8_4A^_nvjN zDtR>EB7sO1x-Jd-t9cc&^({w5qlONO z-Wb{~8Z(p@y))G6uPPWw`74b#MV^e@F9Wgur zZ)D>-iH7E6&g9HD=PmkL50^jlMViu}Hw&BY=c{XsQ?t|TI5#0n4w%@$yK!PW@CwmK z`Yk6zsJTmI-@Won!Y!NJQ{s^=o=AA6$eJ$h{_<3*X$u%pSCPX84@&Q0i0RXmaz(hN zC6%GVA^RMtz0MA8I(QthO;^6Jp1ih(XvbnExRrn0$qIM6!kr0suCo#*)t7Z_3?rfn~lMo95Vnh@?HQO%hEGqO~ zS~pg-VpU7gY_(yR?7Ar%i2%za6^x5&qi9vGZ3S(5Ci|4rR8>hkdGD3~9xs02&UyD1 zl&~}88y=i(Gyg`s&C;X$*^*BWrqm=sC*zxHhAA?}DdU_mL77qNglRHKm$*)TaimB~ zXK>3385DxlSY-{B0nW*a(tap8Q63`fvd)Ga6O+9>oA_it#}?b@k`-V_D2BKwNTBwI o+w0)=JGg@2iV{76=87CP-=j1-`Tzg` diff --git a/bin/View/GUIAbout.class b/bin/View/GUIAbout.class new file mode 100644 index 0000000000000000000000000000000000000000..66cc5d9294448c6a1a38afa64fadab981391c4a7 GIT binary patch literal 1752 zcmZux-Bue_6#fQ=28O9XT7J@6J1tt15C~A(BD57sp$!Ha34~Iubuu|52PQLFXJ$<0 z${TOIaCxC`;0x%*u$HXl1NczZeUcCYHd*V;%-P@m|Mvdp-@pET_YRL>N6@9JHtp59Q%Wp|jZwc47bEZQDPM|M> z$%{RaGFwAR3a2k5yuQue`pbfu8q(;K$6XzB(rZ6?&2oqB3bPi${g%oCV(>?rfuWiM70{Q2CqDxOsdY-YUJ-)BxS5M?8upPina)pEi; zV28f3#jJ|Mgej~F_vs=K#KAL8Ztz3l)`WY+JdY?kbAN4qPFr>SI=2pOCKilkQ@DCRd)ABInxN z`d*F*je$gO>B!3_j1hXb!dMGRGq&o;hLj{|M@Ip>3a%2<|7VgswOHR?25oo5{ylsZ z!7BwL?;$S*q~mKDtfbBkZH|m%2}UHN{1q%y>XM0@LAA)lc5}F+S(g$jn1aji)}`uK zxF^x)*3=@Elg2ko(@Q054CZNw?Rh7R?sm))?Wc3V4iQ27-NvG73>KB+JhE|1Agu|K zUA*YFJ#`Y6cLQOuH7-}y<@qpfY==QhdF?y3xErg!z z4l$S<>iTI&`8~wd6O8ReuN~vVY;q#RMz!M(kqu9ri~FUNQg;EeQ=?BqtfeMHWKx48AvRKU|79w~_TXTM zmq~hiz553R)`f5AEMS<<%TO@@jaKvkeaC2Hj?+1T>zKw3%;P4ODA5dV6JN(+(uyqO z4jkHj0j6+7L-7M4f5Z%a#$EhM+vyEioof~V-;xGMPoM~k$}^AGD1lJ~OW46a+3F_S PSyaF&4h08}L+V|nUJ zU;5D12m25D2l_IsRo3bc=#Q%1H;EXj$y#@2?%DU8efBx${`2o&f4_c>TksO-5s)RV zn$ErT{C(x^Bwz_7U${TGFP(Z*`&DOoDRgT};K)tw>*%&XZ#q*Fuoi-fveAnHi9Q_Z z$5Dat)%?O#QP&!t8wKG6T~16*7_T-2j!7KHpg@0JMQb|p=yD`oFp(V3Wt?IZGTdyY zWWd7`Nt_@zf*+~6-gURk0W1BaZ6A>s#h5^X_M+aUsV|++XG#gA=(d}FzUEd{z8v`d zI4v+X?d<4s)Cg7GsW$X8FQ^97JAT#1I6gFq44Su(Bqnf{RI4g#ou?$}Oq;9QjGWfq ztl@cH;$vKB^E5#^=o6j9-h$h-FG{3MS~h8ybX_y41hS;n&3L(34g=3yb$#la!9W62 zhf88?o{gL_UOJTU@|t=X&4?)&4g&oWq%c!*VjQ|6QkBVBgAw)}V8a5eCB`A5@r>@0(RBvCYZjT61GtyBlf zwq5j1juiu1mndOF;3S*pe=ZrR(?|#7br6mXwTZ72cp@G7)MAX7XE|N-^FAwswgbXkknV4+lNyV&kb8G{Ul4(&h?~or`MP zNQAS@ycgyt_~$*uHNlVTeDCA#@7X={XOngeneB}+lpXH*WmxkW$okI=5WvBVe#7@uE+R1Wzp}g zsT8eq8!0P!H^x$KDn>pxG#cYUj{9HbVyq1f#dw_M+tZCdNvsFoaxGzm>oHgugv}do zkl!g@KE9xaS=Xyt-)c~CF&1#Cl;hrkP>d+_~#)ZBn? literal 0 HcmV?d00001 diff --git a/bin/View/GUITime.class b/bin/View/GUITime.class index 046f62281b7a4a3b994d0240b7c3670eb3f26470..94c61f3384b9212cd8e0c99fce1eaba0152816b5 100644 GIT binary patch literal 4308 zcmbVPYjjlA75+{p$xMa|Oa>%8g2n(LnKT4qKqQz-9>CxbfeGM*}>@xDy|EQ6`}6OBv&>+xCY0Q=^6#}YFms*?OP;Ly01ApU^@F&MN`SNZf7iR++5;aUTU+GhGO%b z+@LBI;f5JKDP0Z=RBleCQ+B6-r?F|DKzX;BF#PbKR>NW}@#1EId9(BB$8yw3?yb~r z42Q!_`>G(YLPG^ACACU}7nNSDEV~&Z`mjsDyKe1T zXR?Qr_3ngKUa_ujrxfA|SF}0gy(HTm@;;Iq9rAu!T$h*ljHEX>>z^gvwpP;8s{suG zRC~c(l$=Dq`22`tP#$PfU{PanrQb7f$cWn=&WWZp1hK$Ri^Cd5u!NmDAkQM-@{*C( zVB#>FXUwo?D!06mRp*73uQ1i@J*=ekSjtTMaRj#9Jj1wHpiTQ^eT{3Fz%izghIU!T zpkY}?BAS|HAJpVaPC`b(3SAVKA4#Q+zRc)=Vf9Nm;C>M^u8-`~t(2VS7t8IT6kB>; zq!_R|yg1J23(d35N+r7VWJEt^W^6wmLamJNVGWPqBDb!YRctXRIs9_3{+;~E+Jf-1GVTI*&3SZRl4Cb;}#tn&& zO6p4*zFf4XG zDJ4dPc6vu<+tFmt2z*Dwckv?oS5L64nu=1;ZH^u`(?;6vC~CSw9kFK2qVNTl&zR4r zyojw@?t+FzsPW+k#QBJx8Jsjyw(R!?ysY7e5`?@AsNa~deR!3qUfh<%aj$~VJ{I5H zsIA9`cj|}pbr47zwi2ex3aSN` ze(K71F&~b+#Nf+vct?T(sko$sq=ck?jo*0jKE0P^OmL1OY7%P-~>`xRn8U0QmXGE081P1*pEfu+*2gkoxitQeQ&8`V!pLmvE}SghN_e zNV*I+ab%rx^l^>1F~_BV_&0R~zt4xJuq+g)yn^L1&oqZ>T&u>%)%ed8Zi&XqjhmtP3%Rr4(Bi+3wBt+txIyV|W9uT4`T48}Nmg9kYJf)8-4 z3LcDRq0?48#trl-7+DO3ayS(7$7zHLrooj8j&JV;H=IcIzhpXaPhUXl44 z=wpSIaqT_&^-ydICvy10G)|FvEYj@B;&C~gZl0gT({gyWIS|a^E6vk58}kKLcmgY@ z@U<+y5u*Do%{hF#xm=1%wx@*MuGkeWJFu{X->dkQpU4j@zSrf`ysvooA<3S}*nO;c zU_HBK13Te%R{cgkH}7EHHeoe7(1OkA>s(Tf+b z73V4SGPdI~!gv=uR7Mv$S<7d10p7q%_#SgA>kK!sb`-9JBcBEsKqX3U^gS& z!^rw^KlZ}Fy+tt$=3@Zke~l<1@FQwhz*D=bo|D({V+P>>$r}?X;~* z+R_3?CT)f@lc=Q%T;p^!!4@&tP=ma-k}QiuMG5LGB&bt9{ppMJn@8KQi1eHINg=c{ zQchkryjGHz(Hn;LmRl=jH4Kb>C=yPYhym)$A8Ak`_f-bd!oQWCwj8G2NjWEPbJFf| ze&$Xj=jWXCx*VyaCazAnn4=~xXUOIJf`pn#&bzY5)%NcxO0NA}h-2hT;sj6c49nmgvEe1YxL?I_qQMEgjfeTR zcm#jPNqop>@W14v8jp#&cw8*S6Jj-<6zw=Iw%{poH_nK?cv{5q>`ZZqgj-ys{#@w3 VDtH!ug!3QaMHawc=wccE`ah4%2lfB} literal 4061 zcmbVOTXa;_8UA)AbIEXk$$$hwFd|4YBLqS~B#4>>Vr00;Kya{%XC^1fkjWf8IYUAe z!D}y;YVWPBy;^DUUQD8<(5tqqtFK+FedFed26(#`$*5>{IC^9twQ{SdCDAX85zwN2U_kwXcn!4!UEIo zGM%BrgVwO6Q2$U$h+521x24lA*iJhInRY5aFzA*^>g<%6wF*bO4l69x)D@8$L5`@s zyJ%($mZoW#P18AO<%T-!F_J~{he}14)+wkSg@vBr%H0AFexPJJ<6`GXPtmoUQ)XdA zVM*D}f=O4>u0xNs-YSy0dhOw??dh#c=Ld?WTXLv4Imfy()lM%A)#7(iL1<^bn0I$6 z1e%(A6>2-}J}Zgnrk*7y2wGf;$!J%E{W%7{xX;%d*p81u{Y* z^W;gZ*r#w)Q&00eBg;bCh2tIr_o9R4;M!g$SyxT-S=z<0E(42D7r`DzMHfcDV?9=~ zin-H*z0bg6@%es**j%$CNYSV*t&KzXjYqIwA-s9hCJ#7BV5<)tQV4Et+$TgV@L;QV zWU_;8-tj>mw|mE9l(@M}@i{qf^X?zvxpkAA#i~aQ#84kbc3vjR#TJE$K1nF+aamJ! zWgp0%uySs@m(c+OaV&{aV&1?BG_W(Xl8bVS3!-3P7)3VAh~=i(8YOdpGHaOuI_3^`i#HaGGVI)eA~tWw}CSqIl%{%p%Ql=v5exlVGmUPP;hbI%dA;jzlqz6?I&m zG;kIR8TkP!9+R7=3_M-AVfM%Itbyn7Jaai}$+#NhROyoYFBte@)xD;D!N8Y=J7gAf zgSHdKR~Vm)Aw5MpK;`H0lBDIUlqs#Ndv_dPH}DO7le~FN#-Ztzw|MArvaA)pZQwij zE?dm(V;3}6g`v|PK4}-NqT6287nM{qt#(xi6jsfMFNeJf-5$X!9Jnd7)IVc*3Vm=)aaa3L~@&0WC z@8Dg!#mhamV+}ZVNe0o9St*dWt+`j|FBy2xr|)1OJbIamZ_9E?+LI?!PD)NnPQSvH zFfP+KxW~-7wsYFRukjmBqMT!yt|iUqp%pgHv!pyCeK}bzr^Tb!)$}_9 zzsDcE*7C)y_QYJ9Njg4~*FljSN7Hu6$ys~y()UJrWNZ}MaSI&^0I1`Sj}lkNlcaY( zA$sS#pm)9sdgl<xJKd+ajlC#oSwjO$}%%laC{263G^o>F_;KUV(49+BAe?rozf&~ zu^J9;#y?pQ|H2x4hPA4OpCyg_1lfQlRY0?P9Ji~p*r1-pMw}$C;UyH0kyBF6SE-!r z{Vbsx-hE61Mlw?tC`uRmP#M?8t8_(k&yuk0BSI~ji z(23X4#Zj^wA7PJ<=rS*A<%ll9CA^I9F{Vl$b}zR0fVq;`W>;S13OuS;b{6*r{_bMX zI(2n@e^zx(;s?ZZ$A8Sj1>9Dlnq7lF)ovcd?*ODqRx_VK5B=Rs&&9KS^ymN{#6eER zbd~MdvhB1FKV@wxyh_d>0?XH}A@DQ0T~nSA7i2D=g|}jQkOuX?!$XbM7}A%$Gj&E8 zUY#lY9KRrTE_3T#=401nzE}z5E~=71h7v2;lru?=>f1-C@OYJDp^9T6`8w8Czm7Mq zVMyB>bG*o2(~viPLuwirWg4RTyo{m=Utfm#B;B+%+(CVW6J zlLR__jPPi{=jpD-Xu!wx`_MgzVyu}oupGc}JkQ(tQ{^_@1ev0~;-O`l@tg59|s zgII?=>-q#cbcoemK!*L+&-{$A7SAzz=b8MMIptpE&0BEUvn4+7qxcKIc>j*m_=F#t z|CY~LJfRlij9P&w)q0#&Z8)dy#Zzi8o>oWjjLLBW$mG<0uKN6v;_0JGuhg+uKE-RF NvV9ajCUFh^_&+GUy^;U` diff --git a/documentation/WORD/.~lock.Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx# b/documentation/WORD/.~lock.Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx# deleted file mode 100644 index e846f15..0000000 --- a/documentation/WORD/.~lock.Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx# +++ /dev/null @@ -1 +0,0 @@ -,aaron_moser,aaron-moser-ThinkPad-T430,08.04.2022 11:11,file:///home/aaron_moser/.config/libreoffice/4; \ No newline at end of file diff --git a/documentation/WORD/Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx b/documentation/WORD/Rechnerarchitektur Selbststudium Skript Verbesserungsvorschläge.docx index 0d109f01adf9603eadda937cc548108f447b0ac2..ce3edd1b6be19ceeff93921321cc7520eb1e56da 100755 GIT binary patch delta 1271 zcmbO`gK^#rM&1B#W)=|!4h{~6*JYg(c~$CT{SO(4)P4`wsl9)TH*!m&a^T^~Dryb} z`>uX7S`~eLOY6b?+of|B3Eh8Z`~1tD^?u9RSMhvHShFUy?NP@929foxA+BvimMc_Mmh^6Xn7 zXMSE0iKsXJcarM>r=sS%1BM4>4zEpI!R}tNO{8YS73<(Kwx(o_g-lO%`W8#nXUonw z6<2$~Q2dnFuElMuFU^y=!miDpc-bV-_|=kq|0VXHn=gKM#ln!ct1K4O6y>!PF`sGV z*u!W$_4UlJFFs~kI#)VPvQSxUpm=&lz@#9jdul(f|GxG?r2e{EytnGBV{C?*rObD{ zSR(S4l>M7k>Hd$QCeA4I&7W7r0S~h-da|vs%{sYe_V3U6Djn^Mzwc=Jx;Hfa&Hsm! zCfsRzQYX2*#Acaikzq{!g;28%)8Fc!Ii49_dgAuBx9|Qk@31~=qGDHeX=*{!?+@p% zpV`k4;LXl4x77VcF(U(m;4>x$pa4>&Og_M9z-_&4vfGRm_OCRvv?u>&l&U|w^Zg>> z2=%S20;JS6n2v6puxjOn>c1xO3r|!oV|l%$i7WQNLf*ZK>%*is#5Hv@Iqu}zdT+Mr zvA*pWjK$fbS)VV+Jzq0n+reK26J+E}?Y}LsIX7v^k%DgvSUPq}HoowRng6GLq0{Gw zb?+AMn{iS4r^|h;;*k`TlaxHN4eb@6+CEe~1|J_si z-1_?)cl3O&kWAmaHstu{f5oBiPTS1ld2_gVUt{$g_07K*zd2%~T*0Nhehs7h<(3E8 zu4T8l+&A0!bMCwLWMS&GLiumbmydojJL6|1T&`aGJ555q!S!c(-lJBZ(^98>US~`c zcmA}ZSxF+?p&lG=#xbdr%z@!1fgWs|jhX8hnSqIV^A;9w2!n}DjT0=Q&EE!<68OUk z7TGNJ1tPLaViAPlFI50x9Fmp;GbTTl`3_P$`L66Ou%2CVf)Eww13XWL>^;J@!vUyn zH8TT)FtTO_^~no7l;lA+ynAr|Hw#dWDhmUH42qf+lOK9$gPqOqDb4t8vbLujnCAoJ z$xqJkln3*=fV>rxmwBpyd1ryV<&$4R<+#118Rtz__fi1Mc>#IOlheEuA^NzG)y2&}- z>R_))*yR{42I`%`f$sf7lQ(%QDS*7c)#p~Yh#CWfB^xt?Ac`H!6ek~46rRlPBf$34 H9V7z)x5@v$ delta 1265 zcmbO?gK_Q*M&1B#W)=|!4h{~68qbc2yejnv^9~vC?0v7j>dtMIRE3bOuD8_uoM*9g zWNz0nRE?hP=DFa*cW>^uH`>&mChY(IDd)In`temfd{e1m3ol~<9{c)4j3v5$22B4S++$V4&d*5k)-(}VdeK_Z+KXa2RN~wiu6(L+P{_0 zCpACr#SHCK)w`aDeKY;}UM-&5ydiVe3dz!-`}RlIcRx=x&(a9}9U>DjFHXvH2jepb zmU{}8(_ha#`{HA!se7eQlGLO?iOHg>oHJEg_ALEz{qME<4>H%)?t7@dI>t6-%Pz(| zRVE$tAnW~S_bAsh*y+#I`u6W-alpf>o1SbdVzW-JiT?35U$vus^7kE$U-yQJzxn_0 z(S$qgDZ3V#d`!35DYef0g_g9%iErZ19v6m}p18g3?Z3awJFL%}sMwWVnp)8I`@{L` zXZAA$c(ZfNysRr!!pI=R@QjH8D1a0zllLo#MB{VUBZ<;lMorRu-#e7{II zLVfG104a41rlVUYtXg@Y`mas=q7#+NSYB^w;)*@6&~&e2^lIJ+{e!NJ3u0QM-k;@4 zJ|6vIW_R=2rs50R((OEMC)8Sa@cGY@uMUt)_Y6v~s19H{a;L|kM0K6tzx@FVe-_w( z4~+MD5E$f~Z}qHkACLO(h>ZKfHf5gmYi(a=-DK9Cd_i7xr}?tUbAEoXE>YgEv*+Kj zhf3!j8=Xs&UfK8j@AFMJ#4AlCZ?r$JVg7F6pT_Tgv$N9egNWO=XuOr5cp^A>w%T<<-1*ar zW(jcxhk9_RZ7cY7)s&HeK@2_6Hk&ZlF){en;IurM2Ei(DkboT6)dtv z>wZtL_BS5ME!Z<7~2WCuuBJ&-jcJe*hTVOrAv`l>Fp?qWpql{ltO-y^7qN0B=Sn5e9gc4B2~xYlj0+-D+kA z24Q5)3~G}XdML?*Y>tr2IIWW%`$dj9# z=_wE9bpv_JColI@0rSoQdCMlhg39rDNi)u!tl^~qmh%SkoF=DxDMIvlNn34|W?+af zO3f+O*8`F0&fk=@t$ZEON#a1~$)Pyy+T;gbx?p1jyrmg0OxE#M0`mfaytR{az16{9 xld#J%S`5@Xg9F|B2Pbd#hIoIg&#iC~H3kMtHf9Dv6g!qq{^G5|_QM?{2mnbA|f diff --git a/src/Control/MyControlModel.java b/src/Control/MyControlModel.java index 534e4c0..53bd77f 100644 --- a/src/Control/MyControlModel.java +++ b/src/Control/MyControlModel.java @@ -3,6 +3,8 @@ package Control; import Model.MyModelData; import Model.EepromLoader.ReadEepromFile; import Model.Microcontroller.PIC; +import View.GUIAbout; +import View.GUIHelp; import View.MyView; import java.awt.event.ActionEvent; @@ -259,9 +261,11 @@ public class MyControlModel implements ActionListener { oMyView.setLanguage(1); }break; case 15: { + new GUIHelp(); //Show manual }break; case 16: { + new GUIAbout(); //Show about }break; } @@ -292,5 +296,6 @@ public class MyControlModel implements ActionListener { oMenuItem.addActionListener(this); } } + } } \ No newline at end of file diff --git a/src/Control/MyControlView.java b/src/Control/MyControlView.java index 475f962..e8371af 100644 --- a/src/Control/MyControlView.java +++ b/src/Control/MyControlView.java @@ -27,6 +27,7 @@ public class MyControlView { setRegistersDetailed(); setStack(); setTestFileTable(); + setMCMenu(); } /** @@ -149,6 +150,10 @@ public class MyControlView { oMyView.getGUIPorts().enableCheckboxesB(abEnabled); } + public void setMCMenu() { + oMyView.getGUITime().setRuntime(oPIC.getRuntimer().getRuntime()); + } + public void setRamView() { int[] aiData; int[] aiBank0 = oPIC.getRam().get_Bank0(); diff --git a/src/Model/Microcontroller/PIC.java b/src/Model/Microcontroller/PIC.java index c24b57a..4bdfc7e 100755 --- a/src/Model/Microcontroller/PIC.java +++ b/src/Model/Microcontroller/PIC.java @@ -17,18 +17,21 @@ public class PIC { private RAM Ram; private STACK Stack; private int WRegister; + private RUNTIMER Runtimer; public PIC() { //Initialising objects of PIC. Eeprom = new EEPROM(); Ram = new RAM(); Stack = new STACK(); + Runtimer = new RUNTIMER(Ram); WRegister = 0; } public synchronized void resetPIC() { Ram = new RAM(); Stack = new STACK(); + Runtimer = new RUNTIMER(Ram); WRegister = 0; } @@ -78,6 +81,10 @@ public class PIC { return Stack; } + public synchronized RUNTIMER getRuntimer() { + return Runtimer; + } + /** * Datasheet Page 57 * @@ -137,6 +144,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PCL and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -173,6 +182,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -258,6 +269,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -309,6 +322,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -337,6 +352,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -378,6 +395,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -404,6 +423,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -441,6 +462,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -469,9 +492,10 @@ public class PIC { if (Ram.get_T0CS() == false) Ram.increment_TMR0(); - //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -492,6 +516,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -512,6 +538,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -537,6 +565,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -583,6 +613,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -632,6 +664,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -679,6 +713,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -701,6 +737,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -749,6 +787,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -805,6 +845,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -838,6 +880,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -879,6 +923,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -899,6 +945,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -937,6 +985,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -955,6 +1005,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -970,6 +1022,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -997,6 +1051,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /**OPTION @@ -1012,6 +1068,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } @@ -1039,6 +1097,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1061,6 +1121,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1117,6 +1179,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1172,6 +1236,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1195,6 +1261,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1251,6 +1319,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1326,6 +1396,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1363,6 +1435,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1388,6 +1462,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1419,6 +1495,8 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } /** @@ -1462,5 +1540,7 @@ public class PIC { //Each Instruction has to split Programmcounter to PC and PCLATH because Ram can't see RAM. Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + + Runtimer.incrementRuntime(); } } \ No newline at end of file diff --git a/src/Model/Microcontroller/RUNTIMER.java b/src/Model/Microcontroller/RUNTIMER.java index f6d149f..cca638c 100644 --- a/src/Model/Microcontroller/RUNTIMER.java +++ b/src/Model/Microcontroller/RUNTIMER.java @@ -1,5 +1,100 @@ package Model.Microcontroller; public class RUNTIMER { - -} + private double dRuntime; + private double dMaxWatchdog; + private double dRTIncrVal; + + private boolean WDTE = false; + + private RAM oRam; + + public RUNTIMER(RAM oRam) { + this.oRam = oRam; + } + + public void setMaxWatchdog(double dMaxVal) { + dMaxWatchdog = dMaxVal; + } + + private void checkWatchdog() { + if (WDTE) { + if (oRam.get_PSA()) { + setMaxWatchdog(18000 * oRam.get_WDT_PrescalerRate()); + } else { + setMaxWatchdog(18000);//18 ms + } + if ((dMaxWatchdog - dRuntime) <= 0) { + System.out.println("WDT Interrupt"); + } + } + } + + public double getRuntime() { + return dRuntime; + } + + public void setRuntime(double liVal) { + dRuntime = liVal; + } + + public void incrementRuntime() { + dRuntime += dRTIncrVal; + checkWatchdog(); + } + + public void setQuarzSpeed(int iInterval) { + switch (iInterval) { + //10 {"32 kHz", "100 kHz", "500 kHz", "1 MHz", "2 MHz", "4 MHz", "8 MHz", "12 MHz", "16 MHz", "20 MHz"} + case 0: { + //32 kHz => 125 mikrosekunden = 0.125ms + dRTIncrVal = 0.001 * (4 / 0.032); + }break; + + case 1: { + //100kHz => 40 mikrosekunden = 0.040 ms + dRTIncrVal = 0.001 * (4 / 0.1); + }break; + + case 2: { + //500kHz => 8 mikrosekunden = 0.008 ms + dRTIncrVal = 0.001 * (4 / 0.5); + }break; + + case 3: { + //1MHz => 4 mikrosekunden = 0.004 ms + dRTIncrVal = 0.001 * (4 / 1); + }break; + + case 4: { + //2MHz => 2 mikrosekunden = 0.002 ms + dRTIncrVal = 0.001 * (4 / 2); + }break; + + case 5: { + //4MHz => 1 mikrosekunde = 0.001 ms + dRTIncrVal = 0.001 * (4 / 4); + }break; + + case 6: { + //8MHz => 0.5 mikrosekunden = 0.0005 ms + dRTIncrVal = 0.001 * (4 / 8); + }break; + + case 7: { + //12MHz => 0.33 mikrosekunden = 0.0003 ms + dRTIncrVal = 0.001 * (4 / 12); + }break; + + case 8: { + //16MHz => 0.25 mikrosekunden = 0.00025 ms + dRTIncrVal = 0.001 * (4 / 16); + }break; + + case 9: { + //20MHz => 0.20 mikrosekunden = 0.00020 ms + dRTIncrVal = 0.001 * (4 / 20); + }break; + } + } +} \ No newline at end of file diff --git a/src/Model/Microcontroller/WATCHDOG.java b/src/Model/Microcontroller/WATCHDOG.java deleted file mode 100755 index 965a484..0000000 --- a/src/Model/Microcontroller/WATCHDOG.java +++ /dev/null @@ -1,105 +0,0 @@ -package Model.Microcontroller; - -/** - * @author Aaron Moser - * @date 23.06.2021 - * @lastchange 23.06.2021 - */ - -//Doesn't work correctly, status is changed too fast. -public class WATCHDOG extends Thread -{ - private long time; - private int watchdogStatus; - private long timeStart; - private long timeEnd; - - /** - * Constructor of watchdog. - */ - public WATCHDOG() - { - time = 0; - watchdogStatus = 0; - timeStart = 0; - timeEnd = 0; - } - - /** - * @return time in microseconds of watchdog. - */ - public synchronized long getTime() - { - return this.time / 100; - } - - /** - * Sets time of watchdog. - * @param value of new time. - */ - public synchronized void setTime(long value) - { - this.time = value; - } - - /** - * @return Status of watchdog. - * 0: Waiting for start - * 1: Start Watchdog - * 2: GetTime Watchdog - * 3: End Watchdog - * 4: Stop Watchdog - */ - public synchronized int getWatchdogStatus() - { - return this.watchdogStatus; - } - - /** - * 0: Waiting for start - * 1: Start Watchdog - * 2: GetTime Watchdog - * 3: End Watchdog - * 4: Stop Watchdog - * @param value - */ - public synchronized void setWatchdogStatus(int value) - { - this.watchdogStatus = value; - } - - /** - * Makes it possible to create a thread of watchdog. - */ - @Override - public void run() - { - //If status is changed to 3, watchdog is stopped. - while (this.watchdogStatus != 3) - { - if (watchdogStatus != 4) - { - //If status changes to 1, starts to count time and sets status to 4. - if (this.watchdogStatus == 1) - { - this.timeStart = System.nanoTime(); - if (this.getWatchdogStatus() != 2) - { - this.setWatchdogStatus(4); - } - } - - //If status changes to 2, stops count time and sets time to new value, then sets status to 4. - if (this.watchdogStatus == 2) - { - this.timeEnd = System.nanoTime(); - if (this.getWatchdogStatus() != 1) - { - this.setWatchdogStatus(4); - } - this.setTime(this.timeEnd - this.timeStart); - } - } - } - } -} \ No newline at end of file diff --git a/src/Model/MyModel.java b/src/Model/MyModel.java index 0897af2..0ca3b1d 100644 --- a/src/Model/MyModel.java +++ b/src/Model/MyModel.java @@ -113,66 +113,13 @@ public class MyModel extends Thread { } } - private void setQuarzSpeed(int iInterval) { //TODO Quartz - switch (iInterval) { - //10 {"32 kHz", "100 kHz", "500 kHz", "1 MHz", "2 MHz", "4 MHz", "8 MHz", "12 MHz", "16 MHz", "20 MHz"} - case 0: { - //32 kHz => - dRTIncrVal = (4 / 0.032); - }break; - - case 1: { - //100kHz => 0.000010s - dRTIncrVal = (4 / 0.1); - }break; - - case 2: { - //500kHz => 0.0000020s - dRTIncrVal = (4 / 0.5); - }break; - - case 3: { - //1MHz => 0.0000010s - dRTIncrVal = (4 / 1); - }break; - - case 4: { - //2MHz => 0.0000005s - dRTIncrVal = (4 / 2); - }break; - - case 5: { - //4MHz => 0.00000025s 1 mükrosekunde - dRTIncrVal = (4 / 4); - }break; - - case 6: { - //8MHz => 0.000000125s - dRTIncrVal = (4 / 8); - }break; - - case 7: { - //12MHz => 0.00000008333333 - dRTIncrVal = (4 / 12); - }break; - - case 8: { - //16MHz => 0.0000000625 - dRTIncrVal = (4 / 16); - }break; - - case 9: { - //20MHz => 0.00000005 - dRTIncrVal = (4 / 20); - }break; - } - } + private void setModel(MyModelData data) { oMyModelData = data; oPIC = oMyModelData.getPIC(); abBreakpoints = oMyModelData.getBreakpoints(); - setQuarzSpeed(oMyModelData.getQuartzInterval()); + oPIC.getRuntimer().setQuarzSpeed(oMyModelData.getQuartzInterval()); iVisualInterval = oMyModelData.getVisualInterval(); } } diff --git a/src/Runtime/Main.java b/src/Runtime/Main.java index 11f8077..0c55d3f 100755 --- a/src/Runtime/Main.java +++ b/src/Runtime/Main.java @@ -24,11 +24,11 @@ public class Main { MyView oView = new MyView(); MyControlView oControlView = new MyControlView(oPIC, oView); - + new MyControlModel(oView, qCommandsToModel, qDataToModel); //Check if model sent a new pic-element through queue and update view. - while (qCommandsToModel.peek() > 0) { + while (true) { while (!qDataToView.isEmpty()) { PIC pic = qDataToView.poll(); oControlView.setPIC(pic); diff --git a/src/View/GUIAbout.java b/src/View/GUIAbout.java new file mode 100644 index 0000000..90af5c0 --- /dev/null +++ b/src/View/GUIAbout.java @@ -0,0 +1,53 @@ +package View; + +import java.awt.Dimension; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.ScrollPaneConstants; + +public class GUIAbout extends JFrame { + public GUIAbout() { + // sets title of frame + this.setTitle("PIC-Simulator GUI - About"); + + //prevent frame from beeing resized + this.setResizable(false); + + //sets x and y dimension of frame + this.setSize(650, 420); + + //Set Icon + ImageIcon guiLogo = new ImageIcon("./pictures/gui_logo.png"); // create an ImageIcon + this.setIconImage(guiLogo.getImage()); // change icon of frame + + this.setVisible(true); + + JScrollPane oJScrollPane = new JScrollPane(); + + JPanel oAboutPanel = new JPanel(); + + JTextArea oAboutText = new JTextArea(); + oAboutText.setLineWrap(true); + oAboutText.setPreferredSize(new Dimension(600, 400)); + oAboutText.setEditable(false); + + oAboutPanel.add(oAboutText); + + oAboutText.setText( "Hochschule Offenburg SS2022\n" + + "Projekt Rechnerarchitektur - Simulator Mikroprozessor 16F84\n" + + "Entwickler: Aaron Moser\n" + + "Programmiersprache: Java\n" + + "Entwicklungsumgebung: Visual Studio Code\n"); + + oJScrollPane.setViewportView(oAboutPanel); + oJScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + oJScrollPane.setWheelScrollingEnabled(true); + oJScrollPane.getVerticalScrollBar().setUnitIncrement(16); + + this.add(oJScrollPane); + } +} diff --git a/src/View/GUIHelp.java b/src/View/GUIHelp.java new file mode 100644 index 0000000..cf2972b --- /dev/null +++ b/src/View/GUIHelp.java @@ -0,0 +1,54 @@ +package View; + +import java.awt.Dimension; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.ScrollPaneConstants; + +public class GUIHelp extends JFrame { + public GUIHelp() { + // sets title of frame + this.setTitle("PIC-Simulator GUI - Help"); + + //prevent frame from beeing resized + this.setResizable(false); + + //sets x and y dimension of frame + this.setSize(650, 420); + + //Set Icon + ImageIcon guiLogo = new ImageIcon("./pictures/gui_logo.png"); // create an ImageIcon + this.setIconImage(guiLogo.getImage()); // change icon of frame + + this.setVisible(true); + + + JScrollPane oJScrollPane = new JScrollPane(); + + JPanel oHelpPanel = new JPanel(); + + JTextArea oHelpText = new JTextArea(); + oHelpText.setLineWrap(true); + oHelpText.setPreferredSize(new Dimension(600, 400)); + oHelpText.setEditable(false); + + oHelpPanel.add(oHelpText); + + oHelpText.setText( "\n" + + "\n" + + "\n" + + "\n" + + "\n"); + + oJScrollPane.setViewportView(oHelpPanel); + oJScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + oJScrollPane.setWheelScrollingEnabled(true); + oJScrollPane.getVerticalScrollBar().setUnitIncrement(16); + + this.add(oJScrollPane); + } +} diff --git a/src/View/GUITime.java b/src/View/GUITime.java index 50e2269..630237d 100644 --- a/src/View/GUITime.java +++ b/src/View/GUITime.java @@ -1,6 +1,7 @@ package View; import java.awt.Color; +import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.GridBagConstraints; @@ -33,16 +34,19 @@ public class GUITime extends JPanel { JLabel oLabelWDT = new JLabel("Watchdog Timer"); JCheckBox oEnableWDT = new JCheckBox("WDT"); - int iRuntime = 0; - JLabel oLabelRuntime = new JLabel("Runtime: " + iRuntime); + double dRuntime = 0; + JLabel oLabelRuntime = new JLabel("Runtime: " + dRuntime); JLabel oLabelQuarz = new JLabel("Quarzfrequency"); String[] asIntervals = {"32 kHz", "100 kHz", "500 kHz", "1 MHz", "2 MHz", "4 MHz", "8 MHz", "12 MHz", "16 MHz", "20 MHz"}; JComboBox oIntervals = new JComboBox<>(asIntervals); + int iLanguage; + public GUITime() { buildGUITime(); setLanguage(0); + oLabelRuntime.setPreferredSize(new Dimension(150, 20)); } private void buildGUITime() { @@ -70,13 +74,14 @@ public class GUITime extends JPanel { } public void setLanguage(int iLangNr) { + iLanguage = iLangNr; switch (iLangNr) { case 0: { - oLabelRuntime.setText("Laufzeit: " + iRuntime); + oLabelRuntime.setText("Laufzeit: " + dRuntime); oLabelQuarz.setText("Quarzfrequenz"); }break; case 1: { - oLabelRuntime.setText("Runtime: " + iRuntime); + oLabelRuntime.setText("Runtime: " + dRuntime); oLabelQuarz.setText("Quarzfrequency"); }break; } @@ -90,12 +95,18 @@ public class GUITime extends JPanel { return oEnableWDT; } - public void setRuntime(int iRuntime) { - this.iRuntime = iRuntime; + public void setRuntime(double dRuntime) { + this.dRuntime = dRuntime; + if (iLanguage == 0) { + oLabelRuntime.setText("Laufzeit: " + dRuntime); + } else { + oLabelRuntime.setText("Runtime: " + dRuntime); + } + } - public int getRuntime() { - return iRuntime; + public double getRuntime() { + return dRuntime; } public void setTheme(int iThemeNr) {