From 594db2b5165f9bd44af5dbdef6310da3ea65d0b3 Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Wed, 6 Sep 2023 15:06:36 +0800 Subject: [PATCH] [bsp][renesas]add hwtimer device for renesas --- bsp/renesas/docs/RA系列使用FSP配置外设驱动.md | 31 +- bsp/renesas/docs/figures/add_gpt.png | Bin 0 -> 23261 bytes bsp/renesas/docs/figures/en_timer.png | Bin 0 -> 30830 bytes bsp/renesas/docs/figures/en_timerx.png | Bin 0 -> 24013 bytes bsp/renesas/docs/figures/set_gpt.png | Bin 0 -> 61500 bytes bsp/renesas/libraries/HAL_Drivers/SConscript | 3 + .../libraries/HAL_Drivers/config/drv_config.h | 28 +- .../HAL_Drivers/config/ra6m3/adc_config.h | 41 +++ .../HAL_Drivers/config/ra6m3/can_config.h | 48 +++ .../HAL_Drivers/config/ra6m3/dac_config.h | 41 +++ .../HAL_Drivers/config/ra6m3/pwm_config.h | 68 ++++ .../HAL_Drivers/config/ra6m3/timer_config.h | 67 ++++ .../HAL_Drivers/config/ra6m3/uart_config.h | 136 ++++++++ .../libraries/HAL_Drivers/drv_hwtimer.c | 308 ++++++++++++++++++ .../libraries/HAL_Drivers/drv_hwtimer.h | 37 +++ bsp/renesas/libraries/HAL_Drivers/drv_rtc.c | 22 +- bsp/renesas/ra6m3-ek/board/Kconfig | 45 +++ 17 files changed, 861 insertions(+), 14 deletions(-) create mode 100644 bsp/renesas/docs/figures/add_gpt.png create mode 100644 bsp/renesas/docs/figures/en_timer.png create mode 100644 bsp/renesas/docs/figures/en_timerx.png create mode 100644 bsp/renesas/docs/figures/set_gpt.png create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/adc_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/can_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/dac_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/pwm_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/timer_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra6m3/uart_config.h create mode 100644 bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c create mode 100644 bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.h diff --git a/bsp/renesas/docs/RA系列使用FSP配置外设驱动.md b/bsp/renesas/docs/RA系列使用FSP配置外设驱动.md index 760e651b7a..c35fe6eeb1 100644 --- a/bsp/renesas/docs/RA系列使用FSP配置外设驱动.md +++ b/bsp/renesas/docs/RA系列使用FSP配置外设驱动.md @@ -77,7 +77,7 @@ RA系列已更新 **FSP 3.5.0** 版本的支持,请使用 **FSP 3.5.0** 版本 { rt_kprintf("\n IRQ00 triggered \n"); } - + void icu_sample(void) { /* init */ @@ -192,6 +192,35 @@ RA系列已更新 **FSP 3.5.0** 版本的支持,请使用 **FSP 3.5.0** 版本 4. 在 menuconfig 中打开对应的通道 +### Timer(GPT) + +GPT 定时器在该芯片中可作为通用定时器,可以用于计时功能。 + +1、添加 GPT 设备 + +![img](figures/add_gpt.png) + +2、对 GPT 较为关键的配置如图所示,具体解释如下: + +1. 设置开启的定时器名称,比如 timer0/1... +2. 设置定时器通道,需要和定时器名称后缀名相同,比如 0/1... +3. 设置定时器中断回调函数,比如 timer0—>**timer0_callback**,timer1—>**timer1_callback** +4. 设置定时器中断优先级 + +![img](figures/set_gpt.png) + +3、在 env 中配置 timer 外设: + +* 使能 timer 外设 + +![img](figures/en_timer.png) + +* 选择需要打开的某个定时器 + +![img](figures/en_timerx.png) + +* 最后使用 scons --target=mdk5 等方式生成工程 + ### PWM(GPT) GPT 定时器在该芯片中可作为通用定时器,也可以用于产生 PWM 信号。在将其用于产生 PWM 信号时,GPT 定时器提供了 gpt0 - gpt9 总共 10 个通道,每个通道可以设定两个输出端口。当前版本的 PWM 驱动将每个通道都看做一个单独的 PWM 设备,每个设备都只有一个通道。用户可以选择开启一个通道的任意一个输出端口,或将两个端口均开启,但在同时开启两个端口的情况下,它们输出的波形将完全一致。 diff --git a/bsp/renesas/docs/figures/add_gpt.png b/bsp/renesas/docs/figures/add_gpt.png new file mode 100644 index 0000000000000000000000000000000000000000..b29c53e1fe4b979b9f76b8711ab9d8459999d973 GIT binary patch literal 23261 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 S=l~A`j*tzZ!IGf3)c*kP;2z5W literal 0 HcmV?d00001 diff --git a/bsp/renesas/docs/figures/en_timer.png b/bsp/renesas/docs/figures/en_timer.png new file mode 100644 index 0000000000000000000000000000000000000000..eede25b4b401bfec44498d0df623d8cf01964847 GIT binary patch literal 30830 zcmeFZc~n!$*Dj3hfQpFigc=~NtXB7!0yL}Z2}$AO_$CIvx6 zNTUL+3;_hfn1i51L_nDW1UO=tLkJ;c&dIq!+wR|e?_GD@@4o+jtOdzQ&Z*k<)PA1Y zRke#dCr=#GT)b|vnwpyC;otY4R#Te`s;T{;zi@%-lao&;Re#my_?LHNr}O)Yrt;r)Bh1Uqy4fR6?ZPLMeD zYWWw%Q2ebU57W*R>`RH!rOu7@e!lzZlU?N|Z?NYyqMl!!&=0GwFPy*Sud?l?hZ! zBc_i2^W`sz2}adZatkak4jumQGruI3ByCh2`J-ACru@8jVa>mf@3Z&X5(xofu`*+r zM(zZ>A9(PqlJ&@x(7(z>MTZ`b^du*qO!v|Y=`I=WDe-Eujm(1Kw`FDMQ2rX z@jnfA>@Mn<+WK~Jx!*kemX0YDXt-XH|Lk9Y5_6nNb;y}-T!QjHZ@qL<0#7rEPJ#gn z8Tg{`h8}-#SPJ5HX>k|WEjTB+wmHB^)zBlD#~e;ycEG0g&4P#rr31$ngKeE4rL$D< zN8uBB7vH*aPtQ}lHmjG3=NPzBakmIX$9zfND23Y1?||=lu|X^^F>y=ZbaY|0-+cU* z+qJx9(kaedyLB5gi}!8|r!F&3fb2A1H?^QPANJi#xGvFsrF1$sVLJ?-dEe4gny`)8 zoKu%wc)Z;A@VFDyI&>XmrdmpOb<)svqI-o4!S5Y-q*S7QD8TDiYuT$(45#RKNt(g} zT;BWP#wM3-OA{lQwy5sF%;Gtp?y#a8-wA`bTxtA^ zwTk>+OcdO|2f7HM7{i-dTd-BAeSB32B1uC8p zs~&&v=ZuplidWWAh5X?)ms}5!{8K;wed{{r>DrR~3rP(Ag8xL$Gk zyOk>!4-IMzB>!9MFZ%d@T|mX7J<@%W%xr}jGVJwP~v)(?ASm5-X@(_%OX!?R}C2u z4xh^`29Y;7g><+rUDlEYi3Z(QMo8UKT$2f8S^4lpD!ELGMoSsD-&GZTxRiubc6mLf zNaJss} zRjDl2=LOsp;gEY^m!dna>gDK73i+e@=ROmL;quFXB%53qGQb8~6^(J=xs8Ia^*@XQ zK64&x(b;pvyf`cP(g{biVoOn%D;Jp_iUM}` z|290=NP%Hh4V|TWr;{^ChhHQuBL*y*v)iy_YHNmV`fxo)j7GK`Vj>L`nMU$*GB}Dz z)@#4VC~Ec9?}uDUY5Wz-k3}-1<;X~&AYXv(RMZjZlkbqs6Iq%Dkdh1aD~1Wm%K`$z z1$Q+Rs|2=s5+W#v34sVkHu{X)D&4^5*N>zQqsZfCuju@`7(pe{>dJtc3!NQfQD zN})wHun7FxV_ye~p+}i($Q061!ArYpPo65ABMZfVJd=_|IBe@5M1T9XOGET!`3 zW2|5RY$x_(r90A+m7hl{<2MZ={9>%M1-a!g+%<$l^28Nt;*2o_ytVDkNNsGk9s}j;M2^sv!PG5oPu=M9d;U1RQmm?klyB1^eg&#A?1R~bcuD7 zhEdf=OGF`P$|iAmp2|89rtFzU!i=29lU_Uw<5in^{eJ(at+)_i!X5KTI(QEpPL~{! zJgkxTA%l2RUhweGv5ID1{FIkaf6ZykbUsopZQvcMPX#;55z;KW*`EqY_ibzBQt3z7C`rAU9yvFe_H{r;P z_@ehy@?Mm4g%>AdShG^)r4GN=F~a{2XoeoWU1Duy*;i$XvfT7;GQ0XG+#h*sot7p2 zR=KrWL_|?L#ws*hI!d=VrR-9W<=K^SJCJmJq(I~R@?b#00IH-PqcDT-IB~?mpADA) z?`hz3sV)IA>NT-`pE1Yg{RlXmHp%|LL#7zIi)fH|LZeAbDQT&kl0U-=8k<&N6|Zz( zBwvb5+yXx!1o)6A^O_K`k)F4*30GApmB1sVR!0eAT4ElRg+uXdxaJ zaIgc`*Ym2zjuSk|Lw4j$>7YK=MzyDhS_@iB`*)!*r6}h^o4nbYE9!V%LV5N}^7*R% zV;1?N+k3RKVPF2Hd>pp+i36qmP~+%po9|)a(4$S-kuuyR(%AggUf$>tlDyEveslUJ zZBOB$^hM~fYKK4+^;isyB%5Mov37gV!CwH6 ze%JutUNxfnV=3q~@>F&Q5$|i%TGvt)%1KbkL@K0j^f4}9(UCR>1x7~V;jrpWr|%Bf z9a*?z0FmLnk4c2MVEOtTD|aZ4c+CCsF}v2s%IQW}e#rP1DIV3ikF+o?W5=Y>y0V;j zn6;3EyFFND;sYB-M|!kyZ@DwIbJ7YNQD-VKSyZm?7{RM(@)W1>`yiR2^-Uq3 zThT{jtqYm+ZH0yIXh--^ia5noeBaZGVyQdqK=Il%51Jwz8$TEUnZf!^fV3amN_;P_ zdM-_51O?8q3;)b7<7F zMc20?G--bqVcZSah;WTa<}IXZKz@02Fh)%HaMghN1Vjx>=6&1YTEzE&A$e)Mxp zHaA)mj7n^&gp0$*QR7xO%aqkvsm82UYGL>cb*vP=Lj%Z_XXw4Zr{)Eq4@~ZR5w=+8 zI8-fy)O4|#Bp2ETrE8Py*$2bHbvSZfoTYx_sRtVdOqbHFkE*63Z9uO=B!<(6ZOFme zS8qGja53ZCZknZ+{@kcjsi2vGOj6<=V#e8JQBaxl@WV^7PU+H8EJo5mO{JZtD>)!t zDy1OOVRt~}e%$1EEzbyUH7Z9M!5n!SwB10l^?(vP+CWWQc1z>+E;M8kbqGebpOpniu*)Lp~O7D*q3PYFbaf2}BAnWz4-YU0KtYV2{kV zr7KICyef^}w4yJGHhI(?X9~I-PZ9U*lpNWj>N7b=&ekev`IURq=<0-V$ZlJQ(NU={)7)Me~HU|lFqCy5C*EDeJLQr}d=@NWg z4%l2*aNm@xd=2dMUZNEmxVDlUQjJG2Pi&LC0Py?_n9;LN8&51FY(k$h%ERIQLmyVx z@=D()suc2DWE-M=8OsF_-6n$Ei*kOW;CIQazc|BPJDSjvY0w>$Sv(tC7B)V^!-rCt z*cp4nE;?I?I0G?lJ=&I?# z`%9~9|0Bkqolhj&=aWXQ(Vnv_C2G4bF_md{WUsli7d2acR{Svg=7ipW_U!AmX~yexfKW5I&jU7rSagfG)QQ%j7({McjwEFKWsfCJeNYB;51 zO@hd>JU#sD^OUUFhIj>@lyu;JVx#zzFKm`sk){WZ-8ycG!-h*l+-qOzPE}r=IkRgt z4@yDCG7dzwod4ZwXH9z#Ny;2#n9a)$)?pXu^o-V@i18&xgvi+fBRH)NQ~Uz&(>Lb#a|+P{d#G_K)qFX+T=lc^&$xB%63`*0XsO1 z`IxaG{@SO!7OR1+Q7`sHa2IhJ^Y8@mx$+?|_SRm>e%JAOeu)1A8%RON-=nGg+p~gR+c_HO%x=Ws{F$C z8kgK_l`Kf8tFx0bgA`irp}CLsPyL#L06#b zjaqA=P)So!gj!cE7#$lhPu zx5WL{ZF&fEJ-2J%`Re}I;{-}S*$Qt^GuYl^Wl59{`MG3^3!!UIiUpi8<+-)AG>qe< zID=y&_ipjR(nDci&S8e%?~UdU1y=L~tq$T3n|lcTz&uk@brM)3^wV=_SeMSbk$uqyv@s}G*oZYZXA@%E`6#!v8*+k zef>Q6BYCzQHGP6$fF=sE!JQJ*&hG%C)>azdMf$Hz66Wt9FXHeN=Swl@Yk1tz?BIsrpmsbX)fWN_d6#|)!+xjsb0!nmVR zP<~(6k3aNhz<6tkrsG1rJ*JL;%2UrCl2q>x-Ih-p3wvy|duoAyjv^t4^f}<>m!=(2 zznJASEQVt@h38ze^xrFakUnLgJGt+##T;;gOSKOrUW|%@a!9bM1$L~=C}=X$HeF{8 zPHW$z7;L{bbXAlDEixn6F6%VQeMJS{XpYA7U*uu)nHQqZL67t0L%Klqg8HQE9~Cv6l}0yU9m$1^bw3(?XS7|G9=-ry04c$z*VNM5R%%Q~W|RlYwD} zcTI5)gfN>ypIc8+znNK8xGXk1+E*ou%yl|ccJr|x+&R5zSWNHdBUZaya5v@p?*~-tm$&5g(urgVn!>6OMhNV5jC8%Om__zI<#%GrF>$T>Etnm{~L=P)8BIVqmx-5A@#JE=Lu?O=+f{aK1r+;1|wLpQQ%FP1)mk57=ex z{mMnr9JpzS&Rq{v^Pm#KjQc__xmQ~oUu@Qxnd(J5cFC&N@kC!$axG)c^`+;8=ZV|Y z`KDTZ$|pUdXb(saR8GqzzmCO$KwlcPLkE1VDkrAp39L~c4a5XEOECBt4h|tLQn{}= z2^$}d_qut`lKQr){B(fw^1%|_zWw%dek$;J^F`X{AH*)MYzP&|gXpxNx?LpL)BeZ4 z+=q|Y?4Dx;j2|a%$OpqV?uk2Onb(V~=Ol;J7Fo;Iont|%`Sm8<={E;*OZ8j~nWgA) zA^pYS`t}P3D_+Tqwe+n^K`>6t{>(a(9H*%ZIaZe_;z>V-E8n`VM&tc-!7uSjX1#l? zGR1p|4zkV*KkBMTq^gLb)}aqxzwOfD@F6v4aQG9{TW_{aw)v&MUQA7E$?}n}`?0SyP?nHNJmP=Q3r?!kPa2meDTGxtXaI`yvlfqM>-Ig2Mau_WI z*DjYl8>+{Zf|Xm)h2DFfwNQRpSXOa`qS>d^@sjq;ILe31P>l|(#1*mGSCPw>WUVp4 zTjj2VcfuF8_={=U`DuSm{%s;8EgARAP0cAg0rf_1UkUBkEZ?)FQI4X)3bIU|+TsHc zPGmK%_&ho6KP`h}`npn^e~XI)()y3#s-;WX=$}#aAf{c3(SjMEw<()I7**`+!PWoP za|PtuLm$RPb)4X;T;GCN>n2B^nkMNQm9Z(M;F~5&cfBz;m7Sf$WZ67xX;Jz^WRI}y zC)ko%EIpAKkpnaPCmQ}pnNlTSIX)kGilvt#mO732JRXc}zW?Xr{{0<3#yNw9vFq#^ z^cepo6?7CgN;pz`$c*BvQz4tfP8KzxDu9tcX;^3RM=ten%T3talgq4cd5pO{;V*gB z-f29fcu}I8m0S-TLH1V=S~)g($gXdqX67ZCU-}_*n!}N;pF>*zB(awB*t;50Il?ch z$jX3orw~}q1nx#-zRGZC^pwVa89HpUWa)ufeXe=@k1C&0Erg}G&nmRqZu6}PC-#2R z@7&mjhqHhB7NglR-aoflrjqd;!KKo>hn%nK1-Cw4Ex#bBsWUPaTTT-N;d@BjrCj7A ze^0u;9un*qH{)a}+v}IkX33Q5YL1(~m3t#$V6Lt9HN#yOw&{{tfv$%Z1+z54n;NfO z8N&^6nXZ+75WA&EuzJ?EI{Os=#VXsM%tPmkZa&wnO%{a{#;%Q6caY)aYIs-nGBUQa zcM%nWiGI-QIcwBzxa1x)pRWogPuvV&0q<;@pSbMYMk1+7dN+uH`~BJW9f_eo{8cBK ziyLMc0TY3qh`*%o(@leUUyh+CEyrp4lkUC!#Y!ea%gHenhuLO-!rhE) zGo{*%l0uWQmEm}`-E#u}yffFOjGug?6sXps&Mn)%Jc$`eBZ$u$@#;QI#oKCu9$~Pu zd~EsMo)AZDj9SP!gu~uZ0^lr_g;$`NWUUFM-MN8w_}T$)-fK1!0z&CyY`>boxoWE~ zU25I3IRc78lh>$STQnoIOF$vykNi37mx7tsP9GONb>WQ|22C!dj z=ZwOwekO7XzROIu+yhzUA|?D3D)73DPc5jWa$YS4)#E7n$^0Ig6+==c(qNyxn3kY+ zV++-cJI!W zD7o_dTcHHj`Cl!E>fnACm>S)p1HbB7W2s!#Nx#N9TE`n;)7U*;%=HLwzI}=J#X+Ut zoN}kY-|=(QlJBWPguiTXub=Eb7QHar^yl8QStC6(&W?do1RL8;PxM_~ERIOHGW=Rf z11w;nacDE;s)LdM?*4#;I>OF_Cb-tlXn6}KPFw9lh^ixM)MS_Y)fd6$DEfkrF8aHw zNR`e;SkotGY6&bAzehAdk@8)fY7lzC)xsT#5nY#O{vL%FoA;%U4KQ()JigXs{XVq2 zfQxORnGwlqHJ4`neZlmccgl0_21HGEk}=bGd+&ip^N2C_t-}V2yVK_H2Ru9xcxGCH z8>94_p}puA+a-3zE%rK{YkUfY~;z`b~Aq=a>J>Y{*~okZCh&dGs3_x1IPQhinzm{7UtR>Zj(*#)9#0 zU#E2(@Z+p9^2mqi+q0ZD1*NJF-3WWzG+g_HewK`2f_;w9jpcn2!Ey~*Oy#g;_B{dN zY;((rsdeCG9fYATHgs<)-{Wntv>JSg#@6-YV`<9rG-yo_mRthinFmBSzgDZ79BG@S za#{zPstaWasZ(LSQx>9IrnYpF4<`0_y)(YJev;#gMtgnke;zk8T-DEKD;zY%dL+P) zQ~RjYR|m06tt>V4(JHic3H%X2Rdhj4?WZ2btdh_FSw%-KnnI8K3j-p$Xg)7Lu@%FJ$ z8=1nEFg7r1K2L@HHNa@`?Z-#v0nLTjVuM=V^xu$G)=pJo_YxPL(0Xv~bJ^`zeSb;Z zULNO>Jy-3=Ru^f#Hzw>R_mfaAPW-oxEp2&N%N2?xX@pqzGctT784cU;e#=8@*s7J31>1Pd-LR!gmDW1Y8Sy&O zDEE-EcN}ZcfpT^OXXMWqBV9d8U7}+0-EQ~fI7U90E|Z?M=>j@nd_UO1hSJPDf%5?e zGTC)Fwgf*%tn_anp|24)F|L?Q-ZV#ay0cC4t}FJ-61Yp zlx|mo&R7x%?$VIR>b(rEe1#(=I3MUU_XiXv{EAkoA4%tBpL2lmU3svtJU8v~ah}+S zNpU0W-TkYcU~L#9MH380y7L1p#)Q2#CJN7^H^(IVl807`@c{@8ZqU<`n}^BA zc`dti5Qk4t=QBS!E-k^f?}X2j1ejF`zT`sHJ!H#aS*E63k)sQShL-0&*vks~4LRTu znnyAtnPs`?Fl-T-+gl!UH(X(EEk3(fpM<0qFCo@NwM^fvu^@S=rgtOslY~6M>h)WZHGD z4K5|GAhWS5>-wNSi1HGCYMJtivs{u>g6BXI7;8qO*GdPQq0w8LX85N$NFuu~58IC) zmo3lnzW3J1m1Z_9DHO8`*w6gwcNCHi8Q#vBtl)D>jf%CsIj2Wj+WF0FRm$$@44D#f-xW2;+D$9T9MjDo*(aTm z0{+?~u_QQjahki`YO-8E3UhKPwjeN9_eY+k6ilVF?wB&dep%4Z|K3r>=olq4xUduIZ(r-tCzj;^k5^} z`XN8HLOCkw74MA&1EXJZnIhf|7&yaK8ue~p-2&Z&Dc6aKOv-gm($Jw;O773O7WT|P z*o)8jkcZEpVx7i?cC_teX7W$^A^qEQQfmc3^$y5mIRL$y? zR0nn`w|1yA908Gn!>zR4P41iV&%HZx{bo6-L`d`GSO&`jBd^ANSdpY#&9y~8_5CFu z_$*nnsqyPLQJFtwQP*sAg6ixz7;{mKIHeW)(lu&ETC-nUv`~7BaxFq;DtbjPD$?Qk z`${*_PtHhD_gjOXdumh2Veq{gx@Jm}11*H#bq9Csz9H5Pjv!fHA#$b}Cod_o^6{~6 zMdw)Jy--zR50wk`%pCpFTwaXcOP+XJpv3LLyyrj((%jSszU_R>7m2Z$HHQ&(X>?6A zsJs#?)%lkgpONA`x~^_&T)i!-qHMmj_QSK{$dUPiDU-obF$9*gWs z_0QGYm$tRLBCWUVC`BN)s}tixK)oQi+n1^f*3VdrGs;OF0!B`r;4_!CmS*MJ0xA`u zI(Iqf-5Bcz{x=3z)Kd8e2i5(Nwr97swlT=By1}F|_oh6NAFqf#wCLK{hWI0_1p0Fp zJKK)s$1c!F3f&g!k9c`%qp_+DU^5Y{d~c#;l?l{kF4}Pe9GJHg3dUqbG|FqhsO1~iXrK2zv`0lZk+9lF89_I#tKfHV3CH*OBBk;~O9s&dGm zUhoi&JuU{eg~=F}m<{ZO3rBT0@TZvU3R8ywi!rjtSsv9>PII0mo+?+(0VLA#O5##( zWni=*Y+;z(izA+fsmG}_?4)drg~9;lH?2)BX92w3pz>%Pu(0>oK0_ zK*2VG2IZ$VHdm*VT$1i4i|6Mxl;F|eVGgyw>W|ZM)tG8{7LP-K+ag5n2-m%Qn4pFhqJ`;j~41rhn~Z3p{GdlmmJz~im&`V6ZZ_M z4oEJCKN&zEVo1d=Sxa$ov;PK|IKpn3Op~+!9O0Mz$$7L@Y9}6mulLMkUEV{7_)TJ$ z6EpDIG}&?GVgnNJ7S_GI@#a}Decy8!x? zsjwnm%e7vshF)BNQC+Lpt`~ASxcr=uv&BDslOq3*Fq?ae>_w{BR5cBLd-y`f z|HapVmj;6Ju?ON`bznbT^He~Gt19q1*Q>ZVE7v@hZ@5#5qc!61@o;lr*i)XE)QjH58Fq7oNmt`hde|43PgB$maiA>xKnlX*&?bc$}B_fvIsK` zy139KU4TfL;9KtNM^gr-RWg;;KVd+YQnv`H5M8Pa^iG#!o_oLG93@y~@`Y{h<=Kvq z7d{URgkw1zdFKu)!9`{qs}-aeNkWw?uMi)2#|3yxE*+JRNO*A!w<`RLLT4Ea6x7OJ zrdfT4jmMsuiz0=<<`g*9q?xuzo^4Zw zNfP5=MgP*V%C9pP)h3X9I~&i_`b}PfkqET^3=RR7jY)eOx=ON{Ol()1R8GiBZrr^# z#ta*@y_n<=$DH_cTEwIgMnx<^iF`*Tau(^)Xdg|eB>5R9`+3WRoWeU&-w#fIjxX&a zL*ngL)OK=JUnquT*~poYpx{?bi&woWw>Tkcn6z9dKR&!mG>{>umck86U&M}c0T~ig z+IgJ@q^*X$WlyP8js;KwCtW0*S~Vq6H( z$b-0aGklNM0>(1Fbg|3=Z7?A1K)v0pZg+Dd@Btg_EzE%H5)pi1 zjrt}3lls@y6J{8@_p&uU7oIqs3cR`}&u8MRt}W?SruB$4yUFq|wv~H4#Q0#Y%wqV< zauML25~veHLJ72KGGbC)DJ0%1j{MQ$FSw_CXB*$Q?7d3wjF4n*QU2PzPjbR%kvO(( zshnDjh*--B*$QwwIO8{}ycZh*m%YPyu&C8wdp)fb*if$83_T#oVgN`|dWYHMd{NK@9`fDc^7i=miP1-k2KP3SagNI3WjdPq7{+cz+Ac7XKb@hm2q?trvrDHvT)qjP!ImkFg zjEO&CeU5kBEDojz2kdBTnH^t&2qXbjLgJWg`Z_1TEj8C8Ie>VMz3nB38uuNAAcGNH z5}tywyO>-_vWe9Svxw9~(w&hh4mDRlY!-}Pi%7-IjlJcbDmWxU2VPuQCWl#OjQPz4 zS-R^I;>IA>DEG*^95-~Ue}iJH;c(O>U9GMQ!h+mr13sN z9Ag|hPK@2?ISbS^mX9jZgl+Vo6xCjYfbqPZacv9BEI9P0FKL-|96$xhKywlmEQ%ec ztKeEZJ#vUEvty4K>0$Zhy!wyi_m8W|5gwUb3S04h0zV+W-$yVGKnAICLU_ld#KElG zl=F2NsBmhlV$MhJ#E@IX`Yr@LQbD-%%UpYd$~NqynZ0Xfl6T3?7!4keWyAVMSa=qF zZkE14GL{MR47Yhor$veHg6*}9A+1+V<=gG${_$fhsN+DRwm9yOWGzN|mo6|;0bjH3 zGSufBVPt@@1B@u2XNt}EY!QW3TGk{w|0BgcK}7lGDqs=FR|*(jq0xoNEq|n&xf#s& zIhH+vwJ)_=E#kB?Z-^c>c&m0j?#Z+1K$~kF;1^<9O@#AH@OW@ni-i5GHpXSLYfB!8 z!CXf1XWmO~^zg=Yl5or$W~RNwHK>}0xQ_X?iLoAl`-EhK3R*nNH}c})W5*A*IuFV0 zI-vS|gj=!$QC^9T8x>}>Bf+u{Vr>HukO`Z0{RNfZB~+U*IvfcjWeOk)XvbjcSwlC+F^siS|Z)p55<#@`BfPN4Qzc=(2L_Ko8=>4L@65J zKmgEhEgIt25l&VpkD=R!>UcA*7w3;$eC^0X+b}%S3-#Vrqcb@PLaG!c)Y7FK??qo# zW1~^z<7~;?_ZuxnzpdI@{aSvw2^;VbBkJGn7M3lNU&*Mb$19Aum%WQu^6wj!m1BjZ)aK$HA!BmerG5 z$D)zDnqXGiuxPH}z8w2?EH_(2hUaIo{`xTg4ZZAL(e&ju%pTv^mCIu&PqVKRh+NU} zMZb6M4*cTHqv}_sl=Hnt))H@zmzIkzJF@^!*?QQI1rl6AEh0-R9bc<#xldmu_Vy;K zLg6pQMg~T0o(%9jIU86)Yjkg}e%zy(a7>HSj1F_bpKrTfYf{eT(Oyu0=KI?9kU6r1 zZ77s+?2u5a8*I}JtxGj`Ll%Kg_AIcbI9{e|g>@=X*NHPSrWg1T+1uFiCKPz^ci>qS zNQKKUI^vgx0OLK$+@6wZ+$je*@^mt zJu;w6`ATfpnk-S+@pP-le5+5dgIf9bMO3VSq7&IDfj(Cq_p z*b8$9&u4yR!{Rz>2mjjrWQ~%F&y6Mr9~BrGDla~$8gom+COQxXzHrvU+n0DXey;x% z>{>kTbfbq^eve?O=P6r8hsaQ-_T+%v=%c)_7wkzr0Q7R%gMZv*IiS!fdSX0*;4OVG zLdnn9hfSJ6>%E7;sbALwF3pU-^uX_;gn!Dy=SbVg8k zBP=mTr&WBro))S+BLfzVP&kBPt4!AFF@~W8Gg^97=J*KsAh#*blXLI(;F{msT5j&( zr-Uk(TF|rBSY4hU4Vo$xOIyh^a=Zib=aA5ptK%-e*|uJ~_iM1`Z6yuR#=F)<-@8rn zT}$>gk0yY!$emNShD-OBQfa!Y%Dsy^bNWACuI^qe-#P=lQ@$F$QwsKCLj)(~W}hHL zR8CJC=g5lN2J?=bINU`XjB(}8(d5w#TNn&U_JxMHwXT zA{M$I*|M4ibg(U^yv4N2KvI{*6{6P&E)OXg()VI)5-5wIq+p97Btn{rSjSOEduWj1 zD*6mPn(^Em^AKKP%<+=D7fnmz-b%dYHWR#bov<=E$aOhE&@~ieyrNMDs0n;m_-(Cz zK^+0vcd^i@BIO>dS6iDoqBs!zPBZ31LM1=1sNUF)IvzRWy@ZBVZC!{dfZ#5ZDt0Xg z>XmuNXmJTY|Ef!v8%qEjCpNjBa-tW(_0xW6t&8cVUhSW;UJsR0Oex{t=^rate7xPAjgn_yUitV;ESnDRy5}& zdxt_|#!*+LSY4_ImefP1EkG}^cK!6HN5}DG!Y8&?msx(bDwVg=5 zW~Ey=rS+dau{eyMCtYQiO&|8-OW+YXlS?T;Kb3mH zesU`ddMJ|IAHI3=_LC2(8Fp(a|1)Bj>l zS{BjT==3G2lUc_tOD9BL@*usVJn)O?4HFYYe~#irpV(`)~;n^SF$N1@weR#Neya+#{S|{vM(r{U;EoF>6e`zi3A;l2k!?j zdh`+>8u}Df+Zd5mDz2Dcg*EMej$%z+wz~qBYSp4%26gtHX773qc%WdmD>9tejUG7e zeepMAd)LI=Y)i~!z5e5@?Bry00ql#YlE$jB{aoXA7On1>dA+#`jjeHcD@4^@++=|p zQPya2J6qk8{+hk}D%`;idpabdjK=L{CX2daSTiH{R^5mh%3)X9SYiTSj^Hwo+es7~ znbM7CS3-FXMCsv*t{M~XOv`Noh?~Tru1%~h48S=kua}~C&%ZwL zEey<`3iDUinhZuZ_U$Yotn8er)0w)gK2NoM3!kj(@a8-!A`~&!kqup)C$MVSQC`an zR{ygk<~g9B`br&tVMEZ>tN|vnF?3virJ?qK2TK*+oX}!!ykM{~>g%4PYOB@s4Qa#r zJuhghhzE)^p8@X@$=l-mq|=3n+7rD=t(ztB^0{9}QtG+ClO*o{KdqVl_hP00|LOnj zI%VLeDX)NKvrCr+K(U(*if;-6O+0T6(?pmNZUU2KzL0vD)9;wZ#Q7={<15&0z>gh|`C>|J*({l>>|fp(Ewq!`(BZvH}+W#2xI`lW7WKkrl85#$o%0Tim52Juw=F&tTH#EG;mbeg4()R^2LO0eU@GQ{%=aaMqUBevw)=uK zsZYC_NG4w290f_D=2VBs;iLb>*46<#q?tDt7dZx-dbw;(^O@PQB6fOj$3nZe`YBZwe(HGOJ@S@>`-?YPc)%odQ1TwmJ70t>uwF#xOr2uYarXnN3nsGgSY_N6ZzS z>5A2LPLiVMj~2%rraXw#<)sXK^mJIVBKH=yd`E&rezSVz^0@`c*QQm(m&8}E2?>DKgx&WZ=7UMxFQThDZf zY=E6GTS$BV9IWFtjz(MFpI#j*&(~S>-Kd^W2{((Qf4h1J_VRK#I#94?@~;1GCWq>c zmz$%8#~YJ5!f6=2xqYycxg`Sc^_Ufv0`WWKxBusENLmWYg2-Z*;48bAd?%0U7{oX7 z_?4J?68|ht&LiOM+)Gb6&`U`+w5CZyZNw*k-StyFj5J{#~Z-sjP`mS{YpGln&toVKy=i+Ap zkYO`z=6@8R1}4-486B38!ipwZgCbp39k;*pPy z)!sf{<9Zggld{d|%cY=D9KOT`vvlcmwFKQRyP z7O{oVR*@>EcKoAU-x%fc68*r?hjL)=Q5>^T?p^Z3RYOIVK+ME1r)}X%3h$eW;4NZk z>m*v6=;vZX06^95%UH#X!aK}UIVp_LqOj|pRreYDA;lT^&Jo$bt?F=oud?|nSY=-< zC{u0Is7^C&U-lixBXe6ahy|(xw&ReL^toYsHFVkV`GPV3XE?*{LW;77dnEp};Qh39 z-6=DI+`qlVi1a?w`uux&P+(k3m*I6iwwPTA6!xda#>WNem4C{Iq;NJ$P3aT zbL1@%P%yC0Rn>R#*58#w<+3IE;M*w{#{1X_g-^w&>|9!Uk_c&v^Mx=q4wZP7!bg0oGBAM$sUQnkrKQI2^Emi}2U zP)ABmO4=oE`E$yl9}wusRmVSGZum|L!Mq#im%VEGkz6@8a2RjqWJJ-jzg*@y!eeR; z%KQ*RHQJnGwLLMfoFz?S$d9z+hcGh()Kq;8g|Jl*t=rro(Oj5ZHz+=OVUluQqFaE> z^5w$f|M1BUP*AB=S29(qb+!N7C`kEE!f$G=SzU8h3lHrB}TmDCP zUmDQV)vb+HD~f=M6%`>`YiUJALYKX#2JIy}kFn_s91SGMux|+H0@%tY-~ziV)cD zaj#6T)!X$ThVTeHV8JSx$9Egym?FB~buP#97(AOM0g^dfJQaf5p}DA!Qf<^|k^D#W z#|=lg*1RcBwyWPrlY@DK~1WjRvGZs|79%u3Vq*V>4e~_J_PVr#*YAiV` zyXj}d5`wol1cGysOM!GA1Z%XEAK){+(jBOUSpeO8u9n>m0&}>Kjx=q;{;L4XeeYtG z2iG{SPb*iBMiN(og(cjO>4KNJ(7(OGw$YQ{68cJ0UsyK5V??a26bBJ{+3U1Jt{Lf4 zr_?+6j@y(^!I9k`M#bS|Ke`CWkn2#~skI4N5*=g;6<`aJI`|E9S5Y zVfaGT72t^Q?;LwQ^P3mu@NO)kN(LXV;=L`+$Ta;G1FpMH?oKy{A(q3}ylzEbmAWFb zBB6-IC}*=~eof71hy_`rB254ALveYc`uc(AYG@$oV{%C!;kPVmLIU7t`-Kanwm-Gw zjV5(50c&S|a_9q2?Vb33n&Eds7O^Fw|0;Ym>jmCsvoL&2Q^d;v0*|+p>ChpXUFNj2 ze|3y`LIXbOCGF>n@WC+biwUr4L*(_S1zl(OR>N#O;o#8UqA%@&bfIh6sh6WU~38g0t*S+-%2#JJG49&EL)l6it7dD(E!QbI@j#y4;ZW21Juz(c0?51qzr6*wD{a4}CpaVM_P^LHn_PclR z8m!LEDlbKtNV7*G^!Ex;s@*4Tq|H^79kSUYO^KjkADTR=BvBUQI(rXg3Wj*?T>q&o z(}P`krN9fD)P zKBKQs2Nr`%tqze1=f8R^r1pB|@x4ecDCrN_*)qzQK2;LLidYsuxk$~rIx3%1OgD4N zv?HOAqZYv77@v@7dG<=|kHT}ta4L<4t}V#fs)?OXjS+Vp#H>8;$T`xG2kbeC8DF6{ z*?MfczmkgOR<6Zf5%n$W)=K#>UmjgdE(!?dF|DJblQ z$#mte^HHVq)4J75f{vPe4#7V61TJqCBhpj9R#75sOMBtfx)M8}bha(RozLy+60e+sT*=)drpQ-;YYbBN}X~qegcMI6sxk;1?tSPQ}TiJP1xbn}t)~&|WLzr#TN*Z5!f1^yAv7)@0Zf zrP*$-iABF>mY3=3TZAweA2dFAY8OS^?V9|0ll2QsRAX=B0$Rqu>R1+}ik6mSqQch^)P8$WJG^=slILPI!UssZYlmD}m9%%5Cmo%hR#7EPggJU`qM^h6W7^?x z3!+MKUfz`kCFAUtec=rLlup#a}eE1B{I0=1HzhwPQs*M;g%3oV`jwhO3|1?SxT zKGc;n2X@Y!GjHhyZYeE;9yerZ_Tmcj*IRcD_79Zl-0y=g=N*GB8VL|QZ`VDo;x|2z z(K5g3-O!G^(dyruv>(mcIE|5%kF`kP6-(3QDgBGiTpTulN_<5HFyA+ZO_jMxVZKA zrpzHOWa8XT*tQ9m^NPie`=ATjTwxq+yZ{fsoOF+e!r^XS=5L*pgr*1&Njz*`f@3@- z*Q&e-s&~NEB_t~lQj$8$dT8yfh$R^YrAIY7=%yzn#~)0cQLG_UcnjaGca6a_swzA) zB-$&mj-0$`=t;kpDO8Cse>O@1I8V`6hVxJjCyX3X7jTuap@j|_u0uyppO)MaXw!B$ zyw(%A!`~VRE^NcoHF_kr0Olyu?*n^kyIY1r;+GP-u6toSR)b(mF47e=^-U~fm01mN zUB<$B+*iIu6SdEn) z%_ISr-GCx#PgAIl9LyUlZHS!Bm7`t<0mMOj5ms*AHC8pUKecz(F|A&M9dM1kq(VcN zrz}EIDO>}yZmx*T`@Sz4V{A?GOY1ZIwQv`7tb>*3qJjQp1o5ua`Tf5X*_1_eCd;z>jCz_e$||tjVSQGJum57##-=Vyv+7&pjYZSjia&i23!210bm%IlYalQ zE0oo0*bu)&#ySuv66Yd}I_UH99CGr`8-ym~1BAEtIZCfC3_K)sA-jOcG%ZS0ja z0G?PwcI*2ANKeg)LRip1!pc+43JEVvGHqHqq+gS9SrN0J(bM5H=DG$qpVe&7I{$GO zaDve?5V-G1jb2&w^!=}{B0G1~xfVu`*y?kotCK%XX5Z?F0pTN<+tg4x?4na=CvgwY zOCn}_h&y6MoIqwA{EgYWZJUR(O-FW>Jn_H>Sx&sPY{mq1tEFBHtkr>!&!?LaJEL57 zPCYIDyUU-cXJ4_Y-neTjOtmJJEG*R(-ldajN826w%6KrbB7A{W^L&(`hmK(%#*mC^ zo08DEdYH=__y+(dS38f!+uo^%anDQv^67szr=Z5ab!ZIuBqh|N6zft26@6@ek)$*y zW;l5Tc6dou&&hh-@qEfPiz-Aea;D>mIT0AOOLM^9=VrE1Bh475hHbE=0vlS}VzVljDXU}KOpa*=0=eJxL zM<6w-9``5;44qoLFeOjC1(8|r|C5!nU4up|)?qj0A5`cA-1kh8b_%-v{d9wGO?5|8 znF9m>2d4A5s&_P~_e-(rSoDvL9o&Y6=*8nxQ}&{XX6EoEMt46khesyh|5nsy>aXk7 zoM6|P02}V*%wofuE6p~=J+Hz#)~9%HWzTn&jNsQ;IKKJGCed~J4owe?O!MS>k-qBT zV3xp_KIOHBHGbfh;_qb8o@1JZ+t+FSBSCd@q)n361eg=sbE)WWua!eH3Oanbm*-o#9IJ2R4L&|&+cpqR zy)22=#OmJiTm%a&gYtpRb7sANnJp@^;ZiM^qmhZWS*}krsxB*gw=|V0ti*01`472` z?V*9DMC%R0%6^Z?RKFvsiP^)(AXL~kXQ5Q|xQ)i^h7U&|M5crdOHYGD(g!E>&@}zd z#Q=4cbWl}nK#6-Qa?sc}+4J3GYuxsl71%3Yzlq2Jd_UweX3YJ+zhpR~|LEVUf*Q8) z$G?5^FrRs7vMTOme^iqhjpw~@gYbQkJ#jMoL4efQ%tdq3XU{`goL|^?zjUe3slU*2 zMeoRv_C{b1>VQ0@)Vj}q?WLO)-jS`SAGBL^ybaYG&8~sY>V_gy)s)i{TZSH2aDTa+ zy3LzPpiXI^TdoCXy!w+79E;KmZa?n`=%czK*;x(syRo!?=P42}qXk=J!gryppKol{ zX#igQ6tsdlm`((Yi?v3+SWp^o8dKZV3%SpdH}ngAfuN=Oti*)Hc)=|8Pc(4UrHZk| zV^uXQG%jk!S1g{%dEGiru-w|tGWU3$=T@JHy;NMGh&Al`d_h%>=F8EUJ&6zgXTQrjS;uG4~?}e4K@T~A0f2av02kPAAScw^q zkX(p=U#l80?h*Pnh`%+oeZwKZk&(Lf^uaWO;SLMP<9wnU!1_{z)K>go2; z`98}qPb$i{z|asSt0s5M=cN2t*)Ou7TsjgXcuaPKGLKk529;-m))xEZ|K^X71(x|%1tNS>(<93P(r01j6=P8 zO3xb+*GWx{kAB|4wd+BXF`Y@o=E;v=LW8O5_R25XCX4(v|iKVx4nFeC`hjwgr^HMr z0$0B@F}{$YyqQ6m>p|D(jgjLvMtO`?3a;+ld(kqyC-S z2^0vl0e8(fSFjNp{(+*WrLpN`JA4j}_l65V_8DclovWeQ^?)H&e#_yQpIo*s zXxwi8c}4^I#W)nO)U@G{iRld^(O(@PTO3g(xFbk&I%_8buZJDb{5Z8;3ktA`)z2`i z!t~7@b=l?bmdMIiPT@q^U|+{gJ|5mGJShMc+NV^`x@I)|Ro%*&suioEe2m8rKR-ie zF8p5ef=-fy;H(2*nZe2N|5veW)DW4H|K5ALh51L&a5OIZM_#WeU3W zdQr9!Kk+I}X|0K;n;IFla!EeSAMHMr_GvJs0hpc7~c=`4HWq*%D*pFWU^Sx{qp;Sdi+D6uBAPzHa4KNLG(?G zpgi*mgy()I93KRxDou`Z0QoAgIV8Q8%XS!6iN;ZYG?yDoP1+bnHH^GKLWLqok_SY< zl6@b8_N35mO66th)TmPol?b*wOO77$m{1wXGis(v zw)o&V<2fbv^#3ev@h1Gm4{iQig*_sTQhct(pP|W3`QhKx0GzQxft<{jA~A(XdFJVE zOwB4Ryn_y})QFc-1pU9xId1T^e_YKN?^}tudP4H$$3gZ2ZQKpCGXG02KouCsmFKWH zJ6#GwCwxBE5>pL^HBnbn&nQ~#a}Q~F2T%CeniIHoYpuEk-&9^ z^5=tc#uH+C=Z_%T1gwyejc=PajI1Ir5IMJdTa?%M9fo~*H0bK*>E^wYx-$Hed8;!-A_*O~`sv7z)#`K!q(XaJeQ8TrP6T>9z2@rSAxOt-ztRwJy$ z#&XIpNNLR-!p_DiF!D4FH^j9;A*6*|f2hI`v43sE*vJb9u}8HA__Xp~!U(OrRs<1V zJ}2bzoTVp^KLDi%rKNeZ=2q3{oF}ESC94TqBkDL`^O!T<;@?vCfWD3&r)HVM$uSKz5IBwmc^rk?as>N#TDzYgchpV1 z`#G;=ExHDNH#q->TbW2tsJeaC^z#?D#lzRH9cNp?qrp1E<+?Fvfax4^ezB3&^$!;P z(^=!7s=^3UZe{e?m98iqkJV(d?O2Ayf=>*A_W8QX1PV`)WBv~Ew&i5 z%<(%g!C+d?d~;y7nh@e84c8~sCo6e`X;*amdPQ?`_MQ7$WMAcE2U@bS+S8*$&PsG_ zp5$TG%R%hm>?C*3(lUx=3L-%LtCzR7WnFLbtqBr*^G;qSdqS_5OTNVm6P>gFz6`Ny zQRff-f#k8s#-=Enl2>UK#6u$d!c!hIw_(6zD7*@lg+sHMqglFNU;X$EU#QS1tq7cg zn8w%_74;PBwX0k)g8uj;9`H8CHqT3eNCC1b^5;|RnL_*(nvoMB(dooTTs|UXm$~LX zaAuL8fq7XqtqW95>vLXuB);{GuTS=2Tx>{8G*WKdN^!~)ZFse;yOUA&j&Eh*e@N8I z)hWm%4y*zA7`@b9; zL$hAEi{ex&n%5f;$t?MJf^w_@rLnY_c<(K|9G1m`O7lWwkXPyg%*}pm4yR(?OyYU3 zIONwuSq#=PyKA&? zOMwSlC-)D3NW_U^Yklfd4a)D1cwHUM{8Z!dSoz#y&8fW?TSIrl6!e=_-3a?5UWTgH zIg&pvnpYf3eTI27lj@C|oPWKqNFUn^l0nW2av%9GkPnDw+X`V1PQY$SCtm-LTn12- zf11XFzVd%vXAj-;|Dc>-ew)fGZPKm*=ZCqyM)%I`l{Sm0D-)m(C@3z@l{WFLfJ~r* z!mZf4U!m^1Ezttxf8nL_ogD!jK7udC{nn}T(Mv~36j zKfqs@ugFO1%&!@Lm}ts|xc@t*<)haQ18{YmkNIGkNUzZDbFtPbY&_@DC#u7}6M}YM zoJ1#O=WvTo1j5@`pCyc=T$RMpDW#S3&M1B>)arjrhdmvTzBxN?XmTsw=P|I$v8P;4wps5{DCa{@^5NMklfZs8r9|ab5OsJCK29%SISC z)!l!S+RiI9^vm&Wb^A9>>dmGdDyQHxA#_(SN9U-fv)cgsgjOG9loJ=Go#kUl$QFiE za^IHUTLy9vnDUB?hy)A&hevKjEpbzC$+H{n^K`mYe0q4Z<_9&`xl!ubW-vVtrMZdev%z$DXdIk7!4_X&Q*fvNX1_rijIMMxK(PWDft9J3lIh zlH8Ydc!_|RSgX%kbV*|kPT@ysui5*+Jz#Wh{!JgP2%qVWTv`%j6D|9WB^!Ku>von})vd7`!;K}se2hh)^>ycM7E)Dg zGPGl^1a)wP;nlPx1MubxO%w6_dc448pHaSef8W~XAby;N*k8i@*ftez+BAkr6^bc) z6|f{Ex~h;7Lr^`BPS;KjfG?%s46=5KO0?_#$<=xfa-NUFo;~CpEHCAB5`c8Tr z*+zcB6rk1L-+>uK+7l)~AIe+m8#vv2%YcSRZ07&eWHQ|LVPzh1d$!HC4^u=O_}!8- zYiw3UQS-ph1D;EDjfcG-Y$R~^A;!WeT_lSy@`$@ITL)?+dm8SGjD9;9jr(5c0QbC- zy1x*opnX^5^2&6`p`>wa(e}vMB^$ zVjVB_fX6^RJHJF!&^UOx6xQ_6XP@CH8bpO>N}81jRZPbgcE1%Eg&#|uLJp5v8YXAc z%9m*!vi24l@bo@7Dq{QJVv@dqW4$4mCuxr;1_4c3dyix(dy=sL1S2<#65qI zn34zU_{J|zq>tneAzSOpnhXvRQogQ*gVDtOzuatfWhmiGSm@w}SSn}GKFr~ksBm~@ zT)-U zZiV^6?7VNK^m%ObMx?l3s4oR(#{`t_WDrnm!(7yZ1~`MMNuz|_*)|yk^Vxx4f<4l@CkSzS_+Swr{xm;4BUaMizX*Ty4@ihf;Eo3w!jS$#T-wog^+PLCS{`=SF{Z zk@#tToTkp3=udFQa`@Qnt@;N)m>rTP zb`+A<{V!cq*I-s01q)>Nl%|frZ(K+lr$BBM8c!` zuHSv#xxC-s+h)e%82|v-`0V-dAOKi20f6~;Us;)+Sg*ZbZ2D)Gc+h(%P|sy@RJ$&VRCh_p|V=g5KS~FMD(C^_w}2B{MT0#f-OAu(wc`Sk7Ny6`Q={`Qe?j z`pu)&UN3esXn@A$>2h#=W9+j{WgE{oA0C3Zaj@SFl~LoR&M7eZUli# zjz}NAJ1Wu|O1&^>QlZofuRE>Nza0?qN^c(A>r`aAl-TVzfBLWc1ON5j!%UMxFd~q@ z{r$BQ=5_bXCa1r6I!|z7$Qi_LsY$;~3r+ z6KYtXJ`w9yvv;QpnyV>$0E5V@y?>vua{0`4*;*M@G zHF5KwirXrdTMG_xo3L*u@}dp`#@}-Yc;$T(0nL)Q;f~9yg=QN07`+=H@9@vfxZPhE z=sA_D%Z=*{1ryyYIXrRy80DesYJkNtCiBugZ7o~7Q9I~p2O3SQ_8 zM&s$-G+JmT;=5I!R>KKX{)4A1C+baf`?1&w&odgo%}zkT2K$V>cipx(N_tK{u?dTv z7>D%Tt__e=d4*u+)jN zHK=;f4eEpR8=_nQ#1L(}?WHH479;PQId3KCA5hXmW;NWFzf?z-1FOFbyfXT=*_Ig% z%vmoUnrXJcw(&D!xD=jOsOKT;s%uThf>PX3-ipg34HK>r`m)>l{;)jf9BYB3VPz+H zplbS`TK9V4H#p1mO3E_M@mrMb|EjgbEOpI@PV|* z`Oz<`6H?zl{98iKk&=LLGq<)pj;x?4@DI<6!C~4NRbNzQ%&L3n6#?^LFKM2P@Mb_? zTK%^wg$NhhG`$ZhsPB6DgMKk>;)_Jytn(R~8}@lROc%EY)BZoakHZTr5RV1+Usmzp z*bl8Mo5t3BS)H+)%FQUn=7IHl{hZ8>78HHySHbgX5AqIY({h8&pSt@_Z~8PT?x&~! z$R>xX>)6U4Hzzm1e+C$|W1R??70r;WC2cLmhXfCIDc1&UJI00DkOv{6EhO~mi0<4N zbd02VmU9HDfWQi!AP?3D>#$KAGF@CxFH3K>%V!56QWZ1Dkl^@bX9|W>-1Cs=RcGYHLw^yc)M5?;;;=!xinIAG zRr9R`L4?j_m8%Z_V0QGA9VI_$o!KO#gsLCp91hslSa|4FR5Lm>_ABWTCx9H5=hZFI zHGl?kRGOY-C}G4eH`82!iHM2|eVK*EKffQXj=Wn|N=jA0`=J3?5vHVaz$dy){<)yF zkY{yKTAjLS+n<>YfJx@e#3soLEj28w# z!}rj-{fG5ja8xNS+HF38)HenGgi^5)JZ&IwBycZq#I#&pPSGv^1IBb;37vXS&Ta%f zg%@v8)8=z(S8Sd~;Jn#2(JME`g7BhllJ*^{)C(pV?q)^6?-q3JSnUJK+VwYJgL7AF zew}fOpB~}x!AtW#VCvCReHlY#*Uj{jmo=)U`m5d^?zRQRh;rjleP}Q@O&dWuUaFIo ztZmB+21PPM!I&FC=vIn?l_=YyG~|Q@a)0LFlzK|EjCga?>BYo(G32P|^#DWf34dJT zwh};wa#O^8-K#08XiW}^$PePyVan>1<3UHlcP;yDOvY|*p7&cJ;lpXuxKuw@YnP}- zSC+CvUNE1_K<N(ht9j0Snv4+g?y5ZEYXv!F@J)Nm2I_;f{SVXDS9D1ZQ?%IG3AzP+xf6gGCE zp|NycSGpt`bsXxaK*7o~hOW%CV(kSUo|M#At9yJA3@eLxho5K1HvswO!{uXr3-Z=m z3b^Ud(}yb2ht;0+LVJ^1@K!h9u>mtsM++KM6;f%$7e` z&=^tfo0lb*QqoJK9K#=mKG0CgWbA znkUmNQ#!x;p_@h!(|UHOZ;%Y9R<&U}^LU3Eg$}ab)KTA7#@W?)^9CYy-9`YZeG@_H z!Jw3Hx=H2}*Q0cIzWUp|{Ca-Gw3s)+U4AF{7LW1Xxe1AdE0U`s^m8ZWH5#r)n9p{#t+M#=t0lMh6;O zL69oDVYPE;Ae2W+J*<4DHkOZ#f`;p3B#@PJ1d;xMbtHfx^eqc$(EFC5;L9sk<&1Sx z2pHvR#^mbmm0t48`*U;5CpdhgDyzgy^BA_Ov8js1?26+Q(w1jV6EJ00b_LFO>0!17 z|0?;7_tj&b1U{A6=FUDTkp~@Nh0@q%v5c1-|CCZjc2N7QCVd=3n^b+5&6PH#kG-)N zjoZ$3$SJOqK$K0kvCh>gw_jU3ul`50?r*QskH!Rg+)oC#Py zXH<>`^5)?JYy3!))E#a!n&6R@V8S`TA9I#*5Fn`Yq-8vP2vZBEi70ny&zfTDgQG7|?=wsg%nM}SuA}ETp8er&@0 z#l=as{>qa!+`?N-ELCc4y$*mnj!mtPT}I#*DV3pE3EmGi`TFxrqvm5k2Kd1b^)xi9 z#*v^I)ZO5b^tGg!pVky<)Clb&^lnWh{d3sHMrad^EnAq;NzNIqE(lndSvoHxZ^<2M zJ@hDvRySCFJbcHx!;a&Vn2!`bO~oaE`81MO&TYFqHnyQ!{tMDz)RplIZ<`}L&F+{idDSHmESf~Zg zV26GaQnAV8$+FP6a7dJcd!5q-5+F7RrH>BoHQNHG(8K$GFyU;!*-d$iXZxK5+KsW} zH^*SR9x21jamKk4T_=QjLSA{Pv1T|HJRaV#v@Zgvj9+2_m zBfj+b#;*9HfJFF{m3T=1u$ulrw1zP)dUny?e{lP9fdAxNLwDBC+4|CqBi=SR-m z5|$U=2A;GZ{1OZLA9I?MP`PTe3EE?Be~~d0s0|AFH?lV|1!Wb-KY7p9CWfO%8V7ke z8>pW+k_r#Ag#eIYw*xToBZA#Ey#P)e%|DKR?cw!Y71%Ap9gE=2WKh!Mq8N(ou}=5a zfh1a}rg$t-ihGnUWw$6;gPTzLYhyDRa=*cb#JYA-j@SYKeqOLBgJZ3^za*u^RucC0#IvDONoTd`U5rncBwQFUz1LGjD4h)eInsMTKKM-^ejy*H z>l(w&=$=+JFRqT#XY*Z~PMFa#?UC|%K|s)P4-Ulv4*YYE<96R2%6D@DgJp?~TVrL^2~1LL=KJ+%S0YWMR;O~U<90w7mqywWk$q$ z0suTcgtZo|*!Ji7=lE2#1#9>u0a`-G*T}3dsg!|^6UWn@o-N9F))xx-@Kf)(7bk=L z5}Q~gUxv3?i(1Tos|zZ7UdwC;FS%{=`Kyi5qWEVT`k_d&cRKrLzV<}j6)zs}Z z-8)D?3gQo};zHQ_SP#s0pMzUQE@hSsiWg2ocKt*ZCQ}uAR_i1@KD((|$TI?u>TxO1 z`$?>&0HZlRrrnG+%oK8RHx>t~^?%4MfQ+IU78ApPkHr54)l?;on?wA0>C zdrZIIlo0dYxLMx;FHUycrrKO(xG7(YPhXgopjJZRFmEjJxe~n-^*kzo!cRf!nd=et ztzHaQw*T`wf>$C-?wo~w-pNuLoFHV2#tdjWC{fNI@m+x5$*z*9Wf@C97|el;)AgZd zTQsLA+8<-ponE~;ikSd#TM}$3IHg`)`f@r`_^HrPUGgU#2fj03Z@Rku0?Yz{rmQ7^ zNloLIt?>eKjHqt$Sp`@-+kk9)((+gje{Bn)UbawH>cEU;rf_GM9*M#Em#E<%NuzK? zGL+wPQ_(87&d{0ymWS|)6;U3=%Pj?jRnhhx>Q~l(T#HYiCDF|C+!H#fskVKQC$D|! zRpQ^!`AmbnJrKRoy#`|8`LCxJ7rfke5gp>m4`E!)i_QQtiDNn zRql-SR{rXZ%Lx8uc<$BMk#dAC6#H?>VWN1ny*4lsk-<^iFQAtOq_;av^jnLQ^+ApB za*-pcqS<1ijSj!Xyiw4%_eIFwTZ{(&P$oTtii~v{QQCnFK&~hxbe}_T*uz0j1AY zs)B?Q)or#%AK>kSy+<_`O&hLS2~;+#au?j41g0YS8lK;sv;0~0w(~}9p6XkUGQLjc zZ5L|`+}flTK2!Uj;vb(aCe}h{wHpRCU1lpiT{d?XNoXJNT$?#s@m|O|7TGU7^xmi* zjxgC2g^_yR1;le{UFs9>`1hfaES7HW^IeFheu=l@y91;;W>pm&=)w%c(v`!KXT}-| zG!%F|Wt(sDG(oKhE&k)nSXXmN!3SX9I32Vy2pzFJ*X?_yv%BN#n~Lyp&2TH3Dow@M zWbKN?kr#59M^X)9McGzkTf#n3u=~mu3Rz0c9imcR6On*@^P_+ave)-j=#2VHy8?{6 zgBfPYyoq#D2FA$4L&Ij@#e$6$)W)<`9J-lE)lX=wFsj6{{bDFsf*)foI)K z$FIP^M<}xXLP{rv)FVx`6!HI*lQz-=AK}+<6)z8`iESCmOSHS(g=V>d@W(rzb%Z%WAQs#gEe=+*sjfwu3cN)_?J;!LE6j{)d=!iZ%N z{d~~-EZ%PnX|}DFSe#0OQ;70p`&^7NN7gSgBg7brw>5e98!^l$Sb~Gt;5U2JT z@d%fZon$ZztN5_8Y1HP2DB?xiqm9;o4V%&QRymAo*xzT{_zKfS$2QskG4m-RD&5UZPy9Qtadw-a_$DTI=>pl_V;f=v~sH$jJP#S4){f3 z{YNv6zwO>fv>|Xv*tt)QNG5)?1vZOp5 zI)0BMtn@5|l(bH+d@*iLYkTvFnt^MMOOBgH=-m%*P>QWp2_$8vFlQ}E7T`m`OWV;s zNGc<-f^-n}6>g$|TBEm`-19DBk5ukTe*5NvQ z0$GHiDVQywKYZQzY?MzjS*`^5E_&SfPK6#f^r|(<%%9(Aa(XtrYIonQW9O0DDc68) zRoQXyUbeN#kQ}gBzvh@JcI%|t&Fk&<8pyWn^`%Z3Er9(ifac(-*9nTtZBp{<@ozHB zfSM%p^-1G|R|hl&drkOQ&@sKqk3V-{MS<^U?EK-!yGiRlgXt@C zPj}Q#3jQ-ZyR0+f*&Y!=%aU0j{Bn^AnrN>hoikk$PLt!=B%^TW5%u zy?K;qs(#JOX3DWlR(3?A92$&P2hDCOcmImC3LxX{`76y9X5{@-Zs%6}_GdRuzTD0G zrjN+f+oKod@psI}nWYq*UN^U+-@7a`CA1Qns)3!N>@t|Q(Wd>A7zlguBadBH?=D^l z%}^cps*A!#HA3B68iq>7j*Vhoc+D<<=)jjI7aO(%fdBHp`?PZ_Kz?_7=R|UyUdQBV z-YXl<66m1PWn9_faYxpMbF6Vi|(An zTK#p*EVZ#*;$CM~Gr&m4)kAo!Zr)boylo2{0)bW9ClOxZ-fHMmH```6rP%@bFH^VV z&&d#P&-r!a8L({*&u^!H{XpS6q-iY@=Vq9N zt+lK&tZv{m9huQ29&LM$D5pPn10CixW0;EQ#_h*~ne+NS%OPr3lia-yGQG0J?SBfn z=9mNxsQKC?F8~lX?aNn7ZJQ#~vsZP_Xfi#_51CP}ow7erJpWV4E%oz)6{A}p>{|^W zx(mk6i;xfN#4kKvG~|7}HddI_;RzeZ{I`H5xk4;Ua@H}QS71$|HJ0%8do;P?R%Ob8 zI6mG+CeL}R1=C0ShNNT3TVx0Ab-2S`U~wZOKTgj~*7Kl3CR(KzpY~xcAr&rrQBVm_fQdY2o(`ucSL%vnvGE03nX zgyt4`rj5-_Y7FPjEOh}Don=QvBA5RHFdn^+k-yaHAO0jXW4Fqfq!?6`B zLpd`R-{8D=TiVh?8qRXyQ(?(egB`R+j82;s!sk-U<&Z~<_5dAxlEc@N`Qq2BR zGxp`Aa&tZ2&x2>3#rKDOTW+I=ZAc`E;k-isT?NUc(L`2Bxjtn=TYtSJEnX|_mBf*8 z_*+-)86V^bB>k0wL63VbTvVO4*aMlH)(+3y&p?JG@K@%e8WXGBq~+tfvZCP zY_70B5}o5Ysltk-i#<%?&mSZ(oHe)kk_wE`7a0-Z@CqcUs#S)c9bvk_jxyM*WAd|T zHZ}kQjq*oVkXr!dY)n9DdvuG)%{l_Ra&HVca*)s#dEa9DdP>?Kp&G<;&3Gc21mIDE(9_ zG$hZfhIDNei-_r-O3WWE4cyR3sK~gvGccR)gHdfFxouPVM8b>1#j6}hX9j4L66VT! z>sS;`mgk$+;0s0j)zKdeiJ$Qc1FltN-2^&k}lNW)o!5%ScnVxGw<7A$cm@ycH zhXbAyks*DmPFL#y0XLSdP+<1;OrghZ*5t5c0c7Q?@VOK>2}^2|Fm8Uir_$3EV*4-R zJ6&R<7BlX0WDTxf@LsXA(nNoPF-q0$3bIZo8K}B$z&RdLME*vFG35qr`sRc-z{;C6FB#jTOBB-=0@))T}mku_qMJ7@&=W=HAxvr;Eoj-t!J z{ZYGC9vYLi|5W2Oo!y$9^{QgJ+r7s`4~0S=%o6{GULux9a>SU^!bAPWH-Zh>xBXNN zKql+{OHCV>ATkW7mKK2G4L?*cl5i{S;TypS_*!PmdvVIouqYoPvCS9_m(;^qt9K`6DXTg|!Ng*&d*G`~42R zc<<=I;=}HQA|avx8F@G6>TZ26msB+#8qQwmh0KTR@o(Gtfh^f?D#@c?5;w#gzpU@E zC;4F;DO`1bBoqCl5%Wf38wz?b5K6Y`-%=5Vq6 zhh9l7CzJGZnGvN`Fw5bE*iNumTz)$ABLf z1}x@3A546_o{&f*wZBr8qQTXT>(bZv z1timD3C4>|NrqzCM$9Y~1O7NUWMXyd*>8tJkcmuD(ro0XDbv-p_uQ@aL(-c>y}kDoZxHET>o-eXNVQLV9w@F*DO zhj>0UI^x_lqc;T4>~^3)e2FszMGh}u2N9cpI58alY?%!78MW%V$~r^vRMkU%tuBlr ztmYJQ+-f6U?;-Mu{h;~wW)E^3VG|9Np5ash2E(o*Uubyo6N-cSgVwD%-A-HUL4a@lw==!?|Y%Fk+v6gE!r#jo=P5lm6vH}~C zJ;J-(yoc0V#)M<5y->HZ(Y2qXiXA)H>)L9oE~_o%DB0ra6*8v}pW^Ec18|37Qm3v5 zUB!7uolz6puJ8w2XvkPx@m}V-FFt;LhVX?1@n^^M{a!nAFElK=!+Q~oXi|N&Pu+vK zO^O#QG3EwpY;+1Fw@a)VC#*bPY3Q|i+!*Q7VQcZg?nU~nl>Q6G(-dFkN)n&TisZ1U zoq5R9INwV>C`ZOIjJ#5gau1{S`{v6x!w`WgzCZ+lt`RkJX6+do(l5v&TbWJ3l0- zks5}p+~CjjBq1Tq?H+JULVGTm8kVU}iWZNo$?4(eAxj&;R}yc^)(^%kKJtQ57K1&3 z-{#sX^8$%zR+xQ7TI#msS65AsHeY-N?y~^;q?Yn8n!5G4an_L&OniE%WPd)ts zI#tH%8jH9d4%T7kw?nugZT7Og_cwoDG4lz_68_Q77r`IeQXaH<#no&zU*n%H2a4!|aex(6DBE)TZ#6mcIYJsgc(#o!`fX$RX9lwGZ!8x48S+;8{?ouG zk}@J^XY?1-vj#wj8BPnIcfs_*x=179Ri3`}M}HdJ2s0&LF-lyZgEQH!-3f-!`j|AKobYf>UmrrE2bftTW}Fy{b*P28T2+=LvEX z!&4e^>5l6Bt&ovz+wZn^dpEq%jax@?qR zLU`BsIMMjHhuJ7TCF)IcQD30@y7%Pp7#}AoM7f@QdJ5z+Z=67p8N2;w(gc@ZLuu1yeew@YQJ1wZzAoQZd!*iWxt$aQoN3o32A+@ zZi5TgrfEU4VYUOm(@HQi2t_9A@3)*LDac7&9$cw!e)F0r303F#%1|+*Y-YC-RBKez zSXaE$KzBKm;Pm(0OMbNy4DaS8Z9{%tr#RwnOH=OpDJ3*Iap$mEO-N9Ro!Bj_;B-*O z>jHHIdF^rI-hhv1z;xvHzjSQgwz}|c_Q;r;DI{;Utyn|}t1 zWE>GUaHsAwD#ne^D+`{j!JwM28b3k zP53>o$0dF@L@9Irt4%j4krYlqY#IH2Xu05*Sv){I_h&A%j!|&sEDmnfyJ27-kfS1<05fhzqr&a!9Pm^mxMs<13Em z^ZUXeM19h}BkUd6fsW`4;i)6?)e=yq=>l2QL5&T9(M9i19@~|hqUR}}&1wKY}x8Vd!6!X$gPkQ*zO@e^3Y^ga_C9DyH_5QzaD z$Q2<&!obD+z-$(-H4R2=P6CfE@}g#aP>C@)GDh1Ln*r3iM$obu|CX4tsgWgrqOVSa zq}omnLno7aUCj!Nyc%J*mF`&(@e0RV$|UndNwLFL%tW<`Wam=5#j|*b+e;+gU(A4U z^}EKIOY6d1Z5uh%NlO9#m)Q6eTWA?TGTmwqs6EdYO=DlXHXr4M`8+((j~gamL(e8^>q$8 z?Yd3_j$a=hY|rmd9*<)UQG7Y#0`v~j^-0}@#KF>b;@SM@A&KY#G>*7YF)3e!;ICdx zx=>`qs3~`)*{@2}XsOYy)fUx>frIp2)rs4zX-LSJ_aojUh<+PV@jtSMnxN&b5?#68 zfsP!eT$Z6OK*(Qw!h?xEi7`xF!iao2v3Wl>8P`IQo%RvteGVgrECu5~|2}(S!m{HD zW6>XiKgaWXJwJinfcR_4=wHZn`@`GpLTNIs${Xz%r~-?sz(5s}{^FM7{vIZ!ph92I zvMKg77M<=9F0|)V3|j>eLOwo)(7Mf2#qTlibiVA4Ywg75`PnEMJSvN1JixZ}^O)!l zMp-`DE}P#g=SY21kez(*P?Bz|QiEy#RZ{aP{COxi3KhA~i-esUx*Q!Jwu^NfJJ%Xx zbyZ=3V!||6F716=dWvHh>%Cr2EWAZzjc7uM{ zmkTCN9p1a55Sf=?KdSD9qTeh;6ytEwk;oKPB>O%yV#2s(P?H}QQxUqj9`}h^SqIM* z+>6zGf7TR?Z(bQet?*f(rxGJQgl=WSmy$6nPid{()6b75R+imTp;HOC3#;wnTV1f! z2mh|ONA$LLODyX~DuF}9x0K4BLi_^c$9qa^CL@Jz4;i++dnXqwoh9P2tnn8Dzwn`Z zLbn7sZv*!GEt&SFY*)Fj{&{_Q>f71wgvfev;z^HnkqA?c7%GBR{&`BirpdBXjCDrU zC7W27mkM~h0G2qyLMR=PzjAd3DM)mYW_k**hh{3W|3xAw)Ubhaq?O1&e4UR z!ECaLZ4+F&hL}jdJF(IQVzXC9$}nw)`!mtY3X(=?H!g8Te%G@HR!zntc5U(sUm(?3 zZcKpPtW@Zi28|WFfiR(wK~|nW<7a)K6J=~^S|#IxicwIw-YQ(oA7|@!Gw>m>A(Gnd zkavuzdq|2_Uc{}vD0F*EQvVk2O$RqpUL;2*fBu#D>3RdpA|^doW= zG^zPsNzW8{Yc*GivTH4(h3tS;cBH0TWxtrDNohcj$1!TpFlCHLyI0|fqmbPO z9R8*hT;3-3W|5@TDB?*&q*wrz6}VAhW)0mc8{J|5u!jG7K)4A9u0fEXc1G)MY1?Or z5popp&%F^=89w;abNZZ=&>N)n5^>$iMC$k(>GWHq-^#hCn~e@abDK82#l995qYAWs zD{Cyii%d3%^L(iWjq$3Fa6b31T*5`MpBs7Pj=#x~y2Ta@d7G?m2;EbCy<3~&fdcjW zYeLt>mLX@?bM6obAH@s7ht93ps75pwQz4tr702|*eRr!s&t$HUolk)h-^!zvL=+Ak zMXg@cxs~a>w%%(2mGeesCQdwa*0f9Dk&b)Aq=9iRjQ0&5purdt45sPdN2`#?8Dksl z-BVhqC`VGf16TX2I0A>evFvI9CsT?aU6q@tKF5dEw@`V0FjkD}OEF~17^|_|Pu73e zbHY?lPz^j^A{7?HVytLFA8t}k{7jB8%_)1{{E@g~e4g|fd1)lWO( z$^WYNQ$o!D5oBer1Jp*_YD+`$@RViGp0wmz{r7K_{JW-Q#*_2ywOhc z>p7at!979`+wus^$)ik=n|V(bln5{484uq%XSme1l|W7z7rLo+Tl@6Qo1e)vYb07h z$0E35Qh!BZTkON$^G`@_4Y&FAy6(U~tevvkHwE`Q{-pRLtuV9IXc2dAt8MLqIT@YW zhI{<)2)|oTJi`>HjcNwcCZz5Ft+Sru`SEC>7eH%~A{ERjgITI^Yl0d3!*Ah@;9G|> z;Z^02O8o&48>!DRf!vK_fa|$bl|^R>nvQ|rw_!V zgBw@Is<4}pekpw4Y`HP%$INWjH-)x4Ti{>(7~~KZlqvLKfnPMtM9Rl)%yY1-x%{Ww zovN7h=40S52R#n#pGC;!xlIkzc#N$}ofb2*q;y#v8NaK{gfeqq+mNf;l~$~#x>n_;a*f+Zjd`%ITV!48dOeNutR-D?>n`j zX`VP~HFIOG+oKSZ#-y3->|O z5+{sL=Q}W*L`;7;xd+(+`?Ml_ri?dRhIslQ4vNT*s;fQni@tTKEFe!whJwo#$(@q~3eFX;t+J192U?DTE!&}Vj& zy;a+moPtX%60!+O%vr)SP}yr6iyW!p=Mf;kU8E2w`iEn!&(rYV`0D zyJ_0Rs;?=D9?lY$lPTj42gxcDN8HzjFv1l~6#~Z^V z2sF=4uJmw`Hv_B>KRgCTY9BskE?KDm1X26RE;3bPc9#Y9X0M(CVR&+P`5l@^TCP!~KORhf3cq;fFT{_#37o|C z#^p!LBiZ{=Pxr}kO{V!~d)_lGb75yH)Tu`@6WTAE0+=ejcO|QBWeB8n&#P~?(H{|>yp(w=2}NGS1_DVY5&h8y_@p8wunBRN}bj znPpeOIGvI^rVgjUMUsGEFFyHJ=Q#2N!U_4eQzrpzH$j-_7rP&E7w!@+xbLepe#qytU;*wc(ElLpMdKT z1);Zji2DB=vQ{%f=^)Qui971i?tUS`2?>3MRoR*(Y)6-`U7UI5A(M zna`3Psg!b|bzB5>_F@x24*ay@eLcdB6UHiTj+9W$AU1d@!7*)jtvXh{dS;mR*?6{3 z0&WJAye!7qfz;Q+1W_$Ww?SPt_1P#h4i;}1l`811*5SAFMTQGQdqjlKc5%VNj1=^W zYnm31_zNB?n_{VAA}jUHF2D4)cg^SnF4?;z$2d3Xl80WiC7N%ED1}uImq4&*>KEAa zO&Dg|*89&Cu`jjU`~}AwpRHPl>V?C!;UwGF2|dT$d#-gTk&t0kfm^tO_zafoD8mLX zjyx|FM(fmj8jS=b8LhY{UmJofGNRrq*#n9c=2A(kl=@+VFVwGxN)pSzjLf}0_LclD z!E^v`E{oD<)dC_~kO%ANzN`f=CJQ#?F$_J&SjeLpNyN9G$P&p*qfLC`h0Ae|Yc(x- z{Cmmhv(>uYRsH_)!rYj~>{PDMtyb3-+fIF$@MK8Ox#~?LLT**HlR^_)><7Ct$)2+d z*g3i&g!+ZNjR^PJy?-0N{*=Jx*@1l5kg(uo5%xRtvL)yA$W~9r9Y9WO7tC=u=Qp_&a)utF*%LuNG7G zh)&$=iKL?UTQDEu!}As$-1&Z?lDf&uOW7O{5$XlvwA1x`3BS~{jqe~+Zmmj;A>YMh z$Bs*V`!u~h{o$l1*{u?uW_%qgZyV!QW8CBxe-1%zC>+Hxo%n#gzAHRu$PhCrihl)UHzd z-Rimfc_AvT1&?as^&HaAIE3AxDi8?eZaNrNu0N2eo;RGSilBjQ=Q!*x zj{I;mknwQNKmGi_%5iDD;q_BC($X3TLz>6$7(3K8J0j5ff%MlKzdo#0%xq~Mya+T@ zLbv|A{FbJZ{~Ae}*_K~l7$+gE1qrY=OWp#o;Hs&Aa$K55ziP592|VC2aESR;Q=V3` z^1%hOn!DN51y=8r;uMZLkWxQUBHv+_x)U}fret*fEmbuo2e-F655$J8wiGC*&h*un zS*I)5W*bhVY-9Ayyjg_Vcdb195!k4G1=v#_a!g4wfFS9AD{m)FXGaHEmgeu3=0N=3 zzsDQ+ldUnsv`KKn^NZMKmOQWqx1075Dhh!Uf4I-DZa&1s35f053PgH$PWJD&2X()- z-}Oy=D>ehdQ2$iopg50o7u7#_$CvcP6Igq)7@-s6TeVoIv}O(&BKZa9n<)%GGqS&e55iOWn6>-;>a9e zAorVZ0|qV8nz}Jh*{EKMPRD5a@si2_%p9+Crp6}%#it6`f!+8>V;z`Q&7ABBYNVt; z-&Ej&96x)Tg1SL@SZVuyYhq+}nkN8^`+iaOlcnKa6Eu$_nHG~_{EJz(k`0w2%L6(KfD_gqq=xQO^@St(wJyvCM*vVQ z|DvnwyEh;-90iU93=nkn7lDDPQDOHkR5z5Xay7)FDhqFwD&|i}ylkBLi)S=>h>=Ua zr-`?$0vKX^S(-TDYEY*M&~7;9$0p5j1JOAp>Tpl1|Jd^mQxM^p5jb|jn!aR}m*^SU z)oeY9_3@ZRQj7v*8A;kvGcxf5{xN~5-A+oMw#d`1m zv?fIXrZZ{w@HbD6*u8B3+H@Mx!Z2ac*6=u>i1I^<$h*~TX@WXXaJI26=yyG(ZI@_X zrj>vipj_ElHla_|VNHkj;3GAC6p7(KPSRc=I|+qt2TtgwrLF;Jj8&yU;bt`i=ug1D z+@t%jwV<8g0?MWd>ZtloF5^E{V<@%~7;?NM?fekJ$lL+b&llL;R(Gp}e*pP3jJjl$ zuM%^WhIZqB6h1dkfTnOG_0FCqxPR~NMYB{$*MLWba~$$anP{Bl5o=Xm4aT!`{)G#xw6OgBq&nB&pyKt4+dDNvg7D}Sob zzP~;%NMAQnLv8(dpI$B%KTI6%uver5KyS`}(Ni=_vD`Y$f2DiGy0#4zYajzZ{fqJ0 zhk0vlRBc<3arwvpv|LUAx>PZ<(4@n+LOYEf{nTj!@v{HEqLF;r?>o^!RkPUM|LeHk zSRi9+9f6F*e+K%$JSf#S*~a|Do(VKL{nNeqo*D}iYKT|0~w3*KzS}QM&V8u!s+a{bt{5EHH5d!Lc%JpUR!H$V1)H zaCToHmas27akd38?)^pQ2lFe?fImL{Q>xwJ3C_Sm_meS--1e-83(PtA#mDKUUm&Se zBIaGs!^}cFJg;?%;bGw@ULC7!)U=av=MnqS_JMIU7v5zN|811p7%*Vs9r>!Sn&fw= z%tsvRbKa4p7*jIn-)O?rSPJ0pcENQ*V)e?yw!%Evl(I!~=3hPhZzow?HPB>m2apHV zYaMbp>f(%Eo2KK5<`V*K<@6%XJ^Wd~pAy|(UPY;g&`d!o3ke9$%>Cjsw~(LB*~m>Z z-(xzlI(ePGprNRM!6Dzj*FVOxRXJJK2yV2bHaf+ep*ZNOk`8qeP3KpO1Dt-VFa^sP zINKq^I~yws?DNa8F^?w*dHw?bZYpZc526e_Ag!@_ckjIcW#TAlDES1VEM5S(i|0w}!zv2w9$vg+bgjNShvUMyD zirtEBWw|eduzJ8ap8vdw=x8YV<)H-jxach2M5gVeht>+m5xh|Ib>Zr!pBoB?)mstH zq3B{TEr~1YQ}&qy4k0~}&lfY>{Vd3Yx}_O~K12ku$ZEPu@&wqg091+-06O9Duh>&+}-d@|Cz8o*WILjbPIaE-rlv4TxohomqzFtYT< z2<&CIQzMQ3DuTLIhkDmQ92R>F$I`(P5@6bhR^ohV~?c>OrRvJzDg?-rDFR(~S(Nt=o4;Qq-Vo&Z`%$Low5x*n%8QJN+d>mkD z!M}xXNMZkl?s$LN1qzqE(!>z7p*=L?h1QL^ke<`_STFX<)+_*`aGAP;Y~9&mmCNrP zS6HRL(uRmlS2U>Ju|2DyI{k$qZ4Hv!4am?aUI@yVHW++w{qvi{{uwp0`i_fe)iH7T zNo4+Lxd%G5*7*{C^z|K~I>^74i;yAyV>(Yb`yiVerZyOIGc3d;sV+& zZ~jZ`xv;dh=uvjkS4Mx$`qr#93>I35-cOMFDO9RJ+Nvb}lM(1^ZVX&UIPBO%_UQ;>X;1|3R zo~9$_O|McsvZhghs9K`9`M5NW0`ye+^XF8UUTVZ`-q#~~%h_+xojzE<59&n;hmUq{ zMzo6gS?Ui&<>fK^zYQA-U>C@Lc{ z6sS=e&t<4Qz`^Qh3`fPIba=@rI?{Ptfp}+BMt~jRlsaYo<}EZ?eTIKRXIljN1)nk0 zWn0iwXpU9!^f_`VrW|)={u1>ru)gEIon1!AQes=F9n~DqQWz?_B=5aqE;XouBqTxY zM=MDDSQ6H|bCaqE7se2hD;%q%pp8g&bk zRha!~c&s^kK#mgKPwQ#%*zw-6yqJVIx2%Nt z^Ca~-C|C`LZ=^8lk{qtrA)GglQ8U<&is>{i<+F^6La3@OmjlBfOP5pw;{VGJmUn#I zMFaL?S!Qs{2zrS=EXNkNaGGT#i<};j^4*!%9T}*-*M@z;G_8kIcYV?|s?x|lz71M~ zWi&1(TBXEDhu$#)^Tu;a=RbatU+fF5TZ>v;Pz}@*R*sE9UL4UvU$t%GmB4XAOPVmcrG$rPgN{F01ca!rF_n> zj31y&>d^8XB2k8<LY0fghM7*sW3+^xMB^C#D^wt1RpO#^ zXyL7>L$P{Q1Ks)ufrev5S;GkVV-Sg8192ic%mj?sO*CtL_=bZD_UCp1`oQZP14D#y z^aY8lxngeY1C@g;{e02UVpXs9dzE$NwlpoFa5QQQY9~Z1L8pX9nwtpP!+-eFKhlnn z?M$BSiX~c<213YX#1Iy>?+DN5tW(Nk`A;#@?jAD^-#8yvD*^-Vz|)rWS!T*7dCUN3 zq=z0%o23uneZRg=X%Hz{Hy~PsNoDyESw5G`!c5cYvqC~?^7eT5@0nCxWL$Jdzf+dQ zrN$4pKi&vi)uYp_NGTm()KXjm1-G~f{iqL;Wi?mm+C>wMXKc;Y?vP+knhk|76C6;J z`xw?R0~_^Crgv}o>@BDJM=FUq=C0LqQr`ZA*pQ+aAQBvXO;H&Ya74g5#6lRu^);D3d>7eyI?nk4VbAmf+{d2f%K?WF7uY_mN# z-eQ{2UFqyw&;wX@nlsmV8~q?%czB8vbJ6g}F8m}}2ju*|kH6<9@l?n?u-yin>|DP3 zs%D%X?B;8wA&^(b-`n$Njrb3L`%Qn%-d*V%3N@UZXNHIOY3Mk|t=~M*49uC{*LG>X ujB@7>+$c11@?2ufLJfKVK`U0M5expdihf1up9wx1+O@-bJLNB7ss8{3uFxL< literal 0 HcmV?d00001 diff --git a/bsp/renesas/docs/figures/set_gpt.png b/bsp/renesas/docs/figures/set_gpt.png new file mode 100644 index 0000000000000000000000000000000000000000..e10e7e4ca4d85162612b515135d2516b95f6e09f GIT binary patch literal 61500 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 +#include +#include "hal_data.h" +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(BSP_USING_ADC0) || defined(BSP_USING_ADC1) +struct ra_adc_map +{ + char name; + const adc_cfg_t *g_cfg; + const adc_instance_ctrl_t *g_ctrl; + const adc_channel_cfg_t *g_channel_cfg; +}; + +struct ra_dev +{ + rt_adc_device_t ra_adc_device_t; + struct ra_adc_map *ra_adc_dev; +}; +#endif +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/can_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/can_config.h new file mode 100644 index 0000000000..9b63a0c56b --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/can_config.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-29 mazhiyuan first version + */ + +#ifndef __CAN_CONFIG_H__ +#define __CAN_CONFIG_H__ + +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(BSP_USING_CAN0) +#ifndef CAN0_CONFIG +#define CAN0_CONFIG \ + { \ + .name = "can0", \ + .num_of_mailboxs = CAN_NO_OF_MAILBOXES_g_can0, \ + .p_api_ctrl = &g_can0_ctrl, \ + .p_cfg = &g_can0_cfg, \ + } +#endif /* CAN0_CONFIG */ +#endif /* BSP_USING_CAN0 */ + +#if defined(BSP_USING_CAN1) +#ifndef CAN1_CONFIG +#define CAN1_CONFIG \ + { \ + .name = "can1", \ + .num_of_mailboxs = CAN_NO_OF_MAILBOXES_g_can1, \ + .p_api_ctrl = &g_can1_ctrl, \ + .p_cfg = &g_can1_cfg, \ + } +#endif /* CAN1_CONFIG */ +#endif /* BSP_USING_CAN1 */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/dac_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/dac_config.h new file mode 100644 index 0000000000..99c30532b2 --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/dac_config.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-19 Mr.Tiger first version + */ + +#ifndef __DAC_CONFIG_H__ +#define __DAC_CONFIG_H__ + +#include +#include +#include "hal_data.h" +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef BSP_USING_DAC +struct ra_dac_map +{ + char name; + const struct st_dac_cfg *g_cfg; + const struct st_dac_instance_ctrl *g_ctrl; +}; + +struct ra_dac_dev +{ + rt_dac_device_t ra_dac_device_t; + struct ra_dac_map *ra_dac_map_dev; +}; +#endif + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/pwm_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/pwm_config.h new file mode 100644 index 0000000000..217cbc0b64 --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/pwm_config.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-26 KevinXu first version + */ +#ifndef __PWM_CONFIG_H__ +#define __PWM_CONFIG_H__ + +#include +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum +{ +#ifdef BSP_USING_PWM0 + BSP_PWM0_INDEX, +#endif +#ifdef BSP_USING_PWM1 + BSP_PWM1_INDEX, +#endif +#ifdef BSP_USING_PWM2 + BSP_PWM2_INDEX, +#endif +#ifdef BSP_USING_PWM3 + BSP_PWM3_INDEX, +#endif +#ifdef BSP_USING_PWM4 + BSP_PWM4_INDEX, +#endif +#ifdef BSP_USING_PWM5 + BSP_PWM5_INDEX, +#endif +#ifdef BSP_USING_PWM6 + BSP_PWM6_INDEX, +#endif +#ifdef BSP_USING_PWM7 + BSP_PWM7_INDEX, +#endif +#ifdef BSP_USING_PWM8 + BSP_PWM8_INDEX, +#endif +#ifdef BSP_USING_PWM9 + BSP_PWM9_INDEX, +#endif + BSP_PWMS_NUM +}; + +#define PWM_DRV_INITIALIZER(num) \ + { \ + .name = "pwm"#num , \ + .g_cfg = &g_timer##num##_cfg, \ + .g_ctrl = &g_timer##num##_ctrl, \ + .g_timer = &g_timer##num, \ + } + +#ifdef __cplusplus +} +#endif + +#endif /* __PWM_CONFIG_H__ */ diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/timer_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/timer_config.h new file mode 100644 index 0000000000..adbd4f27e4 --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/timer_config.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-09-04 Rbb666 first version + */ + +#ifndef __TIMER_CONFIG_H__ +#define __TIMER_CONFIG_H__ + +#include +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define PLCKD_PRESCALER_MAX_SELECT 7 + +/* RA6M3: Frequency ratio: PCLKA:PCLKD = 1:N (N = 1/2/4/8/16/32/64) */ +#define PLCKD_PRESCALER_120M (BSP_FEATURE_GPT_ODC_FREQ_MAX) +#define PLCKD_PRESCALER_60M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 2) +#define PLCKD_PRESCALER_30M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 4) +#define PLCKD_PRESCALER_15M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 8) +#define PLCKD_PRESCALER_7_5M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 16) +#define PLCKD_PRESCALER_3_75M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 32) +#define PLCKD_PRESCALER_1_875M (BSP_FEATURE_GPT_ODC_FREQ_MAX / 64) + +#ifndef TMR_DEV_INFO_CONFIG +#define TMR_DEV_INFO_CONFIG \ + { \ + .maxfreq = 120000000, \ + .minfreq = 1875000, \ + .maxcnt = 0XFFFFFFFF, \ + .cntmode = HWTIMER_CNTMODE_UP, \ + } +#endif /* TIM_DEV_INFO_CONFIG */ + +enum +{ +#ifdef BSP_USING_TIM0 + BSP_TIMER0_INDEX, +#endif +#ifdef BSP_USING_TIM1 + BSP_TIMER1_INDEX, +#endif + BSP_TIMERS_NUM +}; + +#define TIMER_DRV_INITIALIZER(num) \ + { \ + .name = "timer" #num, \ + .g_cfg = &g_timer##num##_cfg, \ + .g_ctrl = &g_timer##num##_ctrl, \ + .g_timer = &g_timer##num, \ + } + +#ifdef __cplusplus +} +#endif + +#endif /* __TIMER_CONFIG_H__ */ diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/uart_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/uart_config.h new file mode 100644 index 0000000000..a374567b36 --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra6m3/uart_config.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-07-29 KyleChan first version + */ + +#ifndef __UART_CONFIG_H__ +#define __UART_CONFIG_H__ + +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(BSP_USING_UART0) +#ifndef UART0_CONFIG +#define UART0_CONFIG \ + { \ + .name = "uart0", \ + .p_api_ctrl = &g_uart0_ctrl, \ + .p_cfg = &g_uart0_cfg, \ + } +#endif /* UART0_CONFIG */ +#endif /* BSP_USING_UART0 */ + +#if defined(BSP_USING_UART1) +#ifndef UART1_CONFIG +#define UART1_CONFIG \ + { \ + .name = "uart1", \ + .p_api_ctrl = &g_uart1_ctrl, \ + .p_cfg = &g_uart1_cfg, \ + } +#endif /* UART1_CONFIG */ +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +#ifndef UART2_CONFIG +#define UART2_CONFIG \ + { \ + .name = "uart2", \ + .p_api_ctrl = &g_uart2_ctrl, \ + .p_cfg = &g_uart2_cfg, \ + } +#endif /* UART2_CONFIG */ +#endif /* BSP_USING_UART2 */ + +#if defined(BSP_USING_UART3) +#ifndef UART3_CONFIG +#define UART3_CONFIG \ + { \ + .name = "uart3", \ + .p_api_ctrl = &g_uart3_ctrl, \ + .p_cfg = &g_uart3_cfg, \ + } +#endif /* UART3_CONFIG */ +#endif /* BSP_USING_UART3 */ + +#if defined(BSP_USING_UART4) +#ifndef UART4_CONFIG +#define UART4_CONFIG \ + { \ + .name = "uart4", \ + .p_api_ctrl = &g_uart4_ctrl, \ + .p_cfg = &g_uart4_cfg, \ + } +#endif /* UART4_CONFIG */ +#endif /* BSP_USING_UART4 */ + +#if defined(BSP_USING_UART5) +#ifndef UART5_CONFIG +#define UART5_CONFIG \ + { \ + .name = "uart5", \ + .p_api_ctrl = &g_uart5_ctrl, \ + .p_cfg = &g_uart5_cfg, \ + } +#endif /* UART5_CONFIG */ +#endif /* BSP_USING_UART5 */ + + +#if defined(BSP_USING_UART6) +#ifndef UART6_CONFIG +#define UART6_CONFIG \ + { \ + .name = "uart6", \ + .p_api_ctrl = &g_uart6_ctrl, \ + .p_cfg = &g_uart6_cfg, \ + } +#endif /* UART6_CONFIG */ +#endif /* BSP_USING_UART6 */ + +#if defined(BSP_USING_UART7) +#ifndef UART7_CONFIG +#define UART7_CONFIG \ + { \ + .name = "uart7", \ + .p_api_ctrl = &g_uart7_ctrl, \ + .p_cfg = &g_uart7_cfg, \ + } +#endif /* UART7_CONFIG */ +#endif /* BSP_USING_UART7 */ + +#if defined(BSP_USING_UART8) +#ifndef UART8_CONFIG +#define UART8_CONFIG \ + { \ + .name = "uart8", \ + .p_api_ctrl = &g_uart8_ctrl, \ + .p_cfg = &g_uart8_cfg, \ + } +#endif /* UART8_CONFIG */ +#endif /* BSP_USING_UART8 */ + +#if defined(BSP_USING_UART9) +#ifndef UART9_CONFIG +#define UART9_CONFIG \ + { \ + .name = "uart9", \ + .p_api_ctrl = &g_uart9_ctrl, \ + .p_cfg = &g_uart9_cfg, \ + } +#endif /* UART9_CONFIG */ +#endif /* BSP_USING_UART9 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c new file mode 100644 index 0000000000..dfe733655f --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-09-04 Rbb666 first version + */ + +#include "board.h" +#include "drv_hwtimer.h" + +//#define DRV_DEBUG +#define LOG_TAG "drv.timer" +#include + +#ifdef RT_USING_HWTIMER + +static struct ra_hwtimer ra_hwtimer_obj[BSP_TIMERS_NUM] = +{ +#ifdef BSP_USING_TIM0 + [BSP_TIMER0_INDEX] = TIMER_DRV_INITIALIZER(0), +#endif +#ifdef BSP_USING_TIM1 + [BSP_TIMER1_INDEX] = TIMER_DRV_INITIALIZER(1), +#endif +}; + +const rt_uint32_t PLCKD_FREQ_PRESCALER[PLCKD_PRESCALER_MAX_SELECT] = +{ +#ifdef SOC_SERIES_R7FA6M3 + PLCKD_PRESCALER_120M, + PLCKD_PRESCALER_60M, + PLCKD_PRESCALER_30M, + PLCKD_PRESCALER_15M, + PLCKD_PRESCALER_7_5M, + PLCKD_PRESCALER_3_75M, + PLCKD_PRESCALER_1_875M, +#endif +}; + +static void timer_init(struct rt_hwtimer_device *timer, rt_uint32_t state) +{ + RT_ASSERT(timer != RT_NULL); + + struct ra_hwtimer *tim; + tim = (struct ra_hwtimer *)timer->parent.user_data; + + if (state) + { + fsp_err_t fsp_err = FSP_SUCCESS; + + fsp_err = R_GPT_Open(tim->g_ctrl, tim->g_cfg); + + if (fsp_err != FSP_SUCCESS) + { + LOG_E("%s init fail", tim->name); + } + } +} + +static rt_err_t timer_start(rt_hwtimer_t *timer, rt_uint32_t pr, rt_hwtimer_mode_t opmode) +{ + RT_ASSERT(timer != RT_NULL); + RT_ASSERT(opmode != RT_NULL); + + struct ra_hwtimer *tim; + tim = (struct ra_hwtimer *)timer->parent.user_data; + fsp_err_t err = FSP_SUCCESS; + + /* set timer count */ + R_GPT_CounterSet(tim->g_ctrl, 0); + /* set timer period register */ + err = R_GPT_PeriodSet(tim->g_ctrl, pr); + + if (err != FSP_SUCCESS) + { + return -RT_ERROR; + } + + /* set timer to one cycle mode */ + err = R_GPT_Start(tim->g_ctrl); + + return (err == FSP_SUCCESS) ? RT_EOK : -RT_ERROR; +} + +static void timer_stop(rt_hwtimer_t *timer) +{ + struct ra_hwtimer *tim = RT_NULL; + + RT_ASSERT(timer != RT_NULL); + tim = (struct ra_hwtimer *)timer->parent.user_data; + + /* stop timer */ + R_GPT_Stop(tim->g_ctrl); + + /* set timer count */ + R_GPT_CounterSet(tim->g_ctrl, 0); +} + +static rt_uint32_t timer_counter_get(rt_hwtimer_t *timer) +{ + struct ra_hwtimer *tim = RT_NULL; + + RT_ASSERT(timer != RT_NULL); + + tim = (struct ra_hwtimer *)timer->parent.user_data; + + timer_info_t info; + if (R_GPT_InfoGet(tim->g_ctrl, &info) != FSP_SUCCESS) + return -RT_ERROR; + + return info.period_counts; +} + +static rt_err_t timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg) +{ + rt_err_t result = RT_EOK; + struct ra_hwtimer *tim = RT_NULL; + + RT_ASSERT(timer != RT_NULL); + RT_ASSERT(arg != RT_NULL); + + tim = (struct ra_hwtimer *)timer->parent.user_data; + + switch (cmd) + { + case HWTIMER_CTRL_FREQ_SET: + { + rt_uint8_t index = 0; + rt_uint32_t freq = *((rt_uint32_t *)arg); + + for (rt_uint8_t i = 0; i < PLCKD_PRESCALER_MAX_SELECT; i++) + { + if (freq <= PLCKD_FREQ_PRESCALER[i]) + { + index = i; + } + } + tim->g_ctrl->p_reg->GTCR_b.TPCS = index; + } + break; + default: + { + result = -RT_ENOSYS; + } + break; + } + + return result; +} + +static void timer_one_shot_check(void) +{ + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + gpt_instance_ctrl_t *p_instance_ctrl = (gpt_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + /* If one-shot mode is selected, stop the timer since period has expired. */ + if (TIMER_MODE_ONE_SHOT == p_instance_ctrl->p_cfg->mode) + { + p_instance_ctrl->p_reg->GTSTP = p_instance_ctrl->channel_mask; + + /* Clear the GPT counter and the overflow flag after the one shot pulse has being generated */ + p_instance_ctrl->p_reg->GTCNT = 0; + p_instance_ctrl->p_reg->GTCCR[0U] = 0; + p_instance_ctrl->p_reg->GTCCR[1U] = 0; + + /* Clear pending interrupt to make sure it doesn't fire again if another overflow has already occurred. */ + R_BSP_IrqClearPending(irq); + } +} + +#ifdef BSP_USING_TIM0 +void timer0_callback(timer_callback_args_t *p_args) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + if (TIMER_EVENT_CYCLE_END == p_args->event) + { + rt_device_hwtimer_isr(&ra_hwtimer_obj[BSP_TIMER0_INDEX].tmr_device); + + timer_one_shot_check(); + } + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_TIM1 +void timer1_callback(timer_callback_args_t *p_args) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + if (TIMER_EVENT_CYCLE_END == p_args->event) + { + rt_device_hwtimer_isr(&ra_hwtimer_obj[BSP_TIMER1_INDEX].tmr_device); + + timer_one_shot_check(); + } + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +static const struct rt_hwtimer_ops _ops = +{ + .init = timer_init, + .start = timer_start, + .stop = timer_stop, + .count_get = timer_counter_get, + .control = timer_ctrl, +}; + +static const struct rt_hwtimer_info _info = TMR_DEV_INFO_CONFIG; + +static int rt_hw_hwtimer_init(void) +{ + int result = RT_EOK; + + for (int i = 0; i < sizeof(ra_hwtimer_obj) / sizeof(ra_hwtimer_obj[0]); i++) + { + ra_hwtimer_obj[i].tmr_device.info = &_info; + ra_hwtimer_obj[i].tmr_device.ops = &_ops; + if (rt_device_hwtimer_register(&ra_hwtimer_obj[i].tmr_device, ra_hwtimer_obj[i].name, &ra_hwtimer_obj[i]) == RT_EOK) + { + LOG_D("%s register success", ra_hwtimer_obj[i].name); + } + else + { + LOG_E("%s register failed", ra_hwtimer_obj[i].name); + result = -RT_ERROR; + } + } + + return result; +} +INIT_BOARD_EXPORT(rt_hw_hwtimer_init); + +/* This is a hwtimer example */ +#define HWTIMER_DEV_NAME "timer0" /* device name */ + +static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size) +{ + rt_kprintf("this is hwtimer timeout callback fucntion!\n"); + rt_kprintf("tick is :%d !\n", rt_tick_get()); + + return RT_EOK; +} + +int hwtimer_sample(void) +{ + rt_err_t ret = RT_EOK; + rt_hwtimerval_t timeout_s; + rt_device_t hw_dev = RT_NULL; + rt_hwtimer_mode_t mode; + rt_uint32_t freq = 1875000; /* 1Mhz */ + + hw_dev = rt_device_find(HWTIMER_DEV_NAME); + if (hw_dev == RT_NULL) + { + rt_kprintf("hwtimer sample run failed! can't find %s device!\n", HWTIMER_DEV_NAME); + return -RT_ERROR; + } + + ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR); + if (ret != RT_EOK) + { + rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME); + return ret; + } + + rt_device_set_rx_indicate(hw_dev, timeout_cb); + + rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq); + + mode = HWTIMER_MODE_PERIOD; + ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode); + if (ret != RT_EOK) + { + rt_kprintf("set mode failed! ret is :%d\n", ret); + return ret; + } + + /* Example Set the timeout period of the timer */ + timeout_s.sec = 1; /* secend */ + timeout_s.usec = 0; /* microsecend */ + if (rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)) + { + rt_kprintf("set timeout value failed\n"); + return -RT_ERROR; + } + + /* read hwtimer value */ + rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s)); + rt_kprintf("Read: Sec = %d, Usec = %d\n", timeout_s.sec, timeout_s.usec); + + return ret; +} +MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample); + +#endif /* BSP_USING_HWTIMER */ diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.h b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.h new file mode 100644 index 0000000000..35347d4add --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-09-04 Rbb666 first version + */ + +#ifndef __TMR_CONFIG_H__ +#define __TMR_CONFIG_H__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +struct ra_hwtimer +{ + rt_hwtimer_t tmr_device; + gpt_instance_ctrl_t *g_ctrl; + timer_instance_t const *const g_timer; + timer_cfg_t const *const g_cfg; + char *name; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __TMR_CONFIG_H__ */ diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c b/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c index 6eb1a9bdae..2815b216b6 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -59,10 +59,10 @@ static time_t get_rtc_timestamp(void) return timegm(&tm_new); } -static rt_err_t ra_get_secs(void *args) +static rt_err_t ra_get_secs(time_t *sec) { - *(rt_uint32_t *)args = get_rtc_timestamp(); - LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args); + *(rt_uint32_t *)sec = get_rtc_timestamp(); + LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)sec); return RT_EOK; } @@ -95,25 +95,25 @@ static rt_err_t set_rtc_time_stamp(time_t time_stamp) return RT_EOK; } -static rt_err_t ra_set_secs(void *args) +static rt_err_t ra_set_secs(time_t *sec) { rt_err_t result = RT_EOK; - if (set_rtc_time_stamp(*(rt_uint32_t *)args)) + if (set_rtc_time_stamp(*(rt_uint32_t *)sec)) { result = -RT_ERROR; } - LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args); + LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)sec); return result; } #ifdef RT_USING_ALARM -static rt_err_t ra_get_alarm(void *arg) +static rt_err_t ra_get_alarm(struct rt_rtc_wkalarm *alarm) { rt_err_t result = RT_EOK; - struct rt_rtc_wkalarm *wkalarm = (struct rt_rtc_wkalarm *)arg; + struct rt_rtc_wkalarm *wkalarm = alarm; rtc_alarm_time_t alarm_time_get = { .sec_match = RT_FALSE, @@ -139,10 +139,10 @@ static rt_err_t ra_get_alarm(void *arg) return result; } -static rt_err_t ra_set_alarm(void *arg) +static rt_err_t ra_set_alarm(struct rt_rtc_wkalarm *alarm) { rt_err_t result = RT_EOK; - struct rt_rtc_wkalarm *wkalarm = (struct rt_rtc_wkalarm *)arg; + struct rt_rtc_wkalarm *wkalarm = alarm; rtc_alarm_time_t alarm_time_set = { .sec_match = RT_TRUE, diff --git a/bsp/renesas/ra6m3-ek/board/Kconfig b/bsp/renesas/ra6m3-ek/board/Kconfig index 73260afcde..293f0cf1aa 100644 --- a/bsp/renesas/ra6m3-ek/board/Kconfig +++ b/bsp/renesas/ra6m3-ek/board/Kconfig @@ -50,6 +50,38 @@ menu "Hardware Drivers Config" endif endif + menuconfig BSP_USING_I2C + bool "Enable I2C BUS" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C + config BSP_USING_HW_I2C + bool "Enable Hardware I2C BUS" + default n + if BSP_USING_HW_I2C + config BSP_USING_HW_I2C0 + bool "Enable Hardware I2C0 BUS" + default n + endif + if !BSP_USING_HW_I2C + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default y + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + hex "i2c1 scl pin number" + range 0x0000 0x0B0F + default 0x050C + config BSP_I2C1_SDA_PIN + hex "I2C1 sda pin number" + range 0x0000 0x0B0F + default 0x050B + endif + endif + endif + menuconfig BSP_USING_FS bool "Enable File System" select RT_USING_DFS @@ -75,6 +107,19 @@ menu "Hardware Drivers Config" default n endif + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM0 + bool "Enable TIM0" + default n + config BSP_USING_TIM1 + bool "Enable TIM1" + default n + endif + config BSP_USING_LCD bool "Enable LCD" select BSP_USING_GPIO