From 68bc4bfd6d0f86068a60d9b52faf2182584828bd Mon Sep 17 00:00:00 2001 From: Peter Gerwinski <peter.gerwinski@hs-bochum.de> Date: Mon, 13 Jun 2022 14:13:44 +0200 Subject: [PATCH] Beispiele und Notizen 13.6.2022 --- 20220613/bs-20220613.pdf | Bin 11551275 -> 11551503 bytes 20220613/bs-20220613.tex | 6 +- 20220613/bs-20220613.txt | 164 +++++++++++++++++++++++++++++++++++++++ 20220613/unions-03.c | 23 ++++++ 4 files changed, 190 insertions(+), 3 deletions(-) create mode 100644 20220613/bs-20220613.txt create mode 100644 20220613/unions-03.c diff --git a/20220613/bs-20220613.pdf b/20220613/bs-20220613.pdf index 754137dd44cac64b8f2a66f23f322334ad112ed8..9bb2d01cab317d4fd7b70a283fbf56e4efd76983 100644 GIT binary patch delta 5851 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 H@5TiH<2vwO delta 5642 zcmeBgJIK1a<sfTA3u6mY3v&xg3u_Bo3wsMk3ug;g3wH}o3vUZw3xA71i(rdTi*Sob zi)f2ji+GDfi)4#bi*$=ji)@Qri~JUaCwfd4rqcsd6twEkhQ<2dHV~<O9$t~(xkaM> z7^i;5Wro~KDr}-QYpOYNZ@HQ9oo3JY`*nBUT$5bJgD<w&nv}`>{&lDL{NC*>X9XS8 z*;BHY7z9bwAL4SfNwIh&WO&pdRZ%P0#QMj!;urIKXLvo4o8%dC?&7ygN0XNy;@Igf za?@E_Tl}}ni3xu->#HyR63zQ*VP#>{tFcJrc#x6Ftc4ujN&><LMvZR4U+xOe_~odx zv-~ahBh{($2BMXbp|?+-JhJ>q^c8LU2E((jlK&rn;obk>Lx`8iV~ds#jkQfo#|nMc zzVx5F_4B43A0<Cd%dFc{_$Re5r&`e9%)`EhVj0c6_fp16>uNX!yyw?@t>3gkKFBur z%bi6#zFU6e%8l0x+O2$bZ~C{xGd5m0SCVwx&A&f!s{QjFΜTJDp3y#FEd2X7$Eg zOI~;6$cBR5USg+1{tF6*@aUNu^G)ZH;TAt@xbRir;pmFnk~JCpfpU!O3qNrvioHFt zoMDSW%U`1j-BvG^IIWjXH`Ut|UN5`V=i8M!UnA?pmLTihC-3~@FF$u+)BQtcANRF2 z9N6`-j7_gQ@^3=P<SBY_-y>fsr0qQ2;uG$<*Q)3v%Uo6m|JRmh94p^fr*2)vl)ZA@ z+TFhU7+<EaOuZ1|@XBaXQCn-*MV0sV1{`c^K8Ic<Se*>que>3>`QSsdr{;Hh3?3@h zFXGvx-nVx1b+t8Yc2BBvmAA(%ll`$uYgW-F{>q>x*5%b5=U&d>-gx5KcDJqxD^?0e z&B}c2)@_~nY1M_`=Wd1J>6O!_o$F=1-&5q{oG?ej=fNq)#|ImpKj1t!zwgv(ji~!i z3s{&Ha=(~q_H5t~?OJFb^oxzn{(1Rnm+PKyuT<CXV^L+Vt$ghj68XgMy!q0VeV)dV zH}Wf&wYS)5K9SI1<d0ka*!<%^DeWcVkMAAYH@C+tY0<9)t!)##(%dx+7q9776^W5D zem^($YiO)M(5#Isx<B~MZ*$7#`o71fNZ8^s>-_vX3MV35=9(s-4B4>8@5`FpIZsVW zkNTYd&7+gPEMl$W&kO5*iE{6a_PX^w)cA#HW~8qeKbuj>i@Q2oLpWQVm;MVke0%)V z{r#ES+q{jNpWp1Oy53V>FQ*u*bgI{7M@yHgLsP`jclv!cDW5*tZCuB{pHckP?9I~^ zBRYhqZ!}U6VYaZeoF1s6pjm%5?5_W91A+SI>p$ER$}IdVslI1{Z%v2iWVVnG8{R1{ z$&|imF=5$)uj}tymO0&GYPwjvBCBTO+|PIazN<@bTGp{(vh60rAPLQ$asy`pe#yQa zE<T1nksYgee7~LBX7?*yd7048_7tJe;4PM=|E`25w%k$fdgGpL{CxM835vhN>%T2H z9&YjUb3uNAOrVQq-_n!}3rE3eE(&T1DNMY_U+h*l_}Uy%^!}9i5pS`&10heIcHiQ1 zU+LdzzB;^)A$i($_J92kr=M#&xN(Zcu|kdyjdhT`_Udrh?d_}fe3Sh6EOO)iZ$Dql z-29@HFypW!<8zCkJM&DFTw;C+`K+m_*V@}^`djhx<E8VWwBObG?FqU){qvc3CrX~r zjFm7Hi}F-2i+S~t@yw^`GUZ}{t;z3ntX7^9e6F?GOYfCnxRPn$j!4zbmCNe21wy{? znF_T#v-Y(*7rU&e3i{Z#x0i+ctosyqf#!h97J=-y7nUbvWHNobJR|0sXSd3mDRKKs zPSnS3TbR0u`|Wj=?M%v3qF!2+|F*wt#ripqJ9_(fT}F;I((n5ZxLU51_qnGs_3&%E z^K&{YA8ILH?_Lu3*4jq#JQIiiW6Kj0D&=>d$=bxVC3V-fcY58Xll$5Zw6rm<T<vj6 zQcTM&^P;W+1GBJN;x_eVtgp&g_WpdZ(>ARBg7t!h^{rb2TxNU_2xJo#J8q^B&Q|qU zslX}s;@tC_uN^$PC?@QsUeF979gDk+O~;k>j_Az4H>0FA>0FFa+D@}PlQQ+wNrA66 z7BAkj_OsG?t><q1!pB$ywz?e9pX9EVR$e_rYet^gmm_JOl4<SpLlUhmEp#=U+f_?8 zZ}wYzuz_)Mr$l|b${pKl=d&wiP3}g<X!#r#nAD!kwPK6s=DwH~*A)RWNt#!z8?1Hn zo_DUBd`tA&c1w}S3x@fp=Y>Y@2->}lr%?TLN!s<UnD2!(+m0nQw*HwNSl=ynX{y8d z1G2L3H5`r_w8_rsT5H&FQ^+Z)YsFEaD#qTK-w(Qd_2reC(Xw$xy=%p5E=Jn}U#4VE z6=AcuydZvGaKMh>Ep4((-6ktu-{bdX$;+2lEsAYcFOPi~E_}JLaqAZ4XGP1lORlMm z*R9UgSuOVR&A}Nw)7x{4HY}V}ki7Iy{n=%*U;FIqE|tBW;MVl~WY{k|w>^8WJMDEb zVAedeR8h;raZOVB?@7#R^Yi>U`u}|3<`><01d=!RnJI`)|0uOyyZ&rgG^h@&gVurZ z$<_Lo)%0#H@jS5V<A!&NTR{0z$Jg=k_4gKKPF{=$S8TK0V)yaskC=U*Wra=LS!CZ& ztX6KFc<6_48pk8e!?V1Ph#a1>bj7)gIqyqeU$B=poT~B1Q!UWe{rmEBa#mBbME-60 z)^3(|t}Ij0`QP$C^{(af3r-)uc<<lDWgS5|OHwjSoTU&|psmo1W1SOitom6yH-*kI zSh_grYQ@6>p<p51S+^}34fSVz|JZ-=`MsvU%9;}os<nP;tZNcFwsB$HSI6aVm#ouE za$A%dx9_&aKO6UV)e}KgU`z2D(eLHGl7jb>IMuEhPOZOqYIg19+b?gO+beqAP(3j9 z@A1fY<xjSKKcn9x>Ag3_*nZvHFSchsEtlaJ3vA`(7n8kybw=^jYSsAJhT%z%78O*^ z)}6NV?_!4l!yQ*VW%NXEbW8x%fsRMNzsXgN$lwoLr^vRli$n3=tw5iH7f!LhnQpu@ zYm?sO4Z&_ltx~?#M~g?P{k~9ll1tyfY2|dit_}YWhX!nTvweeab-Yl+k=-AEan!6$ zJKKBMH>|xTR=m<+qlUApNZC}=?eCrJ7}GghmVcE=akzI|E>d@uLv)_>`**wU7`!ZC z@p&OJp{;AloWzAZv!?uIYEDTwq;iJuh-c?7*^>!&l{x*_=kw@gWY#Ati%1F2Q#!Ta zP|rt3%kq`wdQ9pjcDqlf-m}~h75chr6E{b26YFy86Av!V;NGb5Y&ze%fHRd0$#D_S z-LlKK>4i_7%Vxf6^)ij_J$!jQMTazwo3ySGXyuIA`FYJAztf+YYL{zPOy;?hX}Dn~ zN3ZLu35|X}FSS2?Sh*)EZQIFN^#SVY-YaG<QNPs3^LiD})Z##ExpUVhx5jI8|Bi@q z=@R9Ul3qGj-2S`4WR^8$ubDT-3Nb~k%h<nDEaF98=Ko+$Ik}Jzmn>v$e0F6N_DXsR z+IaRD{EvRM+jhzN8TE+?4@BlBEw1EOKWe6NG&hiIb4Xc6(=#XD?t2wJdsjSWHmx^Y zX5Ev!*K@(j9crfQH(zo*UixRbyk>w9n}FaJOW(e=-D;aRf14QK|JmVA**#-V+hSdr zj0<eb){B+R7P|fZ_SXga&%S1D+EJ)>I6Fo9nqA1H1Xh<H^B?89pMCK@Fxh|NCC?A_ zdsy%9?kML^U7_K-vzcT1ftgGS9aA~aTkbsng!}N{ck5REXZu%nk`IzKPg*I6On1^& z(5b(RQe_(c>k*E-u#EB65>IJxl?ln3@{lU?(iT>h#g{I~3B}9&t|{NY`~J)YmP#+) zH01P(xN$w!pP|^%&f^}Vv`k`|j!SA+8vFfnv%i}KgFEkd8+D$tyfx3NJ|kR0@q3rj z?#$$8HS@)cQsnDX`J?I&Y0A5^w=WlTo$@HctIf?=B+-*4iOEgvLPl3z1yitnhwArr zHI93hd}3avq`x{#dyY?y*B;lspO_^sud(}9-?#6Jn9Mw{&Lo+32Kg828VNGTudMoa zCG&Tf*mXPQdq!vb&9>Q}pO~x9)MhzHu%J)*=-bF-w<AmS4<5Nxzx>kbH8;PnoM%>* zw|2*8Q2W&WT<~rsQ2X@wjExt(tTrYuUVhx*^!%bbk)ZbJ<`-*pj?GzpMQi7Z<1w9` zorlh9Md}3q4R2hKRIp;Ag^X5#j?AoNr>o6f+u!7>{<xU8$fil6<&<(uM7Fyft24Lo zhWp2!Eb_BbNnHA6(=o;R>YJ_8PTFmWpL~X^Cm?I->oaTr7rYkH`K_9B`QCIEg$;Ro z?3l!luGwc^Ie7}-`rSIEYH2%HLmQ|SPV-m==3OhEp!oUT_nBAIL^HfgbMNMU;+^d0 zhFoP%-t+$;1CP&)mYa<hCj<8@Nt|KtU%T;F^Fc=4dfl8Br9&<49Y!lQSZrh5X>>ta zyiqu-`(4q@GQP0Ti&G}oE-_GzDA>i$;(t7*!_{oR;Y+Tgb9SZp80X%}c<VQ7kJgtf zI|J`ri=4M~X>oD`=VF=50s)F#!WKpESAetT-fK_xaI(GIV!46S1yl+0%$;#5{J{sy z{jqAh{Icr9)$dOWFn07`A}cw~^_|x9T_!ejOeVMfot|FBaeA?;u(QX3X7e`R?QLH) z|GM$M>2UP)37Id{m3yHnQqb#+#%m)cDVE-u-_Ip|UbK$)%b|!XPfwoP%OusDY4X|V zB=4VP+4i*;8@BYhUdc3`#q&6=bWwWlV*TYSmE&#S-&`<fW~doY$THbzaqhj|*>AtE zlKir5%Nn)r>SUuk8fB7)+q^Vnw7!N3{;%Kirc5SNrDFcuC*P$ezq8^=l?=?A)Zv}r z#^~7<`bIDJ(}a`lyKl{E|Hp9j)?r(4CTm}0r_jF0PO*KFol^TEJLUF8b}H?Q>{Qzq z*{QWJvQuwgWT(--$WF6;k)2liB0KH&MRq#vi|lmU7uo5xFS65bUu0*{zR1q7eUY6} z`yxBz_C<Ck?ThS8+ZWlHwJ)+WZ(n3*(Z0yevVD=ARr?}4>-I%<Htmb-Y}*&v*|jgS zvu|Hy=g_{$&ar)wom2ZFJLmRAb}sFU>|EOy*}1hZvU6`=WarVo$j-BUk)2ojB0KN) zMRq>zi|l;c7uor>FS7G*Ut|~1zQ``HeUV*I`y#vG_C<Cf?ThR}+ZWk|wJ)*@Z(n2= z(Z0wovVD<VRQn>k==Mc+G3|@&V%rzl#kDW8i*H|Km(ae*F0p-)T~hlZyX5vob}8+P z>{8no*`>8FvP*AYWS7yt$S$*ekzH2%BD?JNMRqyui|lgS7un^tFS5&TUu0L%zR0ey zeUV*J`y#vI_C<Cj?ThS6+ZWlDwJ)+OZ(n3r(Z0y8vVD<VRr?~l>h?u;HSLS+YTFmt z)wM6Ot8ZUq*U-MmuCaZQT~qrayXN*qb}j9T>{{Cw*|oJVvTJW&WY^KY$gZ<}kzH5& zBD?PPMRq;yi|l&a7uof-FS6@zUt~9-eUaV7_C<D++85bPZeL_KrG1gz)b>So)7lr= zO>bXhH=})#-OTnycC*?S+0AZWWH+aMk=@+(MRxPr7un5kUu3tSeUaV5_C<D!+85a^ zZeL`#q<xXy()LAm%i0&&EpK0Bx1xQK-OBbwcB|SK*{yD0WVfb$k=@$%MRx19FS1*2 z`JT<d(#XWfZ2Cjp4YE-7b{4%2ef&X2&Q7L=j!tHlmIh8v29~Z)W+twN22Q3%7KTQa zP6mc{3N{3l#B%BTq~@iUWGEOK8Cy(etdQ2ISDlvc6P7B`K401~(7{E3m4&aXh=sA% z(8a}twI(!#MI=Pz%B`&01heqjYc0d`mTwNtK6f!}_114|Y+s*$=)Lt>RPk%?$l|U0 zzUObfdOT`t=<LG3e~RAjn}5GD?wsZKuXg(9b{_i8dTtLh8`qp-*YDyRMRb^tCRi49 zi|-an_pJZt?=HG=arY?)#*8Fg_pK}<P04F=muoS3iwmBLyzRD|M`Ux@(J1w|MH`y7 zN?o(c@OIG5zPo1Y<!OymyK`d>-3q%^w4rNj>6)z<!y2wGxHRW(@w099E8HXU&rMyu zigD|LzTB+|wz;Aa%&X4odX{{Q+Q65?@by{E^d`0oC*tl_)SIp_`hL#-+$!#OR?+4g zBCf{BmxX=*(zN;4Pp#bBJZ7`1f9G#Kn;=~MdPS6D_tn^$!BWk-4)2$qeKqe_Xro;G zdspTcTUP80Z@jme?E>#Eovg|aKdcWp|5;eIDsIE&Mcc}j+9rs<VBf9#YRB>g{BIb4 zAB^iR3K!vNs7;WN*|5U8etm)fPvhYS3tad1a(#LrV8PcHvE_MRlVHJ==<E#{AH3K0 zHV1Zp%MGYz>WTdFwmeJyV2f+~_tmzXevO+GP8HezTl2ugB6;WiqO9}-Tb|Zc`n|O* zkc(m3JdJ1H>IY0aI_hW0itT4R{!WPH2|w$!zLFQ!S3J6}EW9x3BUfzGcgOmB$%Pu* zQi@_27qNHl<C+pxR2IjW);^Wtt5d70@qEn#j{-O+n1)1uDwxSMhsQ#4g29!@Pd9v7 zBV=Cf+}gpF?7UdDc&pdeYb+BCa<)7<70orlAcyIPc$Ci0UA~O}SpRVU5Wl6fvn(3Q zw$j~cxP;+9)4$fa3r<h^Qp{TaL;T77cM0Y%Ha=0URb_s~I)|s)alWc~y6A$q11Ad@ zcp^S^<#4SKFEEl}X`Z&{*L<cc+!m634SQ7AZ`W|xTQI}=!f)q821zGp@7K2FDyez7 z_F=rl)+c+Ty*}#qFkayno>uc^I@1;I72*N<K9NPgcQ9SyPS@G_d2iGe?#t6^KGjc- zf=Hf;nst96!`DNueOpuyL{=>ly`FUL&5i?`*14_RKCw(vV@t^+_ShhnX-z=^IWMp1 zvYtN3wczlkGnX=Jz1Do5^4ap4L!Y+J+@B5yvjR9R?mRM`7H74lAz3eu`-0B8tzRZy z7b%!>?DfvAX<BtMkJ!BBWkXL{O1^e)sh@21>_E49#IGL{f^2)X<ucCJotqtYfhp+% zUzBd`BW>2)1nnDqRywttJRQ|<uodW@i>xXQaumODQ1(Utd#1b7>^`?&n!AAg4ddQv zarKS|^Dd-k1}!X;f3f|`u?@HOCNRh_upg{D9ag`lgoCHqv4G`??&^JOz6dxR|6w7q zam};(c-A>B8-4EhnDV*luKw@#lGA`q?O;o)?|W?vND|xRTg>IxY+Q3sYL%ox?#)Nx zb6?3=@ar{3p0<h$D`1S-()!I`RmSR<Q$w1Zxy`ytl`lsb&i>&#UG*-@y)#w#ddSqM zvYkPpGgI~LBBC>I{`tJ>ly3Fo$k5d~zaJgESI-r#v1=Wdu&rE$%?FN0(T!;<nO*;@ z7&xA1v0eOiZ^Of%b_YUg?GsYwO{`3N`JK7#`OJyw5YFcY$I7|VJ{S5K{zhfG@tp5x zQhR(nCo#KubL+ms@Ah|BM=Noq=A{&u6s0ESf>`-USzN^>iA5z9MX70AhK8mlmgb!1 MmRzc;uKsRZ01h`#-v9sr diff --git a/20220613/bs-20220613.tex b/20220613/bs-20220613.tex index 5de1ad4..3a6e00a 100644 --- a/20220613/bs-20220613.tex +++ b/20220613/bs-20220613.tex @@ -237,11 +237,11 @@ Wertvolle Ressourcen \begin{itemize} \item - Fähigkeiten einer Raumsonde optimieren - % (Marsumlaufbahn: ab ca.~127\,000 Euro pro kg) + Fähigkeiten einer Raumsonde optimieren\\ + (Marsumlaufbahn:\\ab ca.~127\,000 Euro pro kg) % 70000000 / 550000 = 127._27 % http://www.bernd-leitenberger.de/blog/2009/09/29/reduktion-der-kosten-von-planetenmissionen/ - \only<.(1)>{\\[\bigskipamount]\strut\hfill\makebox(0,0)[r]{\includegraphics[height=3.5cm]{curiosity.jpg}}\vspace*{-1cm}} + \only<.(1)>{\\[\bigskipamount]\strut\hfill\makebox(0,0)[r]{\vspace*{1cm}\includegraphics[height=3.5cm]{curiosity.jpg}}\vspace*{-1cm}} \pause \item Implantat: Platz- und Stromverbrauch minimieren diff --git a/20220613/bs-20220613.txt b/20220613/bs-20220613.txt new file mode 100644 index 0000000..240fdb2 --- /dev/null +++ b/20220613/bs-20220613.txt @@ -0,0 +1,164 @@ +Wertebereiche von Bitfeldern, 13.06.2022, 11:58:01 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Syntax: + + struct { + unsigned LEDsR:3; + unsigned LEDsL:3; + unsigned reserved:2; + }; + +LEDsR ist ein vorzeichenloses Bit-Feld, bestehend aus 3 Bits. +Wertebereich: 0 bis 7 + +Dasselbe als vorzeichenbehaftetes Bit-Feld: + + struct { + int LEDsR:3; + int LEDsL:3; + int reserved:2; + }; + +Wertebereich bei 3 Bit: -4 bis 3 + +Warum? + + * 3 Bits --> Wir haben 8 Werte zur Verfügung. + + * Welche wir als positiv und welche als negativ interpretieren, + ist Sache der Konvention. + + Damit die Hardware mit den Zahlen effizient rechnen kann, + verwenden wir kein Offset, sondern behalten das Bitmuster + 000 für den Wert 0, 001 für 1 usw. + 000 001 010 011 100 101 110 111 + - alle positiv --> vorzeichenlose Zahl 0 1 2 3 4 5 6 7 + - -1 bis 6 0 1 2 3 4 5 6 -1 + - -2 bis 5 0 1 2 3 4 5 -2 -1 + - ... + - -7 bis 0 0 -7 -6 -5 -4 -3 -2 -1 + + In Hardware implementierte Konvention: MSB = Vorzeichen-Bit + Vorteil: Die Hardware erkennt anhand des MSB das Vorzeichen. + + 000 001 010 011 100 101 110 111 + 0 1 2 3 -4 -3 -2 -1 + +Aufgabe: Welchen Wertebereich hat eine vorzeichenbehaftete 1-Bit-Zahl? + +Lösung (per Mehrheitsbeschluß;-): 0 und -1 + +Überprüfung (unions-03.c): Stimmt. :-) + +Begründung: Das einzige Bit ist gleichzeitig das MSB. + Wenn es gesetzt ist, muß der Wert negativ interpretiert werden. + Dann sind alle Bits = 1, was der Zahl -1 entspricht. + +Was ist ein Callback? 13.06.2022, 13:15:47 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Ziel: Reaktion auf ein Ereignis +Beispiel: Ereignis: Bumper hat Hindernis erkannt. Reaktion: Anhalten. + +Weg dorthin: Bibliothek stellt einen "Callback"-Mechanismus zur Verfügung. + +Wir schreiben für die Reaktion eine Funktion. Hier z.B.: anhalten und blinken + + void bumpersStateChanged(void) + { + if(bumper_left || bumper_right) + { + moveAtSpeed(0,0); + setLEDs(0b010000); + startStopwatch1(); + } + } + +Vor dem Losfahren teilen wir der Bibliothek mit, daß sie diese Funktion +aufrufen soll, wenn das Ereignis (hier: Bumper löst aus) eintritt. + + BUMPERS_setStateChangedHandler(bumpersStateChanged); + +"Wenn sich der Zustand der Bumper ändert, +bitte die Funktion bumpersStateChanged() aufrufen." + +Später läuft dann die Hauptschleife der Bibliothek. +Diese ruft dann bei Bedarf die übergebene Funktion +("Callback-Funktion") auf. + +Variante dieses Konzepts: virtuelle Methode überschreiben + +Beispiel: GUI-Bibliothek +Ein GUI-Element hat eine virtuelle Methode, um seinen Inhalt darzustellen. +Wenn ich ein neues GUI-Element definiere, muß ich diese Methode überschreiben, +damit es seinen spezifischen Inhalt darstellen kann. + +Die GUI ruft dann bei Bedarf die virtuelle Methode auf ("Callback"). + +Beispiel: GUI-Bibliothek + - GTK in C: Callback-Funktion installieren + - GTK in C++: virtuelle Methode überschreiben + +Wie funktionieren Callbacks? 13.06.2022, 13:14:34 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Bumpers State changed handler: + + void BUMPERS_stateChanged_DUMMY(void){} + static void (*BUMPERS_stateChangedHandler)(void) = BUMPERS_stateChanged_DUMMY; + /** + * Use this function to set the Bumpers state change handler. + * + */ + void BUMPERS_setStateChangedHandler(void (*bumperHandler)(void)) + { + BUMPERS_stateChangedHandler = bumperHandler; + } + +Callback installieren: Funktion BUMPERS_setStateChangedHandler() + +Parameter der Funktion: void (*bumperHandler)(void) + "Funktion mit dem Namen '(*bumperHandler)'" + --> *bumerHandler ist eine Funktion. + --> Das, worauf bumerHandler zeigt, ist eine Funktion. + --> bumerHandler ist ein Zeiger auf eine Funktion. + +Aufruf von BUMPERS_setStateChangedHandler: + + BUMPERS_setStateChangedHandler(bumpersStateChanged); + + Wir übergeben die Adresse der Funktion bumpersStateChanged(). + Insbesondere rufen wir die Funktion bumpersStateChanged() nicht auf. + (Um sie aufzurufen, bräuchte man das Klammerpaar.) + +BUMPERS_setStateChangedHandler() merkt sich den Funktionszeiger +auf einer globalen Variablen BUMPERS_stateChangedHandler gleichen Typs. + +Diese Variable, ein Zeiger auf eine Funktion, zeigte vorher auf eine +Funktion BUMPERS_stateChanged_DUMMY, die nichts macht. + +Aber wer ruft nun tatsächlich die Callback-Funktion auf? + +Dies geschieht in der Funktion task_Bumpers(). +Diese Funktion + - schaut auf die Uhr: Sie wird höchstens alle 50 Millisekunden aktiv (weiche Echtzeit). + - fragt den Zustand der Bumper ab. + - ruft, sofern sich der Zustand der Bumper geändert hat, die Callback-Funktion auf. + +Verbleibende Fragen: + - Wie funktioniert die Abfrage des Zustands der Bumper? + - Wer ruft task_Bumpers() auf? + +Wie funktioniert die Abfrage des Zustands der Bumper? + - Der linke Bumper und LED Nr. 6 teilen sich einen Port + (Bumper als Input, LED als Output). + - Wir schalten LED Nr. 6 aus. + - Wir schalten den Port als Input. + - Wir warten einen Taktzyklus, damit der Prozessor den Input auslesen kann. + - Wir lesen den Input-Port. + - Sofern LED Nr. 6 leuchten soll, schalten wir den Port zurück auf Output + und die LED ein. + +Wer ruft task_Bumpers() auf? + - task_RP6System() ruft task_Bumpers() auf. + - Das Hauptprogramm ruft in seiner Hauptschleife task_RP6System() auf + ("kooperatives Multitasking"). + Ohne dies würden die Bumper nicht funktionieren. diff --git a/20220613/unions-03.c b/20220613/unions-03.c new file mode 100644 index 0000000..d301f78 --- /dev/null +++ b/20220613/unions-03.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <stdint.h> + +typedef union +{ + uint8_t byte; + struct + { + unsigned bit0 : 1; + unsigned bit1 : 1; + int bit2 : 1; + int bit3 : 1; + }; +} data; + +int main (void) +{ + data d; + d.byte = 0x0a; + printf ("d.bit0 = %d, d.bit1 = %d, d.bit2 = %d, d.bit3 = %d\n", + d.bit0, d.bit1, d.bit2, d.bit3); + return 0; +} -- GitLab