From 78371c97e01e6cd0b188c58a3c8f99c45f0eb819 Mon Sep 17 00:00:00 2001 From: nulljun Date: Sat, 3 Jul 2021 14:04:02 +0800 Subject: [PATCH] Add sysclock and adc demo 1.Fix adc cannot read full scale detect 2.ADC default 10bit mode 3.Renew examples code --- README_zh.md | 30 +++++++++- cores/lgt8f/Arduino.h | 5 +- cores/lgt8f/main.cpp | 23 +++++++- cores/lgt8f/wiring_analog.c | 29 ++++------ doc/pic/option_zh.png | Bin 0 -> 23010 bytes .../BasicsExamples.h} | 0 .../examples/AnalogRead/AnalogRead.ino | 26 +++++++++ .../lgt8fx8p_pwm_d1d2_duo0.ino | 0 .../lgt8fx8p_pwm_d1d2_solo_fast.ino | 0 .../lgt8fx8p_pwm_d24d25_duo1.ino | 0 .../lgt8fx8p_pwm_d24d25_solo.ino | 0 .../lgt8fx8p_pwm_d24d25_solo_fast.ino | 0 .../lgt8fx8p_pwm_d24d25_solo_slow.ino | 0 .../lgt8fx8p_pwm_d3d11_solo.ino | 0 .../lgt8fx8p_pwm_d5d6_duo0.ino | 0 .../lgt8fx8p_pwm_d5d6_duo1_boost.ino | 0 .../lgt8fx8p_pwm_d5d6_solo.ino | 0 .../lgt8fx8p_pwm_d5d6_turnoff.ino | 0 .../lgt8fx8p_pwm_d9d10_duo1.ino | 0 .../examples/SysClock/SysClock.ino | 31 +++++++++++ .../lgt8f328p_qfp48_case00.ino | 0 .../lgt8f328p_qfp48_case01.ino | 0 .../lgt8f328p_qfp48_case02.ino | 0 .../lgt8fx8p_fastio/lgt8fx8p_fastio.ino | 0 .../examples/lgtdemo/PETest/PETest.ino | 0 .../examples/lgtdemo/dac0_ramp/dac0_ramp.ino | 0 .../examples/lgtdemo/dac1_ramp/dac1_ramp.ino | 0 .../keywords.txt | 0 libraries/BasicsExamples/library.properties | 9 +++ .../lgt8f328p_sysclock/lgt8f328p_sysclock.ino | 18 ------ .../examples/lgtdemo/adc_i2v56/adc_i2v56.ino | 22 -------- .../Larduino_HSPExamples/library.properties | 9 --- libraries/Syntax/keywords.txt | 52 ++++++++++++++---- libraries/keywords.txt | 36 ++++++++++-- 34 files changed, 200 insertions(+), 90 deletions(-) create mode 100644 doc/pic/option_zh.png rename libraries/{Larduino_HSPExamples/Larduino_HSPExamples.h => BasicsExamples/BasicsExamples.h} (100%) create mode 100644 libraries/BasicsExamples/examples/AnalogRead/AnalogRead.ino rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d1d2_duo0/lgt8fx8p_pwm_d1d2_duo0.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d1d2_solo_fast/lgt8fx8p_pwm_d1d2_solo_fast.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d24d25_duo1/lgt8fx8p_pwm_d24d25_duo1.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d24d25_solo/lgt8fx8p_pwm_d24d25_solo.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d24d25_solo_fast/lgt8fx8p_pwm_d24d25_solo_fast.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d24d25_solo_slow/lgt8fx8p_pwm_d24d25_solo_slow.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d3d11_solo/lgt8fx8p_pwm_d3d11_solo.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d5d6_duo0/lgt8fx8p_pwm_d5d6_duo0.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d5d6_duo1_boost/lgt8fx8p_pwm_d5d6_duo1_boost.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d5d6_solo/lgt8fx8p_pwm_d5d6_solo.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d5d6_turnoff/lgt8fx8p_pwm_d5d6_turnoff.ino (100%) rename libraries/{Larduino_HSPExamples/examples => BasicsExamples/examples/Pwm}/lgt8fx8p_pwm_d9d10_duo1/lgt8fx8p_pwm_d9d10_duo1.ino (100%) create mode 100644 libraries/BasicsExamples/examples/SysClock/SysClock.ino rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgt8f328p_qfp48_case00/lgt8f328p_qfp48_case00.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgt8f328p_qfp48_case01/lgt8f328p_qfp48_case01.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgt8f328p_qfp48_case02/lgt8f328p_qfp48_case02.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgt8fx8p_fastio/lgt8fx8p_fastio.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgtdemo/PETest/PETest.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgtdemo/dac0_ramp/dac0_ramp.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/examples/lgtdemo/dac1_ramp/dac1_ramp.ino (100%) rename libraries/{Larduino_HSPExamples => BasicsExamples}/keywords.txt (100%) create mode 100644 libraries/BasicsExamples/library.properties delete mode 100644 libraries/Larduino_HSPExamples/examples/lgt8f328p_sysclock/lgt8f328p_sysclock.ino delete mode 100644 libraries/Larduino_HSPExamples/examples/lgtdemo/adc_i2v56/adc_i2v56.ino delete mode 100644 libraries/Larduino_HSPExamples/library.properties diff --git a/README_zh.md b/README_zh.md index 3559bb3..b1742e7 100644 --- a/README_zh.md +++ b/README_zh.md @@ -3,13 +3,37 @@ 安装包 -1、点击文件,再点击首选项,得到如下界面 +1、文件->首选项,得到如下界面 2、在附加开发板管理器网址输入如下网址: https://raw.githubusercontent.com/nulllaborg/arduino_nulllab/master/package_nulllab_boards_index.json +![](./doc/pic/option_zh.png) 3、工具->开发板->开发板管理 -搜索 nulllab -可以看到如下 选择最新版本安装 +搜索nulllab,选择最新版本安装 +## 示例程序 +- [SysClock](https://github.com/nulllaborg/arduino_nulllab/blob/master/libraries/BasicsExamples/examples/SysClock/SysClock.ino) - 外部晶振和系统时钟配置方法 +- [AnalogRead](https://github.com/nulllaborg/arduino_nulllab/blob/master/libraries/BasicsExamples/examples/AnalogRead/AnalogRead.ino) - 12位ADC读取方法 + +### SysClock 配置 + +- **sysClock()** + 设置时钟晶振内部32K,32M,外部32K,400K,1M,2M,4M,6M,8M,12M,16M,32MHz +- **sysClockPrescale()** + 设置系统时钟分频系数0,2,4,8,26,42,64,128分频 + +### AnalogRead 读取 + +- **analogReference()** + 设置adc参考电压 + DEFAULT 供电电压AVCC + EXTERNAL 外部参考电压IOREF + INTERNAL1V024 内部高精度1.024V + INTERNAL2V048 内部高精度2.048V + INTERNAL4V096 内部高精度4.096V +- **analogReadResolution()** + 设置adc精度有两种ADC10BIT和ADC12BIT默认精度是10bit +- **sysClockOutput()** + 1:使能D8引脚输出CPU系统主频 0:关闭D8输出 \ No newline at end of file diff --git a/cores/lgt8f/Arduino.h b/cores/lgt8f/Arduino.h index 32f988d..08e53a1 100644 --- a/cores/lgt8f/Arduino.h +++ b/cores/lgt8f/Arduino.h @@ -141,6 +141,8 @@ void digitalWrite(uint8_t, uint8_t); int digitalRead(uint8_t); void digitalToggle(uint8_t); int analogRead(uint8_t); +#define ADC10BIT 10 +#define ADC12BIT 12 void analogReference(uint8_t mode); void analogWrite(uint8_t, uint16_t); void analogReadResolution(uint8_t); @@ -338,7 +340,8 @@ void pwmMode(uint8_t pin, uint8_t wmode, uint8_t fmode = PWM_FREQ_FAST, uint8_t #define SYSCLK_DIV_128 0x7 void sysClock(uint8_t mode); - +void sysClockPrescale(uint8_t div); +void sysClockOutput(uint8_t enable); // Log(HSP v3.7): // - for system tick based on timer 2 #if defined(TIMSK) && defined(TOIE2) diff --git a/cores/lgt8f/main.cpp b/cores/lgt8f/main.cpp index b416e82..3b2c80c 100644 --- a/cores/lgt8f/main.cpp +++ b/cores/lgt8f/main.cpp @@ -27,7 +27,7 @@ // Declared weak in Arduino.h to allow user redefinitions. int atexit(void (* /*func*/ )()) { return 0; } - +uint8_t clock_set = 0; // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); @@ -139,6 +139,23 @@ void sysClock(uint8_t mode) PMCR = 0xb6; OSC_DELAY(); } + clock_set = 1; +} + +void sysClockPrescale(uint8_t divn) +{ + GPIOR0 = 0x80 | (divn & 0xf); + CLKPR = 0x80; + CLKPR = GPIOR0; +} + +void sysClockOutput(uint8_t enable) +{ + if (enable) + CLKPR |= 0x20; // output cup fre to PB0 + else + CLKPR &= ~(0x20); + //CLKPR |= 0x40; // output cup fre to PE5 } #if defined(__LGT8FX8P__) || defined(__LGT8FX8E__) @@ -492,10 +509,12 @@ int main(void) { #if defined(__LGT8F__) + lgt8fx8x_init(); #if defined(CLOCK_SOURCE) - lgt8fx8x_clk_src(); + if(clock_set == 0) + lgt8fx8x_clk_src(); #endif #endif diff --git a/cores/lgt8f/wiring_analog.c b/cores/lgt8f/wiring_analog.c index 9728257..17809b8 100644 --- a/cores/lgt8f/wiring_analog.c +++ b/cores/lgt8f/wiring_analog.c @@ -27,22 +27,14 @@ #include "wiring_private.h" #include "pins_arduino.h" -uint8_t analog_resbit = 0; -uint8_t analog_resdir = 0; +uint8_t analog_resbit = ADC10BIT; +//uint8_t analog_resdir = 0; uint8_t analog_reference = DEFAULT; #if defined(__LGT8F__) void analogReadResolution(uint8_t res) { - if(res > 16) res = 16; - - if(res > 12) { - analog_resbit = res - 12; - analog_resdir = 0; - } else { - analog_resbit = 12 - res; - analog_resdir = 1; - } + analog_resbit = res; } #endif @@ -60,6 +52,7 @@ void analogReference(uint8_t mode) } else { VCAL = VCAL1; } + dafa #else // set analog reference for ADC/DAC if(analog_reference == EXTERNAL) { @@ -79,7 +72,7 @@ void analogReference(uint8_t mode) } else if(analog_reference == INTERNAL4V096) { sbi(ADCSRD, REFS2); VCAL = VCAL3; // 4.096V - } else { + } else { VCAL = VCAL1; // 1.024V } } @@ -166,11 +159,13 @@ int __analogRead(uint8_t pin) pVal = 0; #endif +#if 0 // gain-error correction #if defined(__LGT8FX8E__) pVal -= (pVal >> 5); #elif defined(__LGT8FX8P__) pVal -= (pVal >> 7); +#endif #endif // standard device from atmel return pVal; @@ -181,14 +176,10 @@ int analogRead(uint8_t pin) uint16_t adcVal = __analogRead(pin); #if defined(__LGT8F__) - if(analog_resbit == 0) + if (analog_resbit == ADC12BIT) return adcVal; - - if(analog_resdir == 1) { - return adcVal >> analog_resbit; - } else { - return adcVal << analog_resbit; - } + else + return adcVal&0x3FF; #else return adcVal; #endif diff --git a/doc/pic/option_zh.png b/doc/pic/option_zh.png new file mode 100644 index 0000000000000000000000000000000000000000..2b80c932cca43bf9c4444dee6cba7ba59508eda2 GIT binary patch literal 23010 zcma%j1z42r*6xT3A`Q}|D59iv3HXspcb6dDIrN}NiGrYXN%zn-lpqQ+G($6V&cM(O z!+H6>Z=b#Qwg3H}b6vp9^~TfBTKBrw{Sc|Hsz7v??k)%fB6{^wRucrec^?G2v3dsw zxN_@xU>op(@A}ff0|X-Oy#Bor&p}KNTqN_9)A!VJvGxSNcDDj)Ior9u_VBbaq3%b5 zK=(nfWdG3iN!vt1Tp32ww=Z1^G_#CvZxWK$sA)chCkTqTC2*RizG&d3@mH=0AZVt{ zTU2q^KvrlfOOP{zIp7|4mp_Nc`lxuNZP2Wx zxhm}AR+E*>>d&|0Uz{aCpznlk3~L7)BanSz2!$awb?(A?v{+}A2jp*AewOFXZVWEnJN-ANlMX_$8soxKSD|9wq#%%a-DTh0MV}H6b|BT|6x?>& z=hDoYu%U<$)z@)*!Vs0<R(Kl(8vOW<7A|QLNmmh+?x1Ir z7p`zBi(x3dRgQTu4m^En{A-;V1k!(T@zE+1`pB9@cVd0JBxJl=;v)1u2=pRdLZ5|Y z;K(tc%Imm1q`ZY!BEsUUOQHYjzrSZ9?L3iM(U zJ;&sWG#bW!DOaX+y87to2zF;NTW2;|4MfTue?HI7Y{}TNlR9w_^@;k}+OYNWt=KUM z&`a;oRTE#@l8jdvLB9&%iGj$A+(4IAIj~p+*Yr`gaKZ^tL;QvT*0|KhpTQ=Fun~&J zuFci&bL9YU2dUfCmO%7qSZ5hZZ6LdTSL;zcts-a15JZ5C|4I3s>(wA~b&@<()Zn!i zjE)XkW&W)X0)0CzGptqID&6B7E7mFLMau^cJpuZL>Wq=N2?9O(7z~W$=Vv%nz=(9* z0iFlpKQsrX^WSes`t2_MY;*=*`2KEh==bm62D5LJl;E5$WI)4&0<~rNl6y;?T;9BS zGgb$b_l!+a>^wDXLz3UG8+c_VB_vod=Z5W(!gHWx=@Sm=>(wlGWG))L1cO4R%`iNK zTqO8ZK=BQ^vPb5PQ2HL7sorIt<11Ff8=zpNG&|x1741ElB=C>H0!r3+#bko7aI3c5 zBO##GT6VT^{*$@zBfaI-1oYOWNt=e)n0Vq3kejT z7hB`e0IlL28EC(&ns;|4cRsh|{ua4X`{&%2Ew*B9_7&t2lf^e+T?%APnT^apsfh`5 z?jpadJhii|z~Pdm_t6vRV~YA#FeNH|n5wXRiTw#p5@Kh0jos|ohwH6CS@H^lRW6mc zt`dGCqWDCMV*2uRcty9%Nz9M*m6on)mD`QMVhN3GD7l#R6@K@ zKWc{KyfOr)+)nU71;fuylSRXF3k2Hlp1~_Ee2NMyLWjMU1%_T!@7({|#*o4p4$M_l zRr}FrK&!KBYHGSS@k*5+^TUmR*OC|?K72S!6m|!=_qR3Dw~E+V{2ApjO$?NBJA~;^ zt3-BP)ZY*Mo4NY`x-p@!1pTa-hX`G9Z;bXMbO>eoq$7fQ;KaLy@j*>I1&XdD)DOD* zG!Y)wOwLgXOuL8UuyZzdUdg zqlD6t#jT1p60VQ9Kp^${_cs$(NVDcn-|(NadkRkoQtIfZPdj7MtFAm=0)v-gaf>sR zOd$1vbX#uVx<>ewG|6NPhL;$aaO;#&;YRPHjq)fST#Y z9ar7ukoP|Un@LRM$B!S$%B$D&h$IJ^a_Z#nUX_<8$GLXB@4qwstH=4TQ)m!4WV_o* zz>fr0f@@?q^gJ83(-}!oJr~z7R%T>lFnp9c({@pxigF?Zw&+haNYEoxmQIOopS9AW zSm0Sr;Ol=~SO2nXo(*uCHtYKvHFdU?B&3P*lUDpXb8c;P;XL)DpBdAi>x*7GAe5t` zLGeo1n_1WOuDYoz$~dVm6XJlV-Vso9pV&S15r1Nz>{rOcZKKpda)Hm2Cs}>$gn2MKG!qw%T@~5rIugP2sfy`B6;vO8oPKQg= zI%#i#I7z9wjn!SoKdPAi25Pvamx;fNGZt*Lo`89WhJhs*krZS>)JPF^;6js7Pt`2o zshXZuRKCR>pGb)4p4f44-`SX;wKUjnpS8mO8e7@gDu$zaQ7e7kI)vHmEj9Fyoj)Dc zcJ}ZFfe3yt+ONh1!BRpiJN&}$2+w+59-O~vz>}U+nU~oJ7u9qS$rr+~8UO)g3y&|l@UN1!4FxsLC_hW`( zr~N-|Cym@R46;$Oy0yF7%6qktk%f9K*Js#M7nUJ85jcJmZbr~->0g4p=yqVangUlZ z%>?ZCMSFOFkNdPnPf|+^vkJ<$S2t8b;p8s_T3eo=2L+u2gR30A(XNJPfuV5KSfV54QXTUpuva5iN;~Es%G$ZC?fsY>Flf*pTO8pH!&t^dWWnZn@{)PbIxFff~9%SIeqX#-h3&Y z7nhe&yq_3x4?I4rFjm;C6$`UsfkT^GHCNBj38zJPDifXd{U;R4#H9iw}xur#i z#FpHeV(=Ac?(yvMJ=-ii1WI;4Hlddr*%ncekUXo_TH7shYeh)t41CK|C#Y4R1i8LS z>f5&c47)it!7mkCe&N5=5?*ufvX@1l zYMVA8V6UL)gipATqmRc_A`-Xw1^1R(_`UV!^r+7bqzy<5+4Y}1o8mwG#Z;*~TGu?< zEZ97a4BbdYB3ax=+^?*y+K&}NQVB{)9bX;Cx+WJMDRX_CA!tj6TpbIalH3|AE?&*w zj)BD<+8&vRinRN^Ga}(EzQ@aux$_jkkonG<2PI+#S5YV(E|qTR8x0pj5#s8OFvx+v zZ_->$@=sOlR%c!+i>Fb`;mp;MHq*lxb@GX&&L;@Lbh z>OSA?NWAj?lJ(+!7SmenN)D=GOgX8~Nig-aVSB%_4-|as;$Tgo3f)@BE#a> z07rh%H-kdajdyz{IqkM9<$@0UmDU2+CcgK6Ep?As_SUx#(+)bqL7TMyj4&pN$*@4} z)-{YE&^$T#>|mqOS=yo$C&9Z;3b5mv_Sm5OZ8=Dn8gs%*m$Pn4S3 zxC3==h(1|a!gRBCr2AOxm&G)*SFuV}+LUQkUvyG{)hOp$#)?ds8W8WfMcSt|n8o`j zQ>4DqjVT@tufdk^gi2?8iybNuiK8t?CiN4k+@7+}?Z30qB|a_*wrcp+jqqx36GLpi zyUV2)RrH&a{ga#y9|4cGR6|6>%+BC`c-y3ykz1#in&iZkS9eo2E9CXS)Os9++A5Pl zMy5!>bUBk_;7+cbwSCJmHO1WXQ*-ptBO^l2ds$IgeYG!D%%{G;h6ZikJlv4>jIHaHNEVWzBs-z`sHF9giPOXVZp-^@Q>7_2e~t1M_4HNZ>d9poP*1d@ zU(h0TSu{E$z;(Y-zeMf%Zs(~>P&Eeopv$1ipM|GPVLNFe5NJsAc_eFFL%m@3=4qu~ z{ft|xNdJ@sHH$~mC){a5PHn6<-jyF^Gdf;F97}&XNF!)LGugSHW5deRbzWs~jvRJP z%RAm`D$imMR*Kwubgb@k7oTb$t3%69ViIY8RH)$8;f{Qi#_WGMTDi}{5?y^{l)Bt} zm;&|R!;AUII`(-QqaU<<@*e$IH%qm{3D)@Ua@IV`SQs+lE?)2vMDSS#ZKN( zQ(V6!RNK=St7T%MDKe|h`su0OK*MeB+qyTD7%8;*KTQSZnclB)xb1>hZ}sFM>~leW zOY)M419+{T0cCH}e1c(nJTvCM-J%jyYYD_OQPkTa8!)!`)TowsP=9v?2Z!+oqKMHc z6eTGccrmi6KvDU*+wtO0@Lb^a->V-|GcDI;*w^RB9TcO;Vk6lwy7f9wt9*8&zd$3> zX2=|E@{}X$`o0J3w&O8BKSXGCMKcm`Klk38&{C5)1g;5~ww(>Bp1wp(_ig^XjcSncs8jbesZUbM(=5`4inL0hkvmZ7pT_L*iY`6}r4bSLJmSMI=tnsG zRydA5&W~-hinP728tS>~HJ!Y#M5yl?qe^jf6@~GXE^R4$UZ6On?uAH;Dqq^#cB@S( zDfbbmyi2R~=QeJ57Hfv>E-M2|@h%WeJ2ft3xgZ|{Q+^uG_8555 zb%FZ0PAt0Gd!SP`D9VT6xYUaQQsZV}F|Chzbu2a8Cig}Q5(F>#v2}U65_9pLZ}2@T z*%dkF56N;wFOyua^`xYvZl&=MHk0Ezm%i`Q1#;!0UH~PUd0`9hpy>RBB27S&m zTJ%JvdH9i#<4f`JAgt6uZ`bc0rjem-YVSuveGD0JOh`%g!toa`4@kZQ6{T z$oo}mwF0hUo_nJdS_CQ{G(S|`)c;lSW@=0A*fEi}&RmjVWrtf;U|u`-Z{~!zns%-~ z`@22>9(@VVkJv?0i#>fZpkeL12=gyjyQpJ9qOcQ9U2Cn|Khz7^@r@%jM;Z0(UwLt8 ztk`@4cG2E%*5lb}R4I~w_oAw=9y`A*3@-N?3vw7~o%w<$slS}JoyJH+KdkaTe*b)8 zYKm3(`N744zftYb^2J0+ITNh*kc=#ri~dbf_g>vkKHby$1cJ5M=GT+;U;Qwob~-&` z{Zq)(oU*dnhent}m$kR2zu@|Fml$wM6MlY4O6EEOp1)8)j^ zOGzgE9Ly^+;^p{!Wtmce6lXfUXl=G-WJFE*=h*cY4KJrTm~3a}d%D6k?S-`NVG*wz z1Ru9ZUpM;Ys(r<>XJ+BSn@TPnsYg%m9iBQu{VNi>W7CAm*;w3vRI#$KRGp+=rbf>I z{Q=KB=8OMv1gsz4N~g^+JefcZ%shyX#1q7 zt~38!QFi&FunGN9&)W6p!rH-z+%#XwKy(JRsA+dNlSX2a@~B79!6vG>O;~wX?|s8T z=gH$^ZF8*Fx*5LmQ}uFcO{4>*vUK}&dt#=FswNL_^%0JD+F0F6xum-T8rb+oE)rEm zZF`JF(IaPlPDViEjkK0*m6p59qNsVCowmekR)`@BRrJJOwRLq&@wL%QB4wuRM$JBM zXp(;MtF1~I_x1Ggztlz!=iFK5x{Qvp(lj4)$Yg~)`&%m?{=;hSN$Y|&C9gJ$~aWhUZ^Be zE^tC?n@&^TOVxU;tc`5+H!q8i*g+P*E^#7Zfj|4> zH$4AJpK+@?-WHoq&M;l1^1yzWO)E9scHVXahEJ)LAL(zL;K(=;;A17$vbVGP z)|`aa^{IPUcsPG@FJKdiLZx>L8BQFQtM*jxS|MLr6uu~ADr$Aj&2A&fE=4QFuzzV- zjHGrp_G)SD{mm%;M%Zi!zgMa}Er_cL6D1gx_qDvE*jI&s>c}~XM@s{6$2bmJYYf@v zcN4z?539}Qeu3&Rn1`IMC0uke4O3RQPQD3M zum1vbeqvWd&3)*eINay@iG5D{rCx)8!J&D(nHaw1B3;-hmnz;Wb zfyMdDg-lx3RFv_2O%RA{^TL8DZ|?I00q?(28vhb{2EYF+-2G)n_DdarX@sM_b8I-E ziqE7Ki>G^Y&Wg?bnb?b$i(WVYh0^(-AgEW!95CA{O794?M&I3jM^J0kn>r|I&uypm zz3Ms&R;grbbg)!uG}cu*BamtTX~blxNAKLT;?5pFtP8}^gEfHdezNkOJZ6rXlAU4n z!97Fg))MYrj?DdeLBzXoO#4Q7b>mlb>WMmuM4O&V!fPOuZCrJ<$4fRXS9#(Vp zt&o-pCa8UYf;NhCy_S(s?fN4Y(-91Ylx}PI_IM@gFrgZwB5s4evjVN1e9zXVuZBe1%ROXZ&i#Qnd?p_MNI=2N;u` z>$dV2P5xASIV+Pj%PBLiS2$H@XN1)y+$s`{wwtS_gkZ*h-56(P4_L0U;zpi0O> z6d^E3wjax%%ayT<+^0EYBx>JV^`vx^(KM@7SJ07>Al?A-1QC~{S&)Y(l)B`+C>thH z!n{25g+hG_W7{NgR@hLBdeVp_qM@=iHM12SXqN+Sa>=bve1!pljH@gHzWCeP`xdtK zkeE&}mCnl)JwcYxCF*)mZ+9ahECPvhCjOAYO!_6;D_Kod!y_w|1g3lC$ zg%%D_M8Tom-oy!=r{|Kj9!m5dYrso;dcwV}cd1nK$L)a_m6!%|6JRn8njdrw#ubuD zczu9fB2(a8a-kjW^J(nXO_SXlo9E|B2*qi{=!yq-hnVyacl>_Z>q^SB?x$~e zf3zwcY!~PPR|Y}DK8!xMh?H_M0bhI%ix*e(B1$-`iq7Fs-&CO%V__21-znz-C3*1T zBnXk8a-OHzKfbvovky0NX&FT#)8Q+KaKf%1X^VxUsg`Ek7y z5{BRwC`9_(znw?AH=KV>?xGjlTL zZC9_NXE>Xo=+#5WO>Htv#P~Y(TYd|pPHWHUP<345Qs89irL&z#|M2+{a$KDf6r4=9 zlscoOC0*ZlTbgwg`c<74@^x_AZs)@(Tqf1Q@t9(@prpnBnA@ANm*G>2;_YI_iy{(Pw5-VQP^(Y@2{WrgEu)OLlNuA#Z20K%%np^WwgW^d>8~C?ewRoZ+LoN`IvmVHW(@4{hE z5q5`99GLZyv9U2E@^Z|`W%Af0-s|1%UVoEnX(!f|7jrruxMMs{3F#c-`vtPP<+Fkf zO2krnU>$qCFMeq`l3cb@&t!G7sra>5JdnFX)g}B+N>h5v%o47%zmF0XLrmhfH)G#w z78zp(#G=vB%svO3Q2xB(@76A5hk+p`qr&;RrLJj?W_A@yd*N2!wCRj1_bao}FwDu@ zj3223UlnbHm@%TyW?xW01l^}95!Ek3%|5;ggUwL0la{hk(wu%^FEweIw#S!=Xx9*(ts5mj|P?%fxh8dI+X_A96%l5$T|M_b#@Lvs3+(2ySy{`` zLuPPsqU!FgnkF4w)uV2NR1&QB+)h7rR|saEIfLK`rvyC3}%)iM*XWT-)V$e#XuPu7M$kquYU2p&or@W-Uj% z;Y??h$9aU~5fLz1juSy5@?C{cAYwAt#=yBv+DwKw`bV4k5st6#$>7B=L=<&R=4WX4 z+BrduHccA$!`)9{JdD$@WuFHS_ROmbRa&yx0I}^rrBENU!HPgRKPx{QJ-x(baewii z%gJ-F1dJ~|p@=mvS{lZ`T{a=8k1~QZ3nP=Me;<2)6}#*Edu@bIA2lsj;rpZKK-HiH z-CHS-6`}xXl|M5tcU?# zbMH_c5nIXQ@()r?;KJxVz=>r&ke0Fx9Uc|mZXOvP)_lGz?Tw^H&l)56`44J_n8tBk zegl-(pIU%hKc3aUrpQ|14ZpKys@3up@P^50X^wVwvHDW+mL76KBslUCbervWTN%TI zkdCzQ3ndW^i%;QU(P3@dQ=Q+oaHCR!1>xbl{&VNEy_ee2eXX*GWW^Ez8ka?=8-z?( zG&1j1zWJKUf-2O1uD5r*69)2o8sr-QVEy*$L_&YJH6L)~=*07=-8sM+Uu~iPX4Cl8ve8<wp?Rw`YIDfV{iau?7+eeX#s^MYF2IC0zHDWoBR3}v*>yLX1uPxgP~3xtm>JSHSlo#_C#z{?vuH>^*AegYV+ZQ}(~>t#F$C`&A2L zeUT1ew@|3KUlh7G*E?~7^Q|Z=swOvL##Mz<)6Z%o{LE#5slYHFV|1-kbF0p~T2dz+ zh2ndhrxQjKi?r9@oWn0CeJ}B`*Yq2o1QG=>SjJ?@K8u*KF{q4tVM*<1Cb6L4&tg7S z^m25M^3$s@!xn${aKjj@WDhmxBf3Y51Z)`%{=17!+pX7suNIgwV~LSdOC*vfz-q`4 z^WM~VU8uC|%J4%K0oU%&4vlDtC)XfVrvW!A5#Db;mB9=ML6RA#syz;rCidDHh zuS^=U*%G}3!8Bufrm`<`-=%*^> zH*)9Xv_%&sPe&e9)x7N!j{2Kdl9la`X*ok>85uE?kxjaXzbw%l16FiDvy;;y)1-UX zM`34poeMXWsFYWIap*sZDLpOuCTb=g%fRENxkJq3B&a>Hf02wOihbq#9Q_o6;ZR-n zSMl>Na46RTPf+d}sAOe$jW&%?Q1}y*} z)@(H9PH&W2EYAkE6F+q{bF2#5h*9A`Xe3w%z!3w~otiShDh(24bp?4HeEzvQ^M%bp z)iQ=#t0~mmiv1#}RDL)^G%=ttaOj-~_!Ts@|aRS2oa!m_4-G_h&s3*jJ^0-G8Y za#f#guKUI=g$AsXc}4!#mRJKQMd+EojMo_*V3GB2bB;4gRb=t=oc0sp{W2N%ifZ|j zV)2iG?@F8QrEknGRlPxfU;V)`0vN{23DGq?|NS_g1F8$iHHLCaz=iu{9)H|(99`aYS0e`G=X z)J#85w;m3rUUNnYR#6Nnza72yWTUrjYQ|NYVKSzb>r!%Q+#abH#lszV5Y{#^zn1__ zC3(VOz~Gp*KgT5gC_Gxy2XO_S`$COqdB%K~$C7mvyuyERXjZ7d?)=1c0`XrNrCAP^ z^dmOa>tJMBZ__wgl{!~xFTJIUk9=bHHx5)5aIdGWtGAlLU%nP7Q0FO73!AhWLNh!uu;O z(oMP}-eg08w?Qhle+dyziWmg&Q%gw&Qx(&lR|Xc^Q55?$DHIY747w>SlI z)YtK`^z7eE;Of7cA9#cU)PkaGoH*bKW&d=0k(Lq9GW1ltuulQ0k89Bb^PlGX2nxY@m8d^O0jNrWmGH>T}C&R zBkQP;Q4b{}=uwad1TiH|P2!30QIn9lkLn?*s5>`-P~75H=^KA7dt&00^WJwq-#z$- z&z~@{rLC^HQCwE$)R!XYrMD<7Ps4l*bU(V&ufkp)PYQQZ8G1Kioa#<=Q6%5pBB6o7 zj${mw>RGlI`qs|GDP^*SYyuBu%L%4ZH^bK-fk2;>O7TiopF0=zD{D~1)!d9gjmcPs zW~0fglVb!&YGfR}1dk*LrIi_%w838N4nb>tDi8*AjW?%* z^P(vPX$%Mt5osZmbPNX}F9TIlhDyKnw`-<4*?v@+27;aaUj6}3FqrwdkGiZyUda=U zEXKQQynK9&7bz8&VGVeDwyv%YgTcrS z$7ksz0CPA`ZZjHUl|-Ul?IP0z^=?+fk$FF5F}0^*^2d?2C$Vk?$CISAM=T$4@m_7E zE?br2G5NfZwPrDyOuGkUM5B0RX(;bxW5UKh(NQ3vR{V1u_I|n)cU1|Z=vWZkyUr7j z%H*P`B(Nt-uY{Y6SwHnQ;eqDk$N@kuqmkcgu)J!KWuPncl--`sM_bCE^hlt))t^&< zx2-5!`Nsc2nPR3I`>1UY#xf?U_Bqidyn7)rZV z@xo3|UjuZewuPEIi9E|yU7}0#cWv&(OL`Q0(83@LYqBlB1FdTo_ycMP(CG*nKwgv7 zmjG0pZ$Vihts%eFpvk<)pHPEX0-3nG)))G5-KO&6@=xxAXyjUHh1?o_2OGZFGyh3dW7O1axt^?{so6}i*J5OSNa#nupN)SKrnH(op0 zZoNO{kiye2%nhjA`hFGTaeVz!<1tbD;Av82&1(+rGBY)8-6)jwi0Zz3nj=Kip*qA% zoy|NnL4eQV!fM!5*pz{8wCgozdtA6cA(?5F^lB8e15Mi z_l$%jPfWY$5V2Wx*FNlIw88urIoY*Ra6e)TAUc0AxADtn&Ucm;+ENzJK)NNF?3AVy zzUTJN%#q;oQvrl%uy1Zg8;bxTnSG*h(*`+-RzarEsl{RCbQ#4%Nwz^Z-V=m9u2zLxTrX0F1n{Af# zwe2fy>aWSCQSuJl!YssfGO5z`HQDNB3)p`#E)F)69G!Qx51P$K(w}Y&1;%7nMaWRQ=IT$#c2Qa z#!qZf+CR*=?8ProFeSGvD8*Q!P0r^ZJmlyojZu+yu`zclK_Nk32`I^ou9$E5tlq+KJF3XRcjYp4swCOwapNOKWoN0K|8W?EbyrK z#tw7VgmD%~qu*14+Ui}~JLXi6Xe(y@&}D!TGUhG_M66bu^p(i(^mMS|zA(;mh!(=X z?H`lv7gzI?OFIayT^yN#F`hR!de-;l2-y4FhPegTLOXE@Ox-`xkO437yNB= zLpJQ2eS)xy*u63!D4QX=kwo$P);~@46yIu;VPA<+qcO1x_?hE7G;uKOHV@B~(kH)# zVb#21(cCAane;h+2QojRr$os?DJl{-(Cb4vmzS4#Bup2G0!dcy4MlqsV$O1vsTk)l z=Zh429M_`CHbvWVuJ!?+Rmns3NLVQlOd70b`9sB7rjQk)?X( znTnv23hdUK?m88=p4~9MOV`XdQHrs-??h9T+@B{&cV;BV?e^kJ37a`!tpAk|nm90- zG?uJkMW>GT=i$Bhnqn59?h#RupTc~bHCxKm=&=Bc9Zlk`!ROcM1RG8=-U5zDtcPu7 zYQFlM-23tl98$TKd$w1~1MX*U8!dmkTgR)cw2L|MF$9ZhUp+eh+eRmZ){f)AdB8;v zE&B$|@NXoITXQGM{=9Fu>5(ovyBkSnYh8UHmy-?G7XtPZxv&Q0P5Ny6mdN6`e3C*bS--F>cu~{B-O={-D{;t26-$Wo<0;Wsyv#b^*5Qe3#;lOeJRc@>LX{w z#qVd#ZDhE;g)kmjHy%Dg4qk*M)GScjNYaP$F1H?JME$E-(yH{W-grNpv6&CB&i71$ z#<~}2_YUcyLg)|f8vFv}-veIz?EbpTku_&0w3ab1vl^8oq#e1}gm8o8)4f=XBh+_k zIn)J%!Q6=@O}K)`wh-P~hG5x7!y*Ya6bUj_O2odNX>;-eJK?t?S(7)izIIW=J^alUMq$4QEz zV`ljp5d&#gaH_LVRm~#M(`KEDVq!iGZj4v{zBe*D+u~2nW%!2Mk^j?uT|iV6R5^&( zIUlZfK52pq?=DmUP$nwM&@(dy(0-#LQJlxyxI7{n=_^7Dzj>(Qzh{prqO@3p&kz(9 z(M%Fkb90cL`F6EHlomO^$*WGv_O^GjCR2og8(~CtKa5=)eeLa^eMl~-A8($*Nixbx z$|l}DXGPPqaH1dEhRL5H_S#qFbZF9k=GCc~#1fDV5~A?+fqwa}CfmT8nn;+QKVhjH z*7;f(sp55~-z7rl)lQE?wZ%>`TdxORiV=cC0HdTc&9mat;ktsq^2j45k!~n^@#~a? zd?8NC9}+hl0PyC2j0v27iw6`Zm%HnkM>!e@>_5)@pqZM?SkmLTd!u$F-%e?{2?WIx zIxRrl_S~|CA5ZzRh4_jUxK4O^P+H8vliF(xoB$Krt(;pjXj7G9B@0$LkWx%hINnTs z(`_$Atp!r)V2DA{vk;bX484AGU@Q7eoW=fSd>(N9drE;hb=gd)K*H3>ihF2 zA}QDwg>gZpt`Beqmr`g!F_FB8#2fq$4nC*A)A&_100)yAwMYnRonEgqxr7g)v zU0Zz!lISdwcT;K!3C!o4)Hq2VQvo@q4Da-4ejK*XI6$2xPJB7Xbfo({uxzkGYkCwu zl%=OY_6N7C)lG|6oaVm&h(k22vL(gs3H;$i%uhz)f9%lRgK-uozC8S3*D7l-^>}RD zg~S|M$fKD$dE3oD!`h-hI5XRx`0-f13AfdYsyKZ8AlOtBcspAz3RU>WRu!@7P|X8Q zl-LtR*d82DCh1752!Hxj{B7Z#v+KwpYeBW-B+|6oihn8ZboDD<-Zr(5c z2>a0ZQQ#<^U$8tz$fKiy{02eT9A(*2XbG!>>4=4nzQVpVJj9XPI8p%r#n(w}wnnOk zbVy+&j^H?-n&Pu^8XXaBwnX-Czek%rWxce!T7qR&*y?}30isXJ0#1k3j@!M_emDuI zcu%x7S_ZK>VLIG zmy4E``3{5`|9&X%fAGTp>bI|9@b!rZtxe!~#4bI6ek({3`$q491As!*g-gO6fTyP- z47>BN(U~_9VAH`UZ+0L?HcOwZ&F9VxCTy1gZE4^+#t0?CuVEco<=NEaAfk&Bk%3RJUoK(uDlkCPzmoTQkiIeED>`@Ep%js=hweFKIg7;-mWy>vF$ zC}SNFEHNVCD(Y?2Tves?8!;s#i)5$BO>m29^n_iLY@TBAJ&fmOUHM9~dVt)K-nfLu zty8*-t){GqOLD4|mAfrpr@R;uE7aH+s26FJ>Ch z@?VRx6Os)VouH5(3PJ}!MnHEP25A9$-EIOT=gtrdZAFtN@wHX3hxtsIgLPHW)ve{j zG~2(l-(It~G!Dd!nKW$lKuTp`<`!qy@1uCJyBnV0VwQp7(-POq2h>>?MX??l4n&GJ zV(F^jRSr19?$s2l4lpR=wF)IAmMz_JN0ek-rRTOYZKtjSZ}**f^=#+t8O=P;DJ3Nn zV7M{2>y6GMfIvRPfI#0yVIV3E$TP68K#iWeek*G;=8mt6DLug6hjLZ>9Ri73U{J(7 z+KyZ>K#Vv2G$aq`Ds(j7$|-sDw8JfSqiE(Im3K8zmr$IPydZOnl5;Uqsv~xkZ018g zW#q*I+6}Xw-66-4MV|-E1=dYVz><}sbj_q7jyxLlN|5SJ?h6?odT zmOMm@L{}r=G=EW|PCWgdBq{?tHo9x#!VDrjN_EcLJ>Yymsu~keq!|NyWbEOCM#ar< zvO-$*tjE1KUKQwJj4K1tnkLEf%1a3AuKx1S7FR+$_Q(kYqeHF}wwyN<@W7RW( z>T&>S2k`!dv=1+}iQC?Pxj)WzlrO#yWQg;Et^;fW>CNktZ6MoI3H^ZU!;=5Y!N`Bp z)%>U1FIlU`K6a>+L78o4V}r?1}Jp`mB}6h^Y^+fnZlr7G;}SZxLap=K5;g z83D7Gm=b#A59}`jN;3PP%DejZxrM0@qG+nVQafY|IoW1heHLZ+jR~VOzoV&f+g^z0 zDF&lul7!cVxWliRgy`Ujp27nq9=`gskSP zB@2YD5}Q5Gt;j_xgp@k0*Ec%@tzpdQ^P}OJ+Es6PDUvVzN(x?7rj58njxFa7a6CzI zoAQ-61JQj{GC$rOnD_AjXWw+V6N!+|G&FBy`SoZ?$J5iPSNqyS;>{rI&d)R^HoKT6^toy;Rsg%mJ3K3))feI5o`pvUc&Q1bU2(nl|ihJX6V??duwf=MaoaD82sS(Ws3OW*3Vwd`DWTkvJi!TmOoR!-YbU8 zv&?XUB~hU$Q&9x;$A|9N)Ovg zPXv%Qw244-}a2Fg;a* zwbjiaFC#m~6V%FChc9baFqrEf=j~Bp->jZft*($OI;{EG`1tZNNz8?A{jx`y;0CRt7ULI)ZbO*JN3ns;i|8sZ`GptTaj>g91{TU$`Eds{QCpl4|3 z2r*~X)@x#RRnz!!)mGcv{*_r2eQkl3RYH?lQ}%G~&M!6)h}P`-{{nQ+8)7I!k#Hn1 zIB;&>^m5p^ChfF`mUm>6|8LuE_xfWBnU;}(_r)H?(|!nzGMP~iOU0ed38qsNaFXuz zp+~K~(W+l-po+X~TR~K7psjlNy0~Q_jzdFq)d;1Bg(M zg&vi?y6UB^*y-{OZ#G~!wO`jjTi?LP9^D(nbaU3g$!f9BkZkzIk-(Ejk z7NG-vw`V=iW}_~Y?J%vyj_W;d+rGG*7=g=u){jX1y_**{eT-VqemnbKZH!AXh+@45 z(A!dh7itohLmpCX?6Zb4dqD%y^;c+zE4qxnZ#y z)^UyxXK-5j&*VU8$VKf>BfX4)k&7=-JCBpb2Z=hh6|ee}Z{V6J&UH&VN%TwxQ)~z1oR?nDcuWG*_no)CN zf8)k!MH{3U%*SGG(AVnM#&#n7M}MYRP(WzY+Q`jWc{$=%?85rt_!~+8m0tsj1JTEa zBRpwR5_@n5(<$KX*h;hLuH@O*9sS6<1AJ3KznK18V@C%pj4I3|N|bq;(4ZfJqxWWGIpIb@rJqmJ~m; zr16Wk%izjtiI_-m$1SL%bg_}?QkY&%abWF46&BkV_&zQ?)Hh*uG<|xurhoF`-Ymi4 zDJP2_@n)m@X5!M8=?Y9JJd++;7g}r}A^xWHHqR01>p|t?Ia@aVpGaqeEG}z|2|*cf zY{%Qv4i69A{SE(QhH?SAxxtzkc*Y}#-Lp&vO9rUO&TyOw1x)PDr}jsK`5VX+*wbd8rwdvK|bEfkjp`q;H*yg5f6Y-5H5(J7ikNOi7g7F-K#=>U&sK^?h`X3?;$)@?XLi_3vwdD3{rOCWH3WAb{jSsTZ z7*mBf2B`WxbehUO7daK3Q@W^GW*mprEWN-ln0>~IO3|PQTqn6v)hxq zzl4`lddxGSeLeAyR?!@9tov0N1up?#`{txPR><>S&_T%N`L>A2kmOs6Xj@}_ydjL$KjZN}4^L8eb*51dF(H`zSKRmZhX zVJRDY%=Xdp@X?&c7@m@1DGRj_0uG13i8-m+a~C~(qe4-$b|<+_Js++mUPRs6Rb$YG zQoWhb!Pz;zlz-mw_5@GY^ju>;DowYwpx~EA%W1lUX-dk*rjrATK3G`^vGz;l>Nwo2 zn6Vx|D|>4r_z*_L9vQ{bk|tEZoK;U@#{uXYP|JRZ8D!h`t59$hFu!5S2;U6x}roqBW@E%O0O5T9-O3UNKV!jLOu;?>!g_BD^= z@dT0p-LRmGUk}H*12>LHIC9<(IYdG>?$ixB>>FpM&unGhi@iPt0OTlsY>|onbwX1N z6WIH_14u0dZTb=e|5%}}rY0ir`-czr1#c#_C0GI99$GNOX>HqckZ=iT z)9aX~esaXowKYmWBWc>cBHmZl!E8Q7w zuCtBCt4Pz{ltu~oRN26cLqLY{tLC}?Q^}c!L%IHceCV8na8f8?N@bUwtWzQTZYs;UK_t*LT^IUUXvpn~6 zKlj|%^Lc+>@3-J(grr(@yXR8FiTbqHH}wP?O(nLpdiCpe^;B;bE1Kga>kUh~`b^sm z(NeVej=O?#FybVQY~p)n;^#VtQ|%F>D|i-(^0SI^N@}`%<6+im&In%a6@`Mupaqfs z49ed}1g(hg)ObVm&hT;2LIp?9R|xjbP)=I@B=1*viY3Hg{?^lS;E&LXDr z*6ihuY`f1p2xm-al_BT|zM?-a%jW<|3z$F${$L!9{D)|}$9Ff96~f>}97rAl?IWS# z0iGmKYhTy?R~7f$V^$~>szOK8z?1ug`kNZR=eW|OGnlH}tZ{0V7n*Xhd)Du2#+or5 zR_8p-AGE(ZHZ$|Od%hXpLGWZCn=v=D0ijD%{Vi`n6i-7%^*u)EwVO+WT9oM;^#wMM za+c{443|n<981hT=ZG${0I2gP`!+Z43#H*gf8^)=*^3U3xuI1y6Qr5?jxX-chbq&< z@`BztpR7*Tk~hJc{?zGvs~OJS2d0*~3Z$AQ%xyUT;5o>H1^HivNCs&7=iS)v^DL3G z;(0bH?6MT~_T=?D4Neq7LOO_MUeatIp_Rp2IE}d|!MkN-+4TGk)qyP@S!=I; zhIBB?{l#!H<}`A%kT`(^cT<`0fQ#zWScG87S`L{g*`rmCd1G-*;-S{(-`uqGi;Ln= z5UNYanY!_Z`2;#fmHN;3{ zLvna=ioWrRYDmS$*wM26BsHFw1rC7)W*?qUQf-#S#s#)VHSvGIi&X?}*Xng}jr2)^ z$`bMYDS!3JK>y1sHb0dfk#;;kn-&|m>s2IjdD)qP)%Z1KP{ht`!ZVY zD0FygpdP0IIOV_G785$mOXWp!T8y6mWPseZVpu)+MV)ugn|oBRu9Z-dhWs<)hPHVs)EZZNy&6#ndU^n8$W@gVmpwJQ>J+MgMIZNwI z`9otn9w1s_16_hg^+RXILMq}lyc8vyUHb89>m1a#%RLJ}vg{Q5Gxl<~0s3q6dqt{+ z_++M~uT%?3gH%wvCo^dqK0^U)q+IKe5r>fx+eM?Kau;gK{v~T%KCEJ?X|jIU=O1H& zp~-|O-Ix&GS>UF9*hV{VUh1ug)^}|H6>PHxdbt-K7b;ee4cx^oMy0NG5#PB3fyzUN z--5)_RfE0J!BPhdm;D%x+$;0RgC#f;-Jc8`TB2ZcxdJy%3eB4+dYmVlv8dkYG-6QH zB{Gr?Ux-RkxzpkH2qmA8{x`0StKc>BWJ^h~@6M;z(i`uVW%CrD^l7`G%NrD0VRkdM zg=L0Gv}_HYmE5wbj!jYa7M8=Yx1|m{!mP1QqC0mPY}z>w#ov+n9pVOg$0WJ8fOPX5 z_TcY-OuaxB+u^&`)>`#{NXua`54eq=OA{km*emPeTPXt9NRrB%OA`)2KYZ9LxRq%K zUE-WjlO9K|P{-I#V#arE29cWTe^?xI+wGJ!6Z}w)<@>xf_<*oLiK2_FbA<(#Dz)9Ks=yD_pRCQ=>AKbzF%q4G_r0%TX5DHUG+mP2 z+y8c;)kNW1&|G;gvqe|&N?fnpjp=8moqWQC=xOA!LOLbMh8aI6a@sp^$zDrsvD}eo z7Ne?g$%yJL(-K_P{b?_r#**`FbF{!Q29Ae@b49vnI?**husrHqHztrp!Tp}7Ih?(`H2d*fr#U>uh0KDNM-Z$&;QabEnx|k{oe*F3w_JY zP23!f;f(Kb`dtJdSEh3{M>j4L8&5b88nX4ZusWr}%{(z*vy6*}I`mX8K2+43`5w20y!0tOny&raaR5&1aBOgXqSRK^Hse@a+f&_ zGB5}7DPRV4R5K+<&R(2f*ls%0KX|8EiOsfogoDq0RVve+|X9aj1UVz2A z+(Vme`~J1E(0diwjLT))LhnBw8^`KjRdf7ASbI}nLa`K(YNqAWFf#^s3); zcdaZ{G!iyP1Bk~WXiM&B2{@%(vbM>bh~Dxh zhWA8qJdGB5AK^QEO%?2{yPa-;gub5jX-s?07DH>&tuq|KnU2ZA7U35C89$DlXW=ho zSRSn4BwDL(M8MuM}^BwSy)rST9e*WQzO1On6GYzdAzyfU;AF#*~LJ6%kWZ4BmHAR5l z52zZ)$>v(pEx%>`Qum|%d797k=(+=F5{RX* zq)K^sMIW}g6a>S zfM%tZfMS-P!v2Koj;-b;$hO5dNLyL?MY3pBDo{JD8_kz7l=1R}A3L^5Jr%H0uZ-I{k z86d3xYebH2|GO&}=>7k%K(*c*?JFdbwI36Yr$L{Wnd+Uk7&1T0dS1pycKlum?)jl- zFdGv{5ZrgaBu=GL7XxtLrc0hj%b?P~HRXlhd$D@>BOOZH93we4h=#b~H=gL*hwMxo z4pQQE($c%R37TkVnJWZqI)2@B1yCon<~4@+SPj~V`YQfA&E z=Qh4#ucTM#y$bL%f^?avp$J;Rpf;veWxK1K4L&ZjrhA{~fMB-IrKVx#T9^9CULw@I zPETpY((^nCR#vH8=A4nm0RXe&Jb{Wv&tSi~0NftFULO@{5(lc9>+Cig z{G#9~2UC9!)dNpVe&xk+=|I?>UZ1Qq3lYWC*APhNUqJl6^t7XG{evhvOxX$zQa?hf z@Ea?GG9J>-y&2!CZ(Eu(3+0x`#$EB`lufxf>D?`>W{b@-mH;V-^5yC_0_cVV6=G1= zttVApZHp_JP6EhG$@3AxPR{R9p6YwZLGXQH9lg^@ z)pD80L1WGfuo3T1ws48d)$tY6`lf`IVX}f$Zvur_OOr|=hAzsAwwRy&Je9WJ)Vx*j zPJG>|?T47_Xr>}L@)qBCk4xMM1Z2Iy%qnaE1hZa`JZ{CNCh8u3Z9erM(?I)T6mTb+l8&}0`C z`Pmp*@_M#s(1`_3^2^^os4#lwWH`8znc2eQR0szje;az)W)XCU0dnO z=cM#=l{!_xXXQxh8UAhn?ap4~R3C#~#(l6RKRc(?zN+6}H8I-7zO+_9}NmcnG0x3G9cOa19`2noY1}}K=fmZ_Z z;C*WV4+P?JA3wdteZR%AV0MDl?rz!7>+OsWpeq5mITa)vE*Bxkjr|z;gWn<+0(r^| zRE&QP?P9LB3s)~@g*ZLa-hi}w9bbNfSxvGuH#}pJ;i@E{_!0k=vl{YXZ0EEd5o_fz z7PC2AB|LnNeHH4|Ea|{ibb{f5wySM$#})6`ABpSbC74`)IIUViz|fe96=Eapeg+vs z(6iolsJqeac_2nVzh=yw5|PkvGpk@j643+m;W*@X2YEis&i2{G<$azcFue9hOAeug zEWuYKgf<6z5IDcu@mg;*R|~wlt$YBO53zUA=ftN7<1}SBky_QU_3}6bG4WH>!p@W$ z+i|1RHXsi)GbK)(yYgFR<&{c={fc2z_ze6dh!f>bg!bX;aqk4J#(QRO6|?JVgK=Jv z0p;ff88Es{O*lLqAKTc=jV0#!5T+C$khL$+@L~YkF^z(n6#~)IHrB%2L_GQ*FZJoL literal 0 HcmV?d00001 diff --git a/libraries/Larduino_HSPExamples/Larduino_HSPExamples.h b/libraries/BasicsExamples/BasicsExamples.h similarity index 100% rename from libraries/Larduino_HSPExamples/Larduino_HSPExamples.h rename to libraries/BasicsExamples/BasicsExamples.h diff --git a/libraries/BasicsExamples/examples/AnalogRead/AnalogRead.ino b/libraries/BasicsExamples/examples/AnalogRead/AnalogRead.ino new file mode 100644 index 0000000..c1a217f --- /dev/null +++ b/libraries/BasicsExamples/examples/AnalogRead/AnalogRead.ino @@ -0,0 +1,26 @@ +//============================================ +// ADC demo for lgt328p +// Nulllab org +// Using new added internal 2.56V reference +// analogReadResolution: +// ADC10BIT ADC12BIT + +// analogReference : +// DEFAULT EXTERNAL INTERNAL1V024 INTERNAL2V048 INTERNAL4V096 +//============================================ + +uint16_t value; + +void setup() { + // put your setup code here, to run once: + analogReadResolution(ADC12BIT); // ADC10BIT default is 10bit + analogReference(INTERNAL2V48); // DEFAULT EXTERNAL INTERNAL1V024 INTERNAL2V048 INTERNAL4V096 + Serial.begin(9600); +} + +void loop() { + // put your main code here, to run repeatedly: + value = analogRead(A0); + Serial.println(value); + delay(1); +} diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d1d2_duo0/lgt8fx8p_pwm_d1d2_duo0.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d1d2_duo0/lgt8fx8p_pwm_d1d2_duo0.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d1d2_duo0/lgt8fx8p_pwm_d1d2_duo0.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d1d2_duo0/lgt8fx8p_pwm_d1d2_duo0.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d1d2_solo_fast/lgt8fx8p_pwm_d1d2_solo_fast.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d1d2_solo_fast/lgt8fx8p_pwm_d1d2_solo_fast.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d1d2_solo_fast/lgt8fx8p_pwm_d1d2_solo_fast.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d1d2_solo_fast/lgt8fx8p_pwm_d1d2_solo_fast.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_duo1/lgt8fx8p_pwm_d24d25_duo1.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_duo1/lgt8fx8p_pwm_d24d25_duo1.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_duo1/lgt8fx8p_pwm_d24d25_duo1.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_duo1/lgt8fx8p_pwm_d24d25_duo1.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo/lgt8fx8p_pwm_d24d25_solo.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo/lgt8fx8p_pwm_d24d25_solo.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo/lgt8fx8p_pwm_d24d25_solo.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo/lgt8fx8p_pwm_d24d25_solo.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo_fast/lgt8fx8p_pwm_d24d25_solo_fast.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo_fast/lgt8fx8p_pwm_d24d25_solo_fast.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo_fast/lgt8fx8p_pwm_d24d25_solo_fast.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo_fast/lgt8fx8p_pwm_d24d25_solo_fast.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo_slow/lgt8fx8p_pwm_d24d25_solo_slow.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo_slow/lgt8fx8p_pwm_d24d25_solo_slow.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d24d25_solo_slow/lgt8fx8p_pwm_d24d25_solo_slow.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d24d25_solo_slow/lgt8fx8p_pwm_d24d25_solo_slow.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d3d11_solo/lgt8fx8p_pwm_d3d11_solo.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d3d11_solo/lgt8fx8p_pwm_d3d11_solo.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d3d11_solo/lgt8fx8p_pwm_d3d11_solo.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d3d11_solo/lgt8fx8p_pwm_d3d11_solo.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_duo0/lgt8fx8p_pwm_d5d6_duo0.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_duo0/lgt8fx8p_pwm_d5d6_duo0.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_duo0/lgt8fx8p_pwm_d5d6_duo0.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_duo0/lgt8fx8p_pwm_d5d6_duo0.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_duo1_boost/lgt8fx8p_pwm_d5d6_duo1_boost.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_duo1_boost/lgt8fx8p_pwm_d5d6_duo1_boost.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_duo1_boost/lgt8fx8p_pwm_d5d6_duo1_boost.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_duo1_boost/lgt8fx8p_pwm_d5d6_duo1_boost.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_solo/lgt8fx8p_pwm_d5d6_solo.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_solo/lgt8fx8p_pwm_d5d6_solo.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_solo/lgt8fx8p_pwm_d5d6_solo.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_solo/lgt8fx8p_pwm_d5d6_solo.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_turnoff/lgt8fx8p_pwm_d5d6_turnoff.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_turnoff/lgt8fx8p_pwm_d5d6_turnoff.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d5d6_turnoff/lgt8fx8p_pwm_d5d6_turnoff.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d5d6_turnoff/lgt8fx8p_pwm_d5d6_turnoff.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d9d10_duo1/lgt8fx8p_pwm_d9d10_duo1.ino b/libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d9d10_duo1/lgt8fx8p_pwm_d9d10_duo1.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_pwm_d9d10_duo1/lgt8fx8p_pwm_d9d10_duo1.ino rename to libraries/BasicsExamples/examples/Pwm/lgt8fx8p_pwm_d9d10_duo1/lgt8fx8p_pwm_d9d10_duo1.ino diff --git a/libraries/BasicsExamples/examples/SysClock/SysClock.ino b/libraries/BasicsExamples/examples/SysClock/SysClock.ino new file mode 100644 index 0000000..c0c0ea8 --- /dev/null +++ b/libraries/BasicsExamples/examples/SysClock/SysClock.ino @@ -0,0 +1,31 @@ +// demo for system clock switch +// using function "sysClock(mode)" to switch +// system clock between internal or external oscillator +// e.g: +// INT_OSC_32K 0 +// INT_OSC_32M 1 +// EXT_OSC_32M 2 +// EXT_OSC_24M 3 +// EXT_OSC_16M 4 +// EXT_OSC_12M 5 +// EXT_OSC_8M 6 +// EXT_OSC_4M 7 +// EXT_OSC_2M 8 +// EXT_OSC_1M 9 +// EXT_OSC_400K 10 +// EXT_OSC_32K 11 +// sysClock(INT_OSC_32M) for internal 32M oscillator +// sysClock(EXT_OSC_16M) for external 16M crystal + +void setup() { + // put your setup code here, to run once: + sysClock(INT_OSC_32M); // Set internal 32M oscillator + sysClockPrescale(SYSCLK_DIV_2); // set clock prescale 0 2 4 8 16 32 64 128 + sysClockOutput(1); // sysclock out put to D8 + pinMode(13, OUTPUT); +} + +void loop() { + // put your main code here, to run repeatedly: + digitalToggle(13); +} \ No newline at end of file diff --git a/libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case00/lgt8f328p_qfp48_case00.ino b/libraries/BasicsExamples/examples/lgt8f328p_qfp48_case00/lgt8f328p_qfp48_case00.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case00/lgt8f328p_qfp48_case00.ino rename to libraries/BasicsExamples/examples/lgt8f328p_qfp48_case00/lgt8f328p_qfp48_case00.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case01/lgt8f328p_qfp48_case01.ino b/libraries/BasicsExamples/examples/lgt8f328p_qfp48_case01/lgt8f328p_qfp48_case01.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case01/lgt8f328p_qfp48_case01.ino rename to libraries/BasicsExamples/examples/lgt8f328p_qfp48_case01/lgt8f328p_qfp48_case01.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case02/lgt8f328p_qfp48_case02.ino b/libraries/BasicsExamples/examples/lgt8f328p_qfp48_case02/lgt8f328p_qfp48_case02.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8f328p_qfp48_case02/lgt8f328p_qfp48_case02.ino rename to libraries/BasicsExamples/examples/lgt8f328p_qfp48_case02/lgt8f328p_qfp48_case02.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgt8fx8p_fastio/lgt8fx8p_fastio.ino b/libraries/BasicsExamples/examples/lgt8fx8p_fastio/lgt8fx8p_fastio.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgt8fx8p_fastio/lgt8fx8p_fastio.ino rename to libraries/BasicsExamples/examples/lgt8fx8p_fastio/lgt8fx8p_fastio.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgtdemo/PETest/PETest.ino b/libraries/BasicsExamples/examples/lgtdemo/PETest/PETest.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgtdemo/PETest/PETest.ino rename to libraries/BasicsExamples/examples/lgtdemo/PETest/PETest.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgtdemo/dac0_ramp/dac0_ramp.ino b/libraries/BasicsExamples/examples/lgtdemo/dac0_ramp/dac0_ramp.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgtdemo/dac0_ramp/dac0_ramp.ino rename to libraries/BasicsExamples/examples/lgtdemo/dac0_ramp/dac0_ramp.ino diff --git a/libraries/Larduino_HSPExamples/examples/lgtdemo/dac1_ramp/dac1_ramp.ino b/libraries/BasicsExamples/examples/lgtdemo/dac1_ramp/dac1_ramp.ino similarity index 100% rename from libraries/Larduino_HSPExamples/examples/lgtdemo/dac1_ramp/dac1_ramp.ino rename to libraries/BasicsExamples/examples/lgtdemo/dac1_ramp/dac1_ramp.ino diff --git a/libraries/Larduino_HSPExamples/keywords.txt b/libraries/BasicsExamples/keywords.txt similarity index 100% rename from libraries/Larduino_HSPExamples/keywords.txt rename to libraries/BasicsExamples/keywords.txt diff --git a/libraries/BasicsExamples/library.properties b/libraries/BasicsExamples/library.properties new file mode 100644 index 0000000..ef92e27 --- /dev/null +++ b/libraries/BasicsExamples/library.properties @@ -0,0 +1,9 @@ +name=BasicsExamples +version=0.0.0 +author=LGTMCU +maintainer=LGTMCU +sentence=Example sketches for the Nulllab Arduino Hardware Support Package +paragraph= +category=Other +url=https://github.com/nulllaborg/arduino_nulllab +architectures=avr diff --git a/libraries/Larduino_HSPExamples/examples/lgt8f328p_sysclock/lgt8f328p_sysclock.ino b/libraries/Larduino_HSPExamples/examples/lgt8f328p_sysclock/lgt8f328p_sysclock.ino deleted file mode 100644 index ff640d7..0000000 --- a/libraries/Larduino_HSPExamples/examples/lgt8f328p_sysclock/lgt8f328p_sysclock.ino +++ /dev/null @@ -1,18 +0,0 @@ -// demo for system clock switch -// using function "sysClock(mode)" to switch -// system clock between internal or external oscillator -// e.g: -// sysClock(INT_OSC) for internal oscillator -// sysClock(EXT_OSC) for external crystal - -void setup() { - // put your setup code here, to run once: - sysClock(EXT_OSC); - - pinMode(E4, OUTPUT); -} - -void loop() { - // put your main code here, to run repeatedly: - digitalToggle(E4); -} diff --git a/libraries/Larduino_HSPExamples/examples/lgtdemo/adc_i2v56/adc_i2v56.ino b/libraries/Larduino_HSPExamples/examples/lgtdemo/adc_i2v56/adc_i2v56.ino deleted file mode 100644 index 5128ba1..0000000 --- a/libraries/Larduino_HSPExamples/examples/lgtdemo/adc_i2v56/adc_i2v56.ino +++ /dev/null @@ -1,22 +0,0 @@ -//============================================ -// ADC demo for Larduino w/ LGT8F328D -// Using new added internal 2.56V reference -//============================================ - -uint16_t value; - -void setup() { - // put your setup code here, to run once: - analogReference(INTERNAL2V56); - - Serial.begin(19200); - -} - -void loop() { - // put your main code here, to run repeatedly: - value = analogRead(VCCM); - - Serial.println(value); - delay(1); -} diff --git a/libraries/Larduino_HSPExamples/library.properties b/libraries/Larduino_HSPExamples/library.properties deleted file mode 100644 index 3eaa287..0000000 --- a/libraries/Larduino_HSPExamples/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Larduino_HSP Examples -version=0.0.0 -author=LGTMCU -maintainer=LGTMCU -sentence=Example sketches for the Larduino_HSP Hardware Support Package -paragraph= -category=Other -url=https://github.com/LGTMCU/Larduino_HSP -architectures=avr diff --git a/libraries/Syntax/keywords.txt b/libraries/Syntax/keywords.txt index 46a3f51..1de037d 100644 --- a/libraries/Syntax/keywords.txt +++ b/libraries/Syntax/keywords.txt @@ -9,15 +9,17 @@ ####################################### # Methods and Functions (KEYWORD2) ####################################### -pwmMode KEYWORD2 -pwmWrite KEYWORD2 -pwmFrequency KEYWORD2 -pwmTurnOff KEYWORD2 -startTick KEYWORD2 -stopTick KEYWORD2 -sysClock KEYWORD2 -digitalToggle KEYWORD2 -pwmResolution KEYWORD2 +pwmMode KEYWORD2 +pwmWrite KEYWORD2 +pwmFrequency KEYWORD2 +pwmTurnOff KEYWORD2 +startTick KEYWORD2 +stopTick KEYWORD2 +sysClock KEYWORD2 +sysClockPrescale KEYWORD2 +sysClockOutput KEYWORD2 +digitalToggle KEYWORD2 +pwmResolution KEYWORD2 fastioMode KEYWORD2 fastioToggle KEYWORD2 fastioRead KEYWORD2 @@ -42,12 +44,40 @@ PWM_FREQ_BOOST LITERAL1 PWM_FREQ_FAST LITERAL1 PWM_FREQ_NORMAL LITERAL1 PWM_FREQ_SLOW LITERAL1 -INT_OSC LITERAL1 -EXT_OSC LITERAL1 + +INT_OSC_32K LITERAL1 +INT_OSC_32M LITERAL1 +EXT_OSC_32M LITERAL1 +EXT_OSC_24M LITERAL1 +EXT_OSC_16M LITERAL1 +EXT_OSC_12M LITERAL1 +EXT_OSC_8M LITERAL1 +EXT_OSC_4M LITERAL1 +EXT_OSC_2M LITERAL1 +EXT_OSC_1M LITERAL1 +EXT_OSC_400K LITERAL1 +EXT_OSC_32K LITERAL1 + +SYSCLK_DIV_0 LITERAL1 +SYSCLK_DIV_2 LITERAL1 +SYSCLK_DIV_4 LITERAL1 +SYSCLK_DIV_8 LITERAL1 +SYSCLK_DIV_16 LITERAL1 +SYSCLK_DIV_32 LITERAL1 +SYSCLK_DIV_64 LITERAL1 +SYSCLK_DIV_128 LITERAL1 + OC3A LITERAL1 VCCM LITERAL1 AOFF LITERAL1 IVREF LITERAL1 +ADC10BIT LITERAL1 +ADC12BIT LITERAL1 +DEFAULT LITERAL1 +EXTERNAL LITERAL1 +INTERNAL1V024 LITERAL1 +INTERNAL2V048 LITERAL1 +INTERNAL4V096 LITERAL1 AGND LITERAL1 V5D1 LITERAL1 V5D4 LITERAL1 diff --git a/libraries/keywords.txt b/libraries/keywords.txt index 07032ae..33875b4 100644 --- a/libraries/keywords.txt +++ b/libraries/keywords.txt @@ -9,8 +9,10 @@ ####################################### # Methods and Functions (KEYWORD2) ####################################### -digitalToggle KEYWORD2 -sysClock KEYWORD2 +digitalToggle KEYWORD2 +sysClock KEYWORD2 +sysClockPrescale KEYWORD2 +sysClockOutput KEYWORD2 ####################################### # Constants (LITERAL1) @@ -34,7 +36,31 @@ F4 LITERAL1 F5 LITERAL1 F6 LITERAL1 F7 LITERAL1 -EXT_OSC LITERAL1 -INT_OSC LITERAL1 - +INT_OSC_32K LITERAL1 +INT_OSC_32M LITERAL1 +EXT_OSC_32M LITERAL1 +EXT_OSC_24M LITERAL1 +EXT_OSC_16M LITERAL1 +EXT_OSC_12M LITERAL1 +EXT_OSC_8M LITERAL1 +EXT_OSC_4M LITERAL1 +EXT_OSC_2M LITERAL1 +EXT_OSC_1M LITERAL1 +EXT_OSC_400K LITERAL1 +EXT_OSC_32K LITERAL1 +SYSCLK_DIV_0 LITERAL1 +SYSCLK_DIV_2 LITERAL1 +SYSCLK_DIV_4 LITERAL1 +SYSCLK_DIV_8 LITERAL1 +SYSCLK_DIV_16 LITERAL1 +SYSCLK_DIV_32 LITERAL1 +SYSCLK_DIV_64 LITERAL1 +SYSCLK_DIV_128 LITERAL1 +ADC10BIT LITERAL1 +ADC12BIT LITERAL1 +DEFAULT LITERAL1 +EXTERNAL LITERAL1 +INTERNAL1V024 LITERAL1 +INTERNAL2V048 LITERAL1 +INTERNAL4V096 LITERAL1