From 8253fed82cdcba68071bc00811fba0f93ea91393 Mon Sep 17 00:00:00 2001 From: mariusmonton Date: Mon, 4 Mar 2019 12:02:29 +0100 Subject: [PATCH] Two seq. diagram added, for semaphore and queue examples --- capitol_4.tex | 20 ++++++++++++-- imatges/QueueFreeRTOS.png | Bin 0 -> 20108 bytes imatges/SemaphoreFreeRTOS.png | Bin 0 -> 15154 bytes plantuml/QueueFreeRTOS.plantuml | 41 ++++++++++++++++++++++++++++ plantuml/SemaphoreFreeRTOS.plantuml | 36 ++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 imatges/QueueFreeRTOS.png create mode 100644 imatges/SemaphoreFreeRTOS.png create mode 100644 plantuml/QueueFreeRTOS.plantuml create mode 100644 plantuml/SemaphoreFreeRTOS.plantuml diff --git a/capitol_4.tex b/capitol_4.tex index 1378d33..f27f630 100644 --- a/capitol_4.tex +++ b/capitol_4.tex @@ -269,7 +269,7 @@ \subsection{Semàfors a FreeRTOS} \subsection{Exemple amb semàfors} \label{sub:semafors_exemple} -A \href{https://github.com/mariusmm/cursembedded/tree/master/Simplicity/FreeRTOS_Semaphore}{l'exemple} hi ha una tasca que es queda esperant a agafar un semàfor i quan l'aconsegueix fa un {\em toggle} del LED (Veure Llistat~\ref{semaphore_task_example}). +A \href{https://github.com/mariusmm/cursembedded/tree/master/Simplicity/FreeRTOS_Semaphore}{l'exemple} hi ha una tasca que es queda esperant a agafar un semàfor i quan l'aconsegueix fa un {\em toggle} del LED (veure Llistat~\ref{semaphore_task_example} i el diagrama de seqüència~\ref{fig:SeqDiagramSemaphore}). \index{TaskLedToggle()}\index{xSemaphoreTake()}\index{LedToggle()} \begin{lstlisting}[style=customc,caption=Tasca amb semàfor d'exemple,label=semaphore_task_example] @@ -283,6 +283,15 @@ \subsection{Exemple amb semàfors} } \end{lstlisting} + +\begin{figure} + \centering + \includegraphics[width=0.85\textwidth, keepaspectratio]{imatges/SemaphoreFreeRTOS.png} + \caption{Diagrama de seqüència de l'exemple amb semàfors}. + \label{fig:SeqDiagramSemaphore} +\end{figure} + + La funció {\bf main()}\index{main()} crida la funció {\bf BSP\_Init()}\index{BSP\_Init()} que configura els GPIOs corresponents als botons i es registra una \gls{ISR} ({\bf GPIO\_EVEN\_IRQHandler()}\index{GPIO\_EVEN\_IRQHandler()}) pel botó 0, que ‘dóna' el semàfor en quan es prem el corresponent botó a la PCB (Llistat~\ref{ISR_semaphore}). Després es crea el semàfor que compartiran la tasca i la ISR i tot seguit es crea la tasca com ja hem vist a l'exemple anterior.. @@ -334,7 +343,7 @@ \section{Cues} Per saber quina mida han de tenir les cues, veieu \fullref{sec:mida_cues}. \subsection{Exemple amb cues} \label{sub:cues_exemple} -A \href{https://github.com/mariusmm/cursembedded/tree/master/Simplicity/FreeRTOS_Queue}{l'exemple de cues} hi ha una sola tasca que fa {\em blinkar} el \gls{LED} segons una variable. Aquesta variable s'obté de llegir (o intentar-ho) una cua. Aquesta cua (anomenada {\em queue\_buttons}) l'escriuen les dues \gls{ISR} associades als dos botons. Una envia el valor corresponent a 250 ms i l'altre ISR envia el valor que correspon a 1000 ms (Llistat~\ref{Queue_example_ISR}). +A \href{https://github.com/mariusmm/cursembedded/tree/master/Simplicity/FreeRTOS_Queue}{l'exemple de cues} hi ha una sola tasca que fa {\em blinkar} el \gls{LED} segons una variable. Aquesta variable s'obté de llegir (o intentar-ho) una cua. Aquesta cua (anomenada {\em queue\_buttons}) l'escriuen les dues \gls{ISR} associades als dos botons. Una envia el valor corresponent a 250 ms i l'altre ISR envia el valor que correspon a 1000 ms (Llistat~\ref{Queue_example_ISR} i diagrama de seqüència~\ref{fig:SeqDiagramQueue}). \index{xQueueSendFromISR()}\index{portYIELD\_FROM\_ISR()} \begin{lstlisting}[style=customc, label=Queue_example_ISR, caption=Part del codi d'una de les ISRs] @@ -349,6 +358,13 @@ \subsection{Exemple amb cues} \end{lstlisting} +\begin{figure} + \centering + \includegraphics[width=0.85\textwidth, keepaspectratio]{imatges/QueueFreeRTOS.png} + \caption{Diagrama de seqüència de l'exemple de {\em debounce}} + \label{fig:SeqDiagramQueue} +\end{figure} + En aquest cas, la tasca fa servir la funció {\bf xQueueReceive()}\index{xQueueReceive()} amb un valor de 0 a l'últim paràmetre, que és el temps en {\em ticks} que ha d'esperar-se a rebre un valor en el cas que la cua estigui buida (veure Llistat~\ref{queue_example_main}). \index{xQueueReceive()}\index{vTaskDelay()}\index{LedToggle()}\index{TaskLedToggle()} diff --git a/imatges/QueueFreeRTOS.png b/imatges/QueueFreeRTOS.png new file mode 100644 index 0000000000000000000000000000000000000000..d7537b7c130a2b238b6c54f6fd5cf5eef50cbc39 GIT binary patch literal 20108 zcmdtKWmr|+7d;AyG)PDYQqo<5f*^v@4TnZT8V}tdAT8Y?-EruaMnshEMmnTKK)UWa z>f68nz0du2pX(Qdea_x1=9+WNG3MMsit-ZJ7^D~o2ng6xlFyV85RfDh5D+cVkicK; z50MtY4<-jO4F^MO8&{~Yi35U!v6Zo%frGIT)eBcDGY1D70S*ousDYJ(qa~Ex(ApA@ zlm9Nb3zi#1!{Lv=BOth>#Kq`YPjlY>IM25FNXMKbgNbo%0A=WYoM=I}z9LeSTwL<( zy`m12@V?;Amh-!4m_`o6X{=w|`|DdDwmc{_kxn++!41se(19ktK+ie(lJN%DQy`}( z_F^dJW#K~Vx}!i}UWu3%OuO&}B)9*K@bVkX3+EUy4i>twH`izlU(|Z2RWLu$v>1r$ zVL#k$jl)ChJNyO{vTk0zhWb(kXRa25$jw}{w7*SJPQ;4 z`N?M+es*Naq;G5!xLK8~<##FV<0aTB8B1Jw&(ip2KgNV{TYb3OFW$GLJadmvlB@3{ zM*DLZ*WP>fd{?@da!GR&i-BA=XMZHZ2uaHHx0)||2)ibeJT!Vyt&&3%HSW|_>fv$? zS8e5v^#@YXwj$;~dX8(kv2BEaAd4dPOa$VhyOWCUa$9x$n1!6`iDWww(H)v|lGp^f z71d{omAGism>G;T7)YMJ!8BjX8ABvree_2}M5i|LjYP)t#zo~MLF0}ViB$C-LZGKg z#-;jTv7fq079#EFc)TN@+t_e^?cN`ge>UD+*SI-rf9(jfYVe0!cv~25>`n0VHOmcy z8wdysYELG?Z|?|k`M?jWn||2fk~X5j4OPZRu6eYk>k2&+lu2=tUgpWtv2h3pPd+`F zeEoTc#aLn~hR>NYib)V^k=z&|h@UR%7~2P~dp(&HOxxdI4&j-&8NiKw-n+X;?%R30 z<>c)B+ucFE={)?}m(TT2_CCHWXsJX+Ko}&z<%?L8pE|S-kblt-H{om~Wp$QH=D)h? zzA8=!k$2au0ar5By2HWEAAp+^59hN9iPfJqDYfc7*2^5^QOOp7#B8oRk-2V6*gvqE zRXjpNKoCG^Un`7FsM2A}zswlUzP=yFrJ9`t(R;PYx3C($v@|@d{Fw~li8Z)kEEub1 zX=j;5bZte`&Q{?;NN{j}y6`Q_8wg)9(2^PK&ZVb_`$Q#ET)sU?BCW})ox)C^Ox3g5 zp5!tEw@?SSh@#n(g4Vn#G_xhumf8P!Fygc`ee>t{9Ss^C4mKy~<{KNHx46o=>bHGf zvs$_?id)G`W+uv4(zcB<+WL%5#`k2##U>(gxPH%1@b04ivTg8M0VbITDK&M+7~Ay^ z&sA^4W#>;X9ZKYinyn;2$AjTzow9Jl2J`dq-@47{kgU z8Y)?Y%KcAS<+&2*cevQi&6WBEGSBjj3=!$HXHdiW;#iVdIksIl8Fp$k-@bjD{J?sy z&RS1O3O$<7{@p9tjoEikDZ*`1Y#)i)vtp2WRBjuvn-{%EaTGlqQ0N(tqPldS-OAH4 zj@j|tbKGROJbf@cJUm|dywT(Q$naA*wK-2<&nGaFM_?qM?$m*ir26kHr>s10bW)-h zAz-H?NVLBrv7{myd8CkP08{0gYH4kiyEMY`V&muMr=g*F@E}3{@bq9kZWlH5U*nn8 zoHQ|Joh&zas;jGOU_hZt2v+yuvQzNdyQ*?IxipEl$a3!-;+A4OWu(XraSjK4)d! zTRlglVW(6PcQ!*6&y~lwR*7-?#Bw4xM32TJCS>vmX=YT!&TGC!g$&C0$TztEmym zbKm;cLxAD6k4He(lO^mZJd@l$lX9WAcLx1)K~dY+f=F6fxCKY%c7p{^-=2i&Xd+%# zDi2dbQ~tGJP`uh|lJ|ErE#m?qPva?QLU*aF%^6!ZSZ=W#ORqH%Y%<@~YoZ@1wLWgW zSWcMgoFDBc<%xr^@$e9YNVq6QFxAsxW%&_*19s{Ve!J#4< zb3xKYO#U-WUjYp77EyBRMP0AOLeviYk^Vv?RT-5>fwRXCGJ}N~`xI>c{e7`< z>wzJJb8fTBPt7OF<(sRo|n^KJ<_2x7kY18 zM5&=;A{RonOmF$FD98$@r`=KCz>ZpJq(&qsxw*N^XVXzxxDL&82CG}XKgoEwTO3NL zhK09uj)}M9zjsSjEix~8%(gwWMf7sI{q>P*cUL?XKIs@?LpAPW3xy7ODxTP^oRZndF{+oI@a|*ur6WO2zS48q>guahUvmjNRD1}!ip+M zndnmQwhD-9JTg|F;`3|rB+rZ#@0$C{=7Qe7W;^=3^=6@5<*;#IvrrMnL#08U$6m8%tBGUYa#5kt`ggDdq z#@=Y%OV%{gCaiX?$UKq^(dPwpQEmUXpPeNDRyQSOFEee$>Hy}rUf;E3e!qD zPDg$48R^U3;JokE;E{^QuYFr3zM)p-v1 zfs*r=<8BZ@GiSNzYTb82&Mk=T3g^o^aQK2}-^$4WVU55fx_H&G6*X$M*nA~g5VXK@ z7DeVKhsl2FW_9p7L9B$kl#Z!O?!hG`0@#OItsHLk^QU8Kr8-Qlw_LIG3XLgbxZ+4@ z`l$w-)Z%;kHeX4nk~I05$_ix4K$#Q1Q89()$89!A**l+i#?7exoDRDU)9%KER!SKg z#E`Gt7gteTlVK(xa-xuCMJRDP^8BN-!Rei;9EqD89E&P3vD2f^3|>;N5jyB#qP(HI zXjk)SwE=F^LVU6^%tAr;f=YHaujheiR6xwN11e4{;ZUMeL=pPEU+Q(0j|0IEdJ4I;OM|CHEv;~K~?Hsiuj$_HS7hE zYSzVzP7vu}zbzl?^zHN0^}>H};?LGN?YRhisTnhr(m&+b$o#(hrLE`nRicJ`_k4-} zU_l!0loG3^x$MFGgU1ZXl%?ApqQZ6rRM6=s{Ax-{L*FiZIMUMNr|2t{KinRtSJs)b z*15r?&bvWR>si~$9RH%*fjP(AXQh3VmK>5a}(mvxn8A$*l(b7T2Bq+;}B zh{)LOlIVapBW5n{dsE2d%OPKO)nc9oWo%p~L&-#S^TQ*LGc4YFw`U&*lc7f~)m-IB zyd#xvKhk~kFtvZjI=S3fec-1Z?)Zg`hD5IpI<+r}yx5f1tg2fqbvEaC{-pyYB;uab z;$xgL9RzMYC-kqkby>w&!57yUvZ;63g$9WmL4R`<(E=?kuvkG&JqWj9!PA4<+g9du3VGIYb`U zdtwQb`==1c{pjwU#v7d@(uXDH_qOzR)N;T~A=<`d>KTLVl)K#wd&)Jcw(T9dOVtMr zQ2B(=M=Oq-Xs)+lNBbX^D#}Rig}Nv$NDS{KTG)}+Kh-|#hr+N2~d|z(kS{Jx6`Ib-h)L-o4^hrZVRxSOl*)y6f z4<bWLxtwv}LJ}vSHg@ z7;^VQ2>MoGius_Ftt0vLw!{JIo4Ow*rQCJX(r%ayCJJ|1b<K!4Ki&>24G3_8 z>CDCO%95N4i`wh$={QHS9Y2`3HIw_qO_uq=daB}te@754tf0VbzQtpv&U&D)?|Gfo zm+6|9RmOud%sI~?-Y_NO0#b%?Lkri~lQ!{-U1Hyp2zEM({LRQw`Z4rX@ zHk>7)2O}1}x?kz%aAgVvcJ?U(PaB_#G;l+Y=0d8#vW2P=!1yTe!YBN8N zn!CT;IvjQkM?M3vH9j_Wu>Kx=(8TB(X;^NBCw))AkpB&d$Q0XG!j!q9*}J>KyD}0W zl8sd6wM+Y4x%ObKAGX_e?%eM4F0Ut}6k-lAx7Jy?sPk+?@gQ|Q+n zr|NC^FZ}pqayIzu*RL5FRHt(7VBPCpPOvjG2RCmI=k}mdzM|Uk*euNN488NAwx_2@ z`0OhUYDk55oqwT3w z0mtcPcV|saO;1lxef@>av7#yVb1g*ve=kw;`S;7?c}$;jt1kj#u2xp;al2m{>)M;1 zJ#Y2=GBM%2HC{5zu3Q`$iCb%_$3pe#pXl_4fjuQF=8X3ZROVip+g%i6dwefANt&8E z$~K@gwQNNu|A(*41{bRq5$%+4Mim%*2;d5ut}?x4KD_uLF!#CL_RE_q{{o||7}{E~ zCtW&2Ut=C^_z5IXKMg2grw9rOG2}Qu+sq3l-j{F(j!Y{!(G`fZs{1FgO^9D>hdQ3xhV2Zw}c`q#~SHac#NLp)FSSL^N9 zm0Rf8ZoK8U&ueY<5*HUYH{S>%V2Eec$9n{H;eyj3A5Q`_UCw6}2V>${~MNex5IT45J&dv9Y0K55A?jf8!#-%6Zc4e*D<| zsJQwV>=BJbI20r)MQSCwo~OpqLQ+|8K86rGZ;lqqrwY&-R;yc>!B z3Z9vuw5r^H-%!3YQx{?61k#=#UCPg~&w77!Z5)g!xhy=8`O@N%%*`jA4-&MzS=5w3 z8IYS*Fu`*({g|I$Ra(=~(2z_I`oT9dmN6ikp7QvbYdOMzIRYEObYU1AGAIT(WL%Rg zx8=&&q5G6vT_Z^e_@>Mu_r>0f_ANTK@jpmlsLUN2~KWua^gGOoPCe(hh2csihv^SQ~LVRL+^4#!Uf{CHpxLk8&n2)B0g5- zL5A;``uenAG2ZzSFkq4aN+W~q-^>P_^mwQ>nKRGLY1)m_c4y%Z?;l?=MN8heRU(aI zFoJ4>{Kp^B$P^L75wJp$pCdZkWIZxSe&lSWtgI{|;$2B+L-mI8j{!6g)V}30W!EUz z2ZyXXzRjD;6X6Dphqe76T1F z*gB+k6i6G7#UHoC<;y@)BfRmq`Qi${_KwP6S-_E}f(v<%GfN~hg-xmAz3F7aGBN^Oa{^x}LnmK%!|G3Nln%A!>*Wa3{wcHvjBAy9< z^G2h}L~iVo@3raZUy~B>F=FE4Qqt_k=Dl7D;g~!MCx0a1w58FFTaep8_{Q5ZG_`$1E%?L_|d7G3iwtFS;W+NiUxwNoH(p zj7iLXp9Bkp2Z)*-zIF5A`1i#Rt8~kqVeT8b2`h9Lf8Fw{(&U`$dTIbRSzdmA6@9iu z#J7pE`P4_w-90@_m~S}^e43uZ)^>KDLmo1(8>1BcUwo!O^l4n6V{Sqjl#^aglxh~RehI!< ziBV{9+Udp!O82^Y`z)3`yS|p1ntE?>8vRx(h90bWm{C{w zS#W5HT8Y-DaB{=GKHi|DR;g0}XsG^^V&SSre zfvr`^#-@Dfbap-6Ypz(6#}!@pujBD7zg^tzDH*wd1C=X?orabN2M1E_lHM>UO_2>u z88wK1uqE)h<#y4CUS8KXP;n-e^xQhdBa_xvRzA-p@$tLv)5cK>d#1!`m+B}v?tKP( z#Ke=0-L10Qxcm4>a6nYs(jU;AI>eV4WX9&S6cNH#??%T(JL6MQbPU7`oVF*a3!^%~ z&TSWP7(;;-g@lA`O;s^8yZhUsXH|MvbRF%?G&eUB$`JIamKHEW^?-Aap_j9oYdQtn zb`u%-;<)v?X13Pr`igWe7#RU!LM*?%7C?*g^76^a$#^zxdOEs_+O@QbvC`+sUy7jf zEkenwLAx#I@|+lixpFAJi@*f;)v&a;deSSD`aqJ%KubGVTTc(WlU(0TsOle9$u<0? z=H*2AU4FZZlfB|W(V2~r{A6~DC{iSZ*XtQ724uVz5F4BC;4>{(XD@|?h0XUC!F`y7 zvjy_yQyX0NUTA5N8uJ{i^%=Sc;*gUP5Il{xU+M?~$bcRKp&%zGzjMd+$Je3C%F6b3 zQ8(A+PV7gUJ^o=CSWLhwqnR<~3d$AIA4`Pat$%g84{*~Y51)M;;q@mz$Ia0ekMr>| zJ+I?$Uz9WJYu%5w&8Mq3KxoQM0>^Bs$+hYSJ_3RuvJl2h4@awP)hUSE8ZrF#YqMV0 zmrx<<3XgLq{7e*V(nuUvS66WCq*AYcj40&X8$EiDN~u$66hsRFC;P3Ss~zwr9v&X6 z*B_xTJ^ag`H@n4E8v!#XN{URoJS_8SKAv-DYR+YXc?w$@SlR)F!BtF|>Tps};F!$SE`YdI79=(X# zR`2grT|W>1)2}W~x1($uJ|B|bH8#*i&)iWHesJBUHG+)u=P5;QU(1ZF9h1h&CZI?p zRTpMbj%uU+Gqik_pIqxtO^%I)C@N+^(W}LW`6|z(d`a^=q|xvG<&L4_DvSPOpCmGkpIb0wMW#w1vA=-|I2iE!drWNO_$zijx%nqjfj?$I^bq~e zF?MvpqdtNe=AR17-@-7!E`peUe+L_5U64`NvX##{`&Wo+1A^#w8=T%!5#U z^M8R3@R@(-fnP5IAsKiH6=mfWcU7hPQZkK?&SiGR8mFtx54NiYuFmJL*Jd$w zh{0xMbSj~d&9JkuXuq?`e6Rn|>>r>drOH=5y& zc{xH@K25M5genji`3H0t8sNegZ#b+Rul4$>v98WpTpYzRAt3=I&u;C0=*lejgoIL= zZxa%BVbb;TQhNy4E0$ADa{n83U z9t+)>t+%(ewH0zd%DG$A{^BeyC54qEwtTR|uJZ^ifYz6yr`2|WGeG%c26me{CaFls zw*&x37}*1PNy!4v>$YN$d4NnPidb4P=KNdZKy^@EU7f!v)az^{omJ2<=4cbQWOnfg z4rsv{GvmeYMJL0fq@=uk+u>kMZhG#WEe)MEk7>Ukhyozh85tf%LP7%mlR=fw_(K48 zo?MQ9?65n?PeS&~AI!NtbyUsS)Fsb~do)Y&+n!3qeQp{wx*b}K8YR4`GS8{ZMoA zJ1Zm|OxNI(s2DZjRM(RUaBBDpE}5 zu_^R>3@}!~J4NmEW4$a>GwzoiT0QNBoSeKk(`qABoOj&x2+@T%2u?o6R4_yB*Zbw9 zrI{HS^$&BA`&p=SJe9+WgORb2^ZZJ$BjgTw5c6-ex^S!cTdwuK1)*oM!LcZdn$8BV zUWNBUm@fmtyAWYs5DALlxo5OZ#226jevuW?xBKbNzJ^&~kRiyUf*mSA^22^708+ds zgjCSBF_01>zz_^>l!pJ|f0w$ROgdm9#lX|SpDy)djCc745i&i)Prv!+<)7BKXG8^U zxar;X%iU_M_P*uup-K_<(yf152KKxJBo)v{_wK#uOX5{Mp1;|ir;VGK@~4HV+439E zsGk2jYmuhI<@@5(wgQg;f`K3d2=Mm@hkOhqA|P@yF)?+M@^*rlo1L9~_*(6SU3>>er!cK;$@s1Gc|!*L{m#Hj%1KcC4wn8A$79jlg>j zvq~NCqIc%XB$%B8o}{eh%tBESw{Rgt#8*D$;rq==$n}JtS1!i+(T?HaYQZ=|gTscX z^!E+|1x3%P3d2u*$q%abNAeX^c$u+qaCEE9qKpl)<@4l{$Lp-;0dOqVZ9W6epGG`1 z<9>+zko|y=^WKY9XJnO{*2^912%)3IvN8@w;HBq1PZk3mUSC~Z0m=FjP-mLF8*Hq1 z!!HaKp9(bJxpQaRSW;5*)vJpyFhW9^1a`p76g52qX}S(M8rdLz(ze;0u-yvUsu37b zesuuGEy~BT_FQsP`$@Dezy(Ul$`%6!i;Ig34-ZfH`obRYO&}2kAghz!EqODh*y-ya zwSd5x-u2nU;nsvEOMt~CM)qXnG)QNYmD8Q)JrZ)>2!(Hgsp{z5l^XTBI!F(saQh4^ zuQ3~1O15svq{&Ulv5D1+I!YIC45n3)t|}lcyh;;tmo(OMS-dIWo?}Yu4wAF%H2~F$ zlYS5p;YdVP0BSTuz@Sl*d#W)0NQFt%>(DU0j)(m{8vghDevkSLEiZ%0C^A-)Ar<-iqNCRg-h$kZxbG<}&FeDbyaT zi=+&1>IY;ZV-+wm1{tEDtIP9cwHz|V)V3dtaAKzMQq)xe&}mR8v?rb|COTRpv)&XM zYg6tX7yC*Q!L3x%UjKv?ocnZJ1%>nFPb{Y?uA~kdN%ner)80NOVR}a=?$_22taUkr8kl3Ac}W zz_@&UeZhu^^ZTWzr&lvu1Ck;(eaO!RkdGn69LmfDxVW6wbAq+bUk5XRecmTde`tG; zmevoQFirye6Bnlta;q*bE-o*R)CFPv!}!_9j~^i?VEZn?h9+?6<;nX02$k!G9kTSI zky!#1=MGjl_Ewal(8c!;7wzJT7y!w==uE2+d-g0*Z5fXbGcfyvBsS~j&6{7ETw`jF zx2Hy`%|`%tF5^B^ZBD}$tb|}N!sdjUmk;WXn7^N_E`_o5cuqPr6x%uK`R_HdN%rE9 z3v}rAzvWrKI^Ru5Be9%sNqtrTkUBP35PzpK5v5QR32;}hK20Xh)pmOyj8;?})CIdDshGdA5u0a5X z;sCC|qoF<#lh}ba*JLEFG>=wuj))>}9dOZbm!-JgqvC&#c=f z*uDM2?#gXra)=a0#V6Nv&t`df(`6(5YLbq6Yb#;d6uBAV`GshZ;wibT*mEbJge9ldt>X z_w4aTr-h#viq=HW12mgk;4c0QoFe`szq6-5!!w-Bg;#66E`pb>K@fk<27%)JMr8=x zM)o=hS8;%{{1XB!Fs-D|%|E0w0XZl}Kjcb2jrniRt&QVbch-lkmu#31STT2Eg-ouz zYhdVi!R}FU@&iBVtxO5h5ARGf!&XU ze2kCyDnh>H8wiL5^pwA#$lS$2g4cxn-8S03a@JmJF~}gy^zq#F9d5o<-=FZIlbynQ z?zP@5iPYF;841Msv~7~D>U(IP>XYBV=pp{koLU#1djGZ@;%{Um=ntUlWlXlLN_EwB z^L^;nqxDif6ApfV%Rb?W9&N-7N&qcgkcnDc{eA?kY|HXEhemzJp) z_aS}nf2}IIMl(!if%w+5VZNct0OrF`%{4`}%+=w<0X}O*CqxSpfXLYCp(kS|pY)6L zUc1|<&%_57nUNKe#xeNa*S^c^yojnnxZwf-*SpYi!W908ueMU?3oB0Zk6DfpOBRnY zZFrc|E8benP{PEIIv|X~pkL2L-_Ru`oRmts)rpHM!}u$<@Wy zsi6Hgyt_b>-*@}>Nu%;abp3hK5bg#P7{um+Rl@qvIHfK68RTRj0AOHX#Ihj{qJ|Uk z8K!7d{sicZ=I8oewe=iKpPc$EZwx%+43hR&YKTuwZFb((HI_m6;mzYGS1~GWg-*R* zmJt5ss$xEv@yK22&x47LAYpgZnvldswSj=I zaBW@ek<>62x&dU;ZLDgL58*CKA*uH9yq$S(wZhWWap>T@7cE<+P8cL?xMpeTg)t8p z!8boS+w&_cqy*fh4b~gVTOE)wW?6Bh>b`ogqj1>=S2!&I22(8vLpDn$ z;BrJ&1oQ@6@`z|pfvG0mK_BEZ&D_M%#{guDLg1xOZ6Qqa$uQrA58og)$Q1<1m6?Va zJXH-RCom9Dfk*ut6$3wtf6->}XCW6eqlo{dKmAWh#B4SE{{_<_7v&a{(Iv>tyvgBp z8j@ww>UjwuvVLh0Qr04{(6bDFNgWcp928J_#mm!QA z`7EbbmY1K}?{~#8aOk{?OiCgJf!(kZtB_Jgp=UQ%t1dp1HXRr~(l( znz&m@m1&a?E={N~0}6H@Ainlm)#UPhAPN9n;}H}TRQyxodP1&hV0cFxh#QQlSqXu+ zD2b34XRKS}9^|aR_0Q_!(qBF)=YyGWK!>uK=_Gs;R|L)<+-! z|I)~MGjaJg7Kwt?;Cc6Cl(C4m1Ztbx2v#9M@L8dR+gTJ zhX*86k^&a>=mdPycPRnVhikzAy937WF6_<>0B}o7OKwNoU1{c;pC@ySdT!fq5OW!Q zjs&1!q%%h0@o6_pndItP5~o3Sn2(Ro+2Iy3G4WG)!E`}3SSOIakUp?ViHuY3%dZ(}JPnKTm$&)rvjgZrwm#9*Rv5X%Lc$qSg*8y-{&@`(< zP+v|i>^Tdxt7pW3N|q>6{n$449%!OY@0R}nP}^BegFbL}91v!CAd4~P0BI5hKK^iq z$PE!(#*yys?q~}bzSVx4tmphb*u-4?kHR0`zPv}ww^TEsoBbTapwX@fI^b$s7=i>$ z@;%_Mtn`R&^T7peqwkJe z2WDON^}4@+vx%W_fuMi@)=k3+HP?)0e{EbLIOooMIqRq}zw}ep7!?R4=bfu$C@HVB zW?AQNnuYLKeH9*+wS=-!ex4*n$H3SuUiqMs^!sm2ly*DHlT>)~RotpVjgswnS8?vZ zCF4Pkr4;j_S26bp=^ppcJf2LKW0ste#r$IKJ{x{oT>?0lpO$p?aWm!gAdaUZ*)%FK zh&SxWDBL9<=T7o+`6ex3EfFL&Qh9Qd(kbR9oeuQ?qAM&vNUE?Zwsh$PX2>2o#t#=5 z0Gkd_adAs*TU7fgy;wtTt$`|SIjR!}8A2#>zTt6-6#8roe@xApFkiFxwc!oEYyq{` zs6J5(4lsUGnCHQpnb+17hIB=ZCdZ)Y_u&u}< z552CM>;iSCYAvE4JCi% z#LB@@rX_Y0%**%JP5qM+`vIqUhlprxeO(>Uuiw5j=I7)vz8ocyh@c1y568j60#y`? zuMuyUX{nEwlh>E~2L|?dNhj(uzf>pNgsWE2nb}22%52?cH^8sx*4yQdzS^B@mP@){ z@3<8Y83y?_n|7@vN1qY_4dNv7@AbK#-v8Ts_6xc0ulQpUE32s7KteL zYX>mZQWW{8Nyy9pXGIuxy;at#>0q?4L3Ut9j zQbH6|R1U4`&z0p$41ibN0!f!I3btCAt_LVC!lMyaOcKlgTECvw=u)vSV_rBte|1#% ziNd{iVj`gdp6&tC`l-MZAh!bUc=7%Nm^;Nq%i zZ&Li&(edorvkO2=kxBIgXqlhkn@i~hu4x1-XcwtED1P3kW>KJ(-m#V)@%Y7R>*W!dYBq&rubD3-EY9n2 zOx@0az^GWeF5FQx>oYT41%>nvt1JOB?nm^#u-Xn_^-Wgwye?}J5+;DwJK1BJ?%~uO z%LLUfO@#%1*py87W+w$oq=u^)FW>{of1PO3r<$aFFu3jwc|mO`BQIadNdp1mXk?yw z5a>k#g1QfPl~@ST9W0b+T+Bl$Xbu@HmQd+*Z~2o{8qiyFOC@uWU*6Hy(lTy%YRTjk z?NsrYiN9})dTZ%@$**7Bj<4L9zaM{8by7bZ*BFcyXXCfOQMTC z_Vf4u*x6YNo#JL<3L;E$?-WNzZB&=)3e0&j?{S=}e;XFVpfDWkvDkjol_j9$kg(cv zCf<$-^H9}aE~-N5v4!enj=V;v`0i(2W^TSl|FHKs`B@g^0@S}G4SkM$g>`fiAfv(k}WQ>%g^_6$ha<=CC~|K34_#W5?K|4fp81*cQW#X(JPeKyVbW4m90cLh+yNeL16^I{*w~h%1yP_X zE`mY`_(9G3`m;5^uxI|rL0+mkI+KhKJkB=qrJf_*xB)bOrc2Yhl6EzNE1TPt%YeZB z;gs`gn~r<|AfzcL5fKqkQIJEIK(ufNJwyC={PEGZjdFhf)|aNPdE)#B-Wk;3#I!z5ZC(^$J;3BCW0M72ut5rui9L9t1I$5NpCah46{28hw)~zqP74hl$Yo7|Y`t)MW!l8C zA4})9n3pz#Ft%#UU$CJnvRbaXIJ3JjTGM1zYc*cR@bQe!YCftEd_0IFcR=CU!+;TE z;)Kic4FEIu+Z(5A1$D$`B*)@I^wI{QwxhHDl=}T}C4yPM3jzM|P{2a~Wh;F4Nca8Q zZauDIP77`0;k?0GVMy3^m~)aB^Wy}#D)rA9d>lZ!4>Rklkt*@1WnOubM zkKFzVPW%%vt`_5PhgYj?4U(_sIQf(CAKLc!Ml(%qzGD^$ciLl{JCZ-P8_C1_vln#CZEaf9G?x( zo=mM_ZzogFKmqj>IKGfR4*uX=Gv&-2i*0u*I%mcf1!dSR zlD`ll7HnQHOR**x_U(18=HH+qQ65aqUFavkiYj7NmdyniLPBFuD%2K4v;Qoh{NUXp=!9?{ktX-Q1-~I^y74Ym1@8Z>(9D{ zUnJZAuB~V&f8OAFxD~xiu0P-;O6-Wt zGhv6yLjl^Q8p?&07)q>Hg+NKeb1VPCgKIVhHHYH9-YRRa0z1L^7%`Hw`Onu1UTQfAomM!ripT#jR8K@9v?vAC_N zL2{BH2MvuOP|_XbH{9M6tQ~_u36G#Ds)Q5hFWq0NTdDXs}%lfY^aZ0&tv|m{>&uz?G*9zPECk6@(5)6S)j0om^c{ zB`7_f#d*AX<>Tv1KtPadaa4n3r}G$8PtU@ur~BWfX7PVxh4QFh`pTPGSXekY@jYi% zBq|n^KVIsNW0{+q19k3cS+A}xP9gnPmfDd8Q&py*G};^}34r1N3aPiZcaeITN#p;h zAg6+U`v3wS2O3iDMesgIwwdP}ovr;{gBm<98_LScE=<2mR)~r+x30Cds67e)Put{U z4We35IS5HiV2l=mEn9ZzbAr->p&n4JRr$Xrg3EXOzP;qLR*l8b90oxUDIb(1rT~;# zMADN#ex)%@_vyb+0lkPaA$Yxb(`v4gyha;b?I#qX$pK5rE&JtmWk&svGW(4`M^eK= zBmf67*#p8e2=a2%Gc_;O>6O6zK?Ugf_Yb#z7tj}cik*!PK=Zw3t^Pq^L5A!_nQ2I1 zAp3w?sMgMUemt&XZHMmu0b#&Jy&Z9!Ge*;llxPk~XxJ9|9Lk>cb?u9w4R@wqJC;-J z5mfh#x16<&no`;$ zXZBPvdZiAaykA~k@^EuY%g89CJghM4iU#$8kbJ^OL%O`jVYidUi7C)-ucyXUv&s1lG*98xdP(;O@77@*E5KSOzmoN|&PkDGelp;w7u{sNn z*0iK+78_Tz6@8VPFqqSVI}6dEOWtBrSL8iq*tLzY(R)oY;jn#xiuQp5SKLumjV3oI zW?5YV?PdNpGrSY9jOO+*;}lu*O%4$a!E)(E{o&-ZCG@(%$Q{@Y+h_?L?Nz1`AG$X0 zWjp9f8G=lH#qb}>2p=rTEvH)gR=VNg#}|f7X`Lx{V{z&lk2~z@Gbw%O=DlhtRoa;`h&JdR z5r;0k(^uCc1Phv{01NFP@SheV3Y7|XV4zgh7nIV3&6rD%|t zN}esQFWdqnjbnP;*1>#IRZ)Kbo$h9IkuJz8t<+@OGU>z*9; zcf0^${aosqvE2H>hQ;S&i^P9)G!>RhiL0YhTlx#1s?UXI+>Ya(8tQaND}D6h8}XWd z@T%>5pY#Y9p=eUJrU^YXUc6Ug@HQ^n@Bip*SkwqE93`>7}}UzWf{v_oKIN)9K8xpd%PvYeSZnnV2ST} z3tsU3lxN|iR?u681Y zpOeQFzL&81k#QjB+KqRS(WlDp(8RY=X0e)rUOvaUoWk+>e7hM7u+DXEH3Sjfu{ac zYH|(}FMp)|(vqNdd-L>sNL~CqV+YG83HKX5|7uT@Zx%Mfk&8pKUY3eZUy@ecnU0(c-(Bx-F z{^>S@pTrd{Glm@AeQK<2syTa}lFn^^t0n9TKbQ)S^XIJzykYa$j6wxn?=LM`EGSn2 z7zQ$-_?u(+EZ@=oICT~3lMYrOoU?cTd@G6ypR*UAip%6EpYt{5POd<=$!oHN2&Pmr z=g%MT!g)a7K8|1CG82bzi%VZa8)u$D`l(Qh;b3Arv7Ye51M)MO8A!WR2_{xPcv;ER zjfJ*9{oV81?)jqqt=~dZmfnT>dN6}H=Ak(Py6kd5ijG;y5 z9%ZI%l$!ZiB>%QY{nNRpPA@O<@v5JQNE7xt95(9^0e zD#25T;TmSFPxzmat1xkx)@#Y1i{wgNn=>22#CadolF>ePB>QeBWov70&a@In@SiU| ztY6uv~us&xJNrnjFsRP*@8VPoI@yfLzC>3dU@Vy|jFyHxhSwA#OQw zA|!ul#Hy2&oU9G%d>{}AkUd}Vd`JBk&JJl`TUv`HfO$#t5h+&Icr2Ky)K_-3V0fgR zNx569nV75rlJJ2p9#;XzZ}liIZPaxMJJY;eg5cNw_~8KFlES~1sI;~D&H*$sCc`r^EIxiQ zf?`ZEIn^KLlIG^q-S)g+c}5uW2NWc{8;!6^(kd*m@6fS_zT!#qlWQQ`NIb_X4gXIw z{il@~4lr?au`a&lJg z;@Cp&DuRuL1rx}HgP_h#!LNj}u>V2CtJBYDo768m;Ns5D*9YM(JBtOkvTCL72KQoo zO^A!e0ZH&zY_#M+yH|TjvhJ;4yuw;fcCIuH^P*wKCMGZT(0;u%h;Z+CGS6uG${ng# z9geHI<0TQD7gcU-WTam&{Oc15kBlem8^erT$p(a^U?1#idYzOs%~>=X#G?be22p;# zo=CzTy!9vLgaO~&dx1WZ6JqSJYL~?l}m*11Qook zC<*YDvA2o6gd9E9+6ZLp9v^H~{mlb4dMtbe@1ZFF&nqVo5gL%%*ESTxRUwe-N39DX z>-omDLB*q-{xw0j)sM&~o^-3qHJ}Hjmmng1MMX>gWP7x=i_@<|KXq*F(QqE-1@&6J zZn?{2xbvo~h^DjbY~EDek-SCVp^0NeK99R_0{{2i-b?~eVR5_(OH3FEyl^!BfjoV6 z?~34Jknz`&;NbHZi>hJM@PqPb1c#fzl|D?k{*tK~gpu7;^1bh7Y@H>=qnDR@dBv`q zj@_NyFZ423WDP*4cma}XcDK8FY2dH#VM9chp5enM0`hbK>DJfQz#*^#dHa5P`p?$# zpI=bqMR+~;y4<_*XPbJrSC22U?9~Cm59K|~+rO_N(#g(2y!t=v2@8XM&f1?8$p7)J fT7N4vxTZwf=wQUS&XEHA2!fQD{IgO~eV_je*!6&{ literal 0 HcmV?d00001 diff --git a/imatges/SemaphoreFreeRTOS.png b/imatges/SemaphoreFreeRTOS.png new file mode 100644 index 0000000000000000000000000000000000000000..93967a70332bc8ad59456a847d43d11a193b197e GIT binary patch literal 15154 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 literal 0 HcmV?d00001 diff --git a/plantuml/QueueFreeRTOS.plantuml b/plantuml/QueueFreeRTOS.plantuml new file mode 100644 index 0000000..6bb516e --- /dev/null +++ b/plantuml/QueueFreeRTOS.plantuml @@ -0,0 +1,41 @@ +' FreeRTOS Queue example + +@startuml + +skinparam sequence { +ArrowColor #009944 +ActorBorderColor #009944 +LifeLineBorderColor #009944 +LifeLineBackgroundColor #00AA55 +ParticipantBorderColor #009944 +ParticipantBackgroundColor #00AA55 +EntityBorderColor #009944 +EntityBackgroundColor #00AA55 +} + +participant Tasca1 order 1 +entity Queue order 2 +participant GPIO_ODD_ISR order 3 +participant GPIO_EVEN_ISR order 4 +activate Tasca1 +||| +Tasca1 -> Queue: xQueueReceive() +deactivate Tasca1 + +||| +GPIO_ODD_ISR o<--]: IRQ_ODD +activate GPIO_ODD_ISR + +GPIO_ODD_ISR -> Queue: xQueueSendFromISR() +Queue --> GPIO_ODD_ISR +Queue --> Tasca1 +destroy GPIO_ODD_ISR +activate Tasca1 + +GPIO_EVEN_ISR o<--]: IRQ_EVEN +activate GPIO_EVEN_ISR +GPIO_EVEN_ISR -> Queue: xQueueSendFromISR() +Queue --> GPIO_EVEN_ISR +destroy GPIO_EVEN_ISR + +@enduml diff --git a/plantuml/SemaphoreFreeRTOS.plantuml b/plantuml/SemaphoreFreeRTOS.plantuml new file mode 100644 index 0000000..419921d --- /dev/null +++ b/plantuml/SemaphoreFreeRTOS.plantuml @@ -0,0 +1,36 @@ +' FreeRTOS Semaphore example + +@startuml + +skinparam sequence { +ArrowColor #009944 +ActorBorderColor #009944 +LifeLineBorderColor #009944 +LifeLineBackgroundColor #00AA55 +ParticipantBorderColor #009944 +ParticipantBackgroundColor #00AA55 +EntityBorderColor #009944 +EntityBackgroundColor #00AA55 +} + +participant Tasca1 order 1 +entity Semaphore order 2 +participant GPIO_ISR order 3 +activate Tasca1 +||| +Tasca1 -> Semaphore: xSemaphoreTake() +deactivate Tasca1 + +||| +GPIO_ISR o<--]: IRQ +activate GPIO_ISR + +GPIO_ISR-> Semaphore: xSemaphoreGiveFromISR() +Semaphore --> GPIO_ISR +Semaphore --> Tasca1 +destroy GPIO_ISR +activate Tasca1 + + + +@enduml