From d3dc3d3eeb43e53ae5132692931c26c3eafb5560 Mon Sep 17 00:00:00 2001 From: Oussama Date: Mon, 10 Apr 2023 16:02:33 +0200 Subject: [PATCH] Introduction des codes --- BE-chti C/.gitignore | 110 + BE-chti C/LICENSE | 5 + BE-chti C/README.md | 70 + BE-chti C/elec/spice/pwm/PWM.asc | 68 + .../matlab/Intro_Elec_Analogique_AOP.pdf | Bin 0 -> 247389 bytes BE-chti C/signal/matlab/L32.m | 33 + BE-chti C/signal/matlab/LG.slx | Bin 0 -> 22939 bytes BE-chti C/signal/matlab/SimulDFT.slx | Bin 0 -> 24734 bytes BE-chti C/signal/matlab/carre.slx | Bin 0 -> 23251 bytes BE-chti C/signal/matlab/carre32.m | 27 + BE-chti C/signal/matlab/scriptDFT.m | 33 + BE-chti C/signal/matlab/simDFT.slx | Bin 0 -> 21371 bytes .../soft/ModuleAffichage/Affichage_Valise.h | 78 + .../PjtKEIL_StepDFT/Driver/DriverJeuLaser.h | 345 + .../PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc | 56 + BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s | 166 + BE-chti C/soft/PjtKEIL_StepDFT/Src/Signal.asm | 68 + .../soft/PjtKEIL_StepDFT/Src/principal.c | 28 + .../soft/PjtKEIL_StepDFT/Src/startup-rvds.s | 335 + .../soft/PjtKEIL_StepDFT/StepDFT.uvprojx | 1332 ++++ .../soft/PjtKEIL_StepDeb_1/BacASable.uvprojx | 1347 ++++ .../PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h | 345 + .../Driver/DriverJeuLaser.inc | 56 + BE-chti C/soft/PjtKEIL_StepDeb_1/Src/Delay.s | 61 + .../soft/PjtKEIL_StepDeb_1/Src/principal.c | 32 + .../soft/PjtKEIL_StepDeb_1/Src/startup-rvds.s | 335 + .../soft/PjtKEIL_StepDeb_2/BacASable.uvprojx | 1347 ++++ .../PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h | 345 + .../Driver/DriverJeuLaser.inc | 56 + BE-chti C/soft/PjtKEIL_StepDeb_2/Src/Cligno.s | 77 + .../soft/PjtKEIL_StepDeb_2/Src/principal.c | 47 + .../soft/PjtKEIL_StepDeb_2/Src/startup-rvds.s | 335 + .../PjtKEIL_StepSon/Driver/DriverJeuLaser.h | 345 + .../PjtKEIL_StepSon/Driver/DriverJeuLaser.inc | 56 + .../soft/PjtKEIL_StepSon/Src/GestionSon.s | 67 + .../soft/PjtKEIL_StepSon/Src/bruitverre.asm | 5527 +++++++++++++++++ .../soft/PjtKEIL_StepSon/Src/principal.c | 34 + .../soft/PjtKEIL_StepSon/Src/startup-rvds.s | 335 + .../soft/PjtKEIL_StepSon/StepSon.uvprojx | 1377 ++++ BE-chti C/soft/Signal.m | 38 + 40 files changed, 14916 insertions(+) create mode 100644 BE-chti C/.gitignore create mode 100644 BE-chti C/LICENSE create mode 100644 BE-chti C/README.md create mode 100644 BE-chti C/elec/spice/pwm/PWM.asc create mode 100644 BE-chti C/signal/matlab/Intro_Elec_Analogique_AOP.pdf create mode 100644 BE-chti C/signal/matlab/L32.m create mode 100644 BE-chti C/signal/matlab/LG.slx create mode 100644 BE-chti C/signal/matlab/SimulDFT.slx create mode 100644 BE-chti C/signal/matlab/carre.slx create mode 100644 BE-chti C/signal/matlab/carre32.m create mode 100644 BE-chti C/signal/matlab/scriptDFT.m create mode 100644 BE-chti C/signal/matlab/simDFT.slx create mode 100644 BE-chti C/soft/ModuleAffichage/Affichage_Valise.h create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.h create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Src/Signal.asm create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Src/principal.c create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/Src/startup-rvds.s create mode 100644 BE-chti C/soft/PjtKEIL_StepDFT/StepDFT.uvprojx create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/BacASable.uvprojx create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/Src/Delay.s create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/Src/principal.c create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_1/Src/startup-rvds.s create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/BacASable.uvprojx create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/Src/Cligno.s create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/Src/principal.c create mode 100644 BE-chti C/soft/PjtKEIL_StepDeb_2/Src/startup-rvds.s create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.h create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.inc create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Src/GestionSon.s create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Src/bruitverre.asm create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Src/principal.c create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/Src/startup-rvds.s create mode 100644 BE-chti C/soft/PjtKEIL_StepSon/StepSon.uvprojx create mode 100644 BE-chti C/soft/Signal.m diff --git a/BE-chti C/.gitignore b/BE-chti C/.gitignore new file mode 100644 index 0000000..dbfcb74 --- /dev/null +++ b/BE-chti C/.gitignore @@ -0,0 +1,110 @@ +# ---> Matlab +##--------------------------------------------------- +## Remove autosaves generated by the Matlab editor +## We have git for backups! +##--------------------------------------------------- + +# Windows default autosave extension +*.asv + +# OSX / *nix default autosave extension +*.m~ + +# Compiled MEX binaries (all platforms) +*.mex* + +# Simulink Code Generation +slprj/ + +# Session info +octave-workspace + +# Simulink autosave extension +*.autosave +*.slxc + +#spice +*.raw +*.log + +# A .gitignore for Keil projects. +# Taken mostly from http://www.keil.com/support/man/docs/uv4/uv4_b_filetypes.htm + +# User-specific uVision files +*.opt +*.uvopt +*.uvoptx +*.uvgui +*.uvgui.* +*.uvguix.* + +# Listing files +*.cod +*.htm +*.i +*.lst +*.map +*.m51 +*.m66 +# define exception below if needed +*.scr + +# Object and HEX files +*.axf +*.b[0-3][0-9] +*.hex +*.d +*.crf +*.elf +*.hex +*.h86 +*.lib +*.obj +*.o +*.sbr + +# Build files +# define exception below if needed +*.bat +*._ia +*.__i +*._ii +*.scvd + +# Generated output files +/Listings/* +/Objects/* +DebugConfig +RTE +# Debugger files +# define exception below if needed +*.ini + +# Other files +*.build_log.htm +*.cdb +*.dep +*.ic +*.lin +*.lnp +*.orc +# define exception below if needed +*.pack +# define exception below if needed +*.pdsc +*.plg +# define exception below if needed +*.sct +*.sfd +*.sfr + +# Miscellaneous +*.tra +*.bin +*.fed +*.l1p +*.l2p +*.iex + +# To explicitly override the above, define any exceptions here; e.g.: +# !my_customized_scatter_file.sct diff --git a/BE-chti C/LICENSE b/BE-chti C/LICENSE new file mode 100644 index 0000000..c690c65 --- /dev/null +++ b/BE-chti C/LICENSE @@ -0,0 +1,5 @@ +Copyright 1989, 1991, 1992 by Carnegie Mellon University +Derivative Work - 1996, 1998-2000 Copyright 1996, 1998-2000 The Regents of the University of California +All Rights Reserved +Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of CMU and The Regents of the University of California not be used in advertising or publicity pertaining to distribution of the software without specific written permission. +CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/BE-chti C/README.md b/BE-chti C/README.md new file mode 100644 index 0000000..ba29950 --- /dev/null +++ b/BE-chti C/README.md @@ -0,0 +1,70 @@ +# chti23 + +**Si vous ouvrez ce fichier README.md avec `Visual Code Studio`, faites CTRL+K,V pour visualiser le contenu.** + +Dépôt commun pour le BE chti : +Chaque binome travaille sur ça branche de type grpE_NOM1_NOM2. + +## Guide de travail Git +--- + +Une fois l'[installation](#installation) et la branche faite voilà le *workflow* conseillé en TP chez soi à chaque séance de travail. + + + 1) Vérifier que l'on est bien sur sa branche grpX_NOM1_NOM2 (sinon faire git checkout NOMDEBREANCHE) et récuppérer tout ce qu'il y a de nouveau sur le dépôt : + +git status +git pull + +Là normalement il n'y a pas de conflit... Sinon il faudra les régler et faire un commit (demander à chatGPT ou au prof) + +2) Vous travaillez et modifiez vos fichiers en local. +3) A la fin d'une séance de travail ou d'une étape il faut enregistrer une version nouvelle de son travail (faire un "commit") et pour cela ajouter les nouveautés à enregistrer (faire des "add"). Un git status permet de voir ou on en est et faire ses add. On peut aveuglément tout ajouter. + +git pull +git status +git add * --dry-run + +Là vérifier ce que dit le `dry-run` (essai à vide) et que tout ira bien. N'ajouter que du code source pas de fichiers générés parasites etc. + +git add * +git commit -am "TP1 pas fini de rien comprendre" +git push + + + +## Installation +___ + +Pour celles qui conaisse git voilà le résumé : + + +git clone https://git.etud.insa-toulouse.fr/VOTRE_COMPTE/chti23.git + + + +### Clone +--- + +* Lancez git bash : "menu windows tapez Git et sélectionnez Git Bash" pour vérifier qu'il est bien installé +* Placez vous où bon vous semble et faites un clic droit puis `Git Bash Here`, puis faite un clone du dépot git (hébergé par l'INSA grâce aux étudiantes du club Info) avec la ligne de commande : + + git clone https://git.etud.insa-toulouse.fr/VOTRE_COMPTE/chti23.git + + +* Pour vérifier, naviguer dans le répertoire `chti23`, faites un clic droit et `Git Bash Here` et tentez de faire la fameuse commande : + + git status + + +> Il se peut qu'un message parlant de **répertoire non secure** s'affiche et propose une ligne de commande dans le message qui doit resembler à : +> git config --global --add safe.directory '%(prefix)///netapp1/GNIAGNIAGNIA...' +> Faites un copier-coller de cette commande et exécutez-la. +> La commande git status doit enfin fonctionner + + + +Les fichiers sont visibles et partagés ! + + + diff --git a/BE-chti C/elec/spice/pwm/PWM.asc b/BE-chti C/elec/spice/pwm/PWM.asc new file mode 100644 index 0000000..5cbcda5 --- /dev/null +++ b/BE-chti C/elec/spice/pwm/PWM.asc @@ -0,0 +1,68 @@ +Version 4 +SHEET 1 1084 820 +WIRE 208 16 96 16 +WIRE 784 16 208 16 +WIRE 944 16 864 16 +WIRE 1008 16 944 16 +WIRE -368 80 -512 80 +WIRE 96 96 96 16 +WIRE 944 144 944 16 +WIRE -512 176 -512 80 +WIRE 96 224 96 176 +WIRE 944 256 944 208 +WIRE -512 304 -512 256 +WIRE 96 384 -48 384 +WIRE -48 480 -48 384 +WIRE -48 608 -48 560 +FLAG -512 304 0 +FLAG -368 80 Compteur +FLAG 944 256 0 +FLAG 1008 16 Filtre +FLAG -48 608 0 +FLAG 96 384 CompValue +FLAG 208 16 PWM +FLAG 96 224 0 +SYMBOL voltage -512 160 R0 +WINDOW 3 -372 78 Left 2 +WINDOW 123 0 0 Left 0 +WINDOW 39 0 0 Left 0 +SYMATTR Value PULSE(0 3.3 0 5u 0 0 5u) +SYMATTR InstName V1 +SYMBOL cap 928 144 R0 +SYMATTR InstName C1 +SYMATTR Value 10n +SYMBOL res 880 0 R90 +WINDOW 0 0 56 VBottom 2 +WINDOW 3 32 56 VTop 2 +SYMATTR InstName R1 +SYMATTR Value 3.9k +SYMBOL voltage -48 464 R0 +WINDOW 3 49 61 Left 2 +WINDOW 123 0 0 Left 0 +WINDOW 39 0 0 Left 0 +SYMATTR Value SINE(1.65 1 2k) +SYMATTR InstName V2 +SYMBOL bv 96 80 R0 +SYMATTR InstName B1 +SYMATTR Value V=if(V(CompValue)>V(Compteur),3.3,0) +TEXT 272 256 Left 2 !;ac dec 100 1 10meg +TEXT 272 296 Left 2 !.tran 0 1.5m 0 0.01u +TEXT -880 40 Left 2 ;Compteur de l'unité Timer +TEXT -96 -24 Left 2 ;Partie PWM de l'unité Timer +TEXT -904 -56 Left 4 ;TIMER3 +TEXT 688 80 Left 4 ;PB0 +TEXT 480 0 Left 2 ;Chanel 3 +TEXT 384 -168 Left 5 ;STM32F103 +LINE Normal 688 48 752 -16 +LINE Normal 688 -16 688 48 +LINE Normal 752 48 688 -16 +LINE Normal 752 48 752 48 +LINE Normal 720 -208 720 -16 +LINE Normal 256 -208 720 -208 +LINE Normal 720 784 720 48 +LINE Normal 720 784 720 784 +LINE Normal 720 816 720 784 +RECTANGLE Normal -192 352 -912 16 2 +RECTANGLE Normal 592 656 -128 -48 2 +RECTANGLE Normal 640 736 -976 -96 +RECTANGLE Normal 752 48 688 -16 diff --git a/BE-chti C/signal/matlab/Intro_Elec_Analogique_AOP.pdf b/BE-chti C/signal/matlab/Intro_Elec_Analogique_AOP.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9d47b53072ae9b30a62a305d7ec8fb40cb06ab83 GIT binary patch literal 247389 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Ν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

tnN#!)ahI3qt1+s0{pV8#htBjYAq$kGF8OV>y zr8zJh$N1pkt~v=dMsr6$9x3zuPm-Y^it7(e$z!|rzR|90c}Y5t72eIR4BJwvZwNzH zG2{QFm;XC`$;1ZuKXiKr`hQ4y|9>kr1N}et>i@}0U8NyuOVswSrX_b^OLZ?Kc(BoW z6eHUN^wk0U5@MNJbh1&c

  • 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 Sdf&akcgOrD6I*|xgkh8G^TIe;e>()$c~F+ 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 H2JU|V1C9am literal 0 HcmV?d00001 diff --git a/BE-chti C/signal/matlab/carre.slx b/BE-chti C/signal/matlab/carre.slx new file mode 100644 index 0000000000000000000000000000000000000000..1ff6b3d7c1f7295b05a18d4a4a74924dab093e65 GIT binary patch literal 23251 zcmaI6Q;;Z8wJ?whQl`Cu2%G?Ul zz#u39000mGAHni!_FT&O$AAC;1CRg!$p22Yh3)NJOzm9sRXiO`optFvY;8u;?5#H$ z5Jvw*Eo>rAZALSSW z_cEtS(&62I88GNB14f+YB;|~zD2W&QGBbX$A$%@)$x@I;-znHb2gnOchRkT+(fR{v znb4)UXrn}{LT}zZnv&lzqX*@YYHi0moinD4Ps;PD$BciQF-oH%Y!W0YroG>_RQfyY zS9yxj%@2@55bM0~NvhB@cN`vf6@Ws^}}3(%U>BisLVW0RpQOA4Em5DfaHuOZGy z0o=>Nfw`G-`8^5(r81 zf2ZJ(SmDTLpn_CD&Uo*R)u;4MyueA%{P&(CQhqa79pj3fOff zQU?q~fKp{lbdM=L_4#D(Bn)UKV5vzNNyJ!4G$+mKHT_+9%6ET3=tQzoP*zvrQ?S$u z0FbM&N~>*B(G0drXDwlCLU1gRMB7!`nI+hnHB2cr(YYHF`>By?1WzrLiROjC&?>$w zLtCeHzcmhj0iJlW6yU9tDb?sWkFbU(Ogq+9b<&=yb9~c<*?j^|1V;4E7eizqKQ?nk z9G8tM&CTQn&=j)EtJVkOpR7))5mvhgUAyW-ok7_z0Kh6}N^E%d_x1QKLnpt1O zK0UlrNAj3SUt}zO7H+mIrWRtva^+NWa(b)X4id;P3q5%>QfAz}U@v__cg_fRXCU$~ zg&8~+D6JuHe^J^7!()`=9iRB>zf@V?le?Pr{=T!$@&o=S71%ZJsOtZyXaNEM!2U;t zt*MKliJ^-jy|KNMse+TegQ=5?rK$6O2{l$p_a8MV-_#|y3Q&Twz%+`@(*0*|U{Oj8TfjjneI<}}Ep zS1BMdF9rzgQ_Fiwbu2xWt3Yk78S z)d1rL@1UR?YE07h2j=b3#aXn|d>UEM|!MW_Xa)NXQ^VjIG;M{<{1z;K)s#PObQ}lA!CW0bIOGoJ;8!|ZZPQltn#?(CIIHG*Z(=95oUWJx5)Y% zFFN(-e@H_;{*-#;9}nXHIKllt`LK2WzZo%&XS5q)fDx@HvZz1ypn}reXey;xd;+Ku z84e;nGUiv2kB^72}h!cqtr4k^}C zXyM|@#?PbfQ>D|;7E!DYH(6G;J|4liM>b2K6VArdF+b-qSMHy45N3V~AGq?ot}(Zg zxb8x6QILwl`}=oti_(S%=}|q3#XS?4%(`t^&9MrRvg8<*sq0l=BKKFYo4fmjHZaf;{R0uB~u$yLuXS- zJ2U(LDuHX9G<*;PLdfk`RH}C&iUb4Y@#qZny(0;#8exx2^k_bPs(6pbW~RNFyXV7= zmPg^@^ZZ!bsRDKbeOS}YZKE$&8A%he;XN*)L!Pq2YrCMU6U!sZfMDE;sX}a6jG`E+ z$$HT;M2O5x?8#K>)>9~GKf3T$?s#F`DKmdbOn0>{k(D0l$;_5+t0C!y&U*xY`=o8Cu%VIoO$RtG{zE>to}I>?V+=&>+^2(|xj~K@gH&t|_@CnaZSDGOQ-# z(hwU%7)KU1nv(a4wJ8dZ_aQgIjPl)<EPg`0QH_mK_&4l9yYe@%*Q$7pZ@3H&6#(n zId-PGPJ&+rQeKD`(-n$j*>{2ZUuPjno9O6B7b5;66#o=Bx0p|3{Q9E(h$^ZvQ57Wm zW{Vt&BHCSDnlLZ?IlO?<5|UAscI}(&>}=u8?yZoJkTQgn$M07AXnX_pb9!FmF(TorQ>baZroAq6@ZOqVE#QJ#>ZvLDtLx;Cbo4B?29kO$z{qvR8`s!J-!`FMleHTS zH8H!;5UFgii(KainkScP!PUmk`p^+kU}53KbLZ`xoW{G-W7Bc9Z4E3a)(W}2i;I{Z znU&9HYr(yjnC5J3m*OTu*hn36_rBERU9J6!gAT_-m&+x*$YrZ|N_u~38pg&AHz@&< z1s1;oy6OstyqecZ)!=mPdsDwGSOl~f3 zUonOrgw(<8prOR%*ul%n%dB{PB>cTPj$1f?BEfNTbhW9?t*kzTe2O1tO?o;rJNMAJkv8bH&>B~(U=5Ya(m^f$FKyeD8m;dy~6giD%^LSL3P+TWXpg;VoZN#c9c zL+oPn!7iz-g`HFj2PYxJ272{N&-9GV#T`c;u;GMX8aBZ$%NQgS*<-#-=wbEuFdhC2 zp;<^=;x$0M(C$_Ew-6d)UB`4NMj#r7mm4BNZtjN*(Q_`e@8Py9^chKhvbA8r>Cs(N zbJz{!AfzYu%}q^Egz5J~Ocj^7( zjl^MMDID;e5hk~n@)8S$ijwlYi%rL%o{{W@T93P|TG?;9O(D|y;MIk>B=Pd@6IE>V zZ{gAUdhXh(3}a$%Z?6t4wvCR?A2_|a1^Eke!#-GQLwZ2dpW|Y)vgPJNEqEgvBO=>A z)70;ccQzpnQBw1wQP{YF*QYIE9T0yCnjUIGM*+%}naI|yS%*RLPMA~cV_LPXAp1!k ziN4lQpH(bkhgUlt_jb7-P(pnHAWO`;;$mhdy^HdoN$5-sQv;KlJNqV4pnY}*#{2hc z2a>wFosYvG7xNyo-d7iW#3bNpnu3aqX9yZnLdFH$F|yYEmha|SDwUXIX zodO$w{H#Y(NJ$9^4g9^e5hZxQWlT;pt-F=0(on1@&KxP&V0y)+qt9Uh$?%GbSB=~I z@Wk6F+uJWAnkwUt01P;<6de(UO&8AASz_M@#H|e;7#|+Pc&hitAaf(1_3C*|*rtiU ztYsr)BdO&ycvded=C&lHjzSuWXK}JrU$>cVQbF9bKeWFPv>$2y+_3d;vsLwWawiyh z_tT5C7LS0L2y(5?h+Zn=Z^><*tA&(R)z{|^!Cjf5s~7Rn+8n+IbrzF`r*RuJErj1k zeRN}|gdF)6rYQas=Tt*hIkoLa_e@)WEKrz=44Mzr(^YXRqW8X1T?Ge+&yV-8Hs!y$ zJ*T2mu(?As?aC5KiQ z#?)R@T@ZR1^|_~sIKp(wFL4Kme41Seo!zU&^&&2Xs-a~zWkYzQmILT^x2eC&&FWvN z@!1QA?Hvy~cn3y*YFzD7&$Q<}GSC_8_BIDS9Y6l2-#8OsKh`UimiCTSL-oFzmbBZB zo6u#doI`DpLeWZjX9;FH*(JLiA~G9ms3xUx|7O1XU~9D<=0Li4=f4X2`Q9z|dY%XC zgvZnVDZ|KWSbBCH#fr$8MF19kWge;$OtDI{`*Q8Rm7_fkPoAZt8^hybHYzFtYPS!c z;&>jHb#hamwXud(G~4`nq=tP*7T8BcJ$NAmFRo*Y2mlCuh0>$Hfd5FPoV+Gfimbym zRDtA~1OS^`D?mh-*zYNbsHmuTOYNp~{{nz;aB%^NRp*`uxNGpYAtPs8&!&3&2}rkr znxCVf2^o=Ax}Vz+geGVjXm=Xari^@L)}s9skDeIzqQ?f{Ulp5NkH9c4zs_7uZ?>)2 z(!om&ko8qx;|4gvv56@)H{EwX>8=Qp2#x}ncxAT%`Of#fUU==MbH#h7szviHA+ z9FQEuLJv)GRX!sx?RhUFrwbJtk1s805D^jENlh6>K}Ci2%%Y>E4fL6dBLFdFr|PQK zAK;l1vqRHW zT1xW#ELi*l_t0saa&Lulor(%3EVr|HXQL`mW6F=2#W7c8-a#8zXaZh092Eer{nwAA^EXt` zN`%y;jaKB^rI~D*u6lcVaBz9m&0s&@1K8M@P;!DqKyNQ7{=3h`Rg>MLSj`ifpN2+Y z3Ty$(0zjy;s<&JfLP!*!5`Y&vs4P2MR>xQVh4-sK;qoJ$U6HDo5YRQ<9yF9RSl&w& z4$z{stT0kq?&t8QQ{tp|#3UBK*0822fXl$x)U|`o?l~tfZ~(*LZCqw$?XxuCWSt*& zaNj}9&#yzXuhAR`2uMu82=2u+0y8_?9D~QlqrS0m!S#aKDq~q{F4b36tpgc z=b5{x$Tvq$%*^c8U zzh6LXx=5%ioSBz<6SqQu7(Lyn-~R#ISXC7~wunX!7~m7z(lWFjY^%JG3Fu0DqG~=h zWJT3;4xiXT>ZEoD$>nS}8q0o1CnP2-egbKX zPg)Knq5L6W;lQzxISmMbBu2#IPgM_ZB94RR(nJb=PA!O|Oiqd`wpLWS)s(&E#P#(G zc*@FJV4&S>9U2B?2};Y*TBK2TeIzNn^F4M*Ix0EBtEe3H)laq&adaxK=Bba z8=sx1tZXfaW=Bh3-;dJ;vo)k6?@e8gPgpEFi0;iR>4j8Y*Pwe2ZVBegkM!jAr+79i zNGllMIudo@-oe4*!n*0%c2B8-o}QiRca9a@)&sri@u(|TBTcRY=hol9SZk(*BzB@S zO7@V9jEsiy1o0)g*U!?Jg#)$x22Y}EuCA`g`qrlT5?#fL6|@-+$nv4S*2>1y4WISS z%Y35X2@Uv!#Cr1lX=!}m%VW#bMfU|jxJQ)pOkXkRAG?=2KiJvbC@&!vzwBlQA_d8y zm}h*816KU;Z|wiMUxBiu;GF(5dr1E|vY7w&D`!hvR~t(^YkFm43sVzU8&lzb#?OEI zvT9RKn*=D^r_?-ujRA!q{=F)b#gA@_=INRt=vc?nP7>c^J6}VeNVDa%+j3i+kaFnc z!kO*lAxnopc6!3a(q3L+Auz^?DNt&qtJ+}c=>856amdt_xmv8fF^|=mflroX(2{IT zVD7Mn;)Xq$t=$PJRCT5}?ntrwDYip%tGQsJfraBvX@aSzEYsLgmQg}N6v7x1bYsMF zU5c4n{GIQA)79nla3Fr|2(omrqQIzK3(W(IGOi2(4DqBwPzECg>=f9dkm`tcgxv=5 zi&9lymfgpzj{-}1gr49-ZGK;K%@lsr)MAIsH?#Qx(e3E!bX**ul)HT$;-w!1K~DjW zdgKwGb_jMVWlYj=%EVA$B-hr%`_sT4pPI$)s`>?z+i3=yd`Hn?h=ixG5th~E*1kw5 z$7p@XUFkAhX@*rwi80(Esc5GW#1U7b&S1*KRZyb08sq>D17B@g2$hc6+2WVk?U%1G zfz(9J;MDt+=F;m|@k%b7(hw3E!QAL>n{KxDUS=Sl@VgH8v@C0sqNqiHiA*1ffK;mF zJnWpqe0OC$;GX1RaC+Qw>JrDvMivM`xfG}rVNHB zRLMVtqDaNM&O>|`elVr!`|TI2H2vL}-xD_5%7~_;-M6_4jU}iz3lXT9qCka+K6tAW zh@6tdA}T<96<-=*iN$L?%X;E3hC2MG4gskDWrzM>>JT-tbg_5(FMYJC$vS52c-8fDD=qhJzomo!8eVz`8NDS+iI28aLOpe7d#X4jdgc zQuXF{T}PGWeQ*f$m0z|@M0v42-}dPN-{_N=C)cq=d*`B-S+=Vi?`n@f3C=$0YP%@= z+f5(vhUjvwrNU5Ip8UyrDTH1u3sQ~SGbJ>yt*O%?@DN5od)WDLic!4!wtcMyb^KJp zeqXmI9k)fzFp9wx_H#P%gtJgk6+B%9#n1kGCVrS%9-8;jo!i&0gSN3O&pK041jR6o zX<(QIgh>b^fk8Z+fkLQ67b&~M7W=+DIpX7Pa*B08Rm3!i3aCMZtpf!ZqC^=X9Ew`5 zNynf+)|$BFsc2SP=MMg}XyO$iZ6t?C3?Y(p6d=k2B*Xw>!~788P~;Fc+QIfvM4Q#d zAP*^w%z=gNPaS*XR^HoKCvAD8)`4fG%x3!l*Et7LH+>E2yx~ic{ZuF|)4hz`(b%s3 z?1|jH`)$uHV}4-sKJag!8&;2>D)=9Kltrl zF)qa*e~6+GYdhCMARv+xlyia+s-Y}+46rggOOPkmxNoQG)+gM#i?xH5djnpJ5&5Pz z#PQ;>;KJsoOn%mrzCVDqrF*aaTIYP~wtD9D?diu+@5|GV9^7ag@w(7{x_mC~xU68$ z-vZZm*-@7xXYUc!#5q};)N_Wg)nbwHZP>H=Qh65dm5ve7mVXHzAiq~=+)^LpaH-4i z4*Z|mkmjPxFa76APJjadko=#M^ad&Bphd63wb3-z=oIQNN*Ikus<$qE z6+5FKJZvTIhy85ZX}#HH)aSTEjjKi8pZ%vcZBCJLhI!hYNss%{0(RLXbsMeCqGkAjn?GzzqCSt+A3_8~N(*0?SAvoDqOq|BqG z3}7W%946KpnPf-mrnSX!uH`)4rKUx-qo`8X;Lrl}Re#zNejyKqwC53=?-%?(Y0m4s zjc)lzFYZ68N&jz}jqUBsEX|coUH*UL`M-HKjUTZ3mqdi=kDT>U;1sK$Qp^*0o71MHM_J$D)7XX9B};c6PNlo1gY2zFw_d7BzbvuE}hEGF0r|U(%1h&t~>y6kiw;8<-Si93WGj+@8cD1iM<{;@do&$?6LG z4Vi+GW?~a7a5?%2Fe&FdXFR;;vq$=wn-+=dDaK4dQj6jCe6*PgnxJxpmjFLXN}DGn zE^K1kVl$;fJpuFrH6>@}=f2(fU%&t0kF@*wp8typS%62Xa$5+`v)J$)#ZqSjw+GP| zoi@O{E>|)OV?~|GYjq?@x6=kbHrKr~yIq;Mu3w4M&A}A&lZldJ*sRZq2;YJ$GK5Ze zj!4K%#709^8uDrKlogrYvfKt@|2iojEL02D=Q7E9jU-!0fvJyn*C_fG5_ntayNq^= zcfb*ohfTV`a@umSyv)U?u!_-+b5i}SptL;oCoP6ni9a&|b5x+p_vI4lIp5tW)~VHH zS~P)DaGcht_Yrdy^wC<$8h$twI^j6sqFT?Z!A2u;=!Q2H*$n7N8ui%48*N7I8PK>C zQxcb96L8`$KlnwwS(k$npBUsXYyA69#Fapxs7^1Iaog&SJT957M_eVXbSW zVUg;Sk~tU#wrbsSuQk_SJ-~>Fk0+?Q-=c1*cP{3wr$Zc%NXf%C8i63STB5l_bi}S@ zn|&Paz*HX}hS#3VOs?dt8769fi}Ww`GuOvfdd9nDyUboJ59LjBBKb{Qr^aHB^dQVz zc1$z9#A0CHn%atc3WsEtA%X)-H*DI$mk~L;8xnC07-$&OQS1}y;H667s?iKAPcqLP z)skOOu3RU4_I)Oq=XmzQKk#OH?+yIxhKNzWI=$-Tc5~MH#dwBmwk9pVt^ZIZF({3g z*LsoTl1bmKSxWO0hXotLXmEP@4YIep=93_#NQDC3kZ}urXhB59P&#Q6WBP-rhL#F- zgA%7d5*MRcCZR(E*R@f@ zl-La1`djcuNEYWUFoA196|ddD51@vco<-Z9tMwKwy(J%d%_}a1YxZ^7s8n zdMh;xs?r_9k?Nr1elV#DXI8RNB)9h`iZkHjA+@V$vMeuQY!W)1@M%B*c|*V+GnWc)&WEID&v004pizH9%n^8L?|ovWc~f5?X5 zx2sPGac$Ht0B4@9cWJRte2&$COsvEP8bwr4nm8Rs1ez3e`11irxshmuYq@K3i9PEu zYtQoaki&EeSyB|F-w}MMyatFD74dL1IOFQ`6#Y5k&8`yxu^uxfR3<{a{H}(2zr!g9 z$SD8T<5DLHgMtXbB{^IyJHRHq)ykO4Y9O3AKsyYf2hJjTbbfzc{_DDTxAjdf!NbYs*72F&KF&(+c7Fpv3TR2O){`G!7Cj6v+n56@qTwM4ry+X{2 z$Wt~E`ka#woQgT$&O({*mv9H*qWEmUdn7NhCEPnKdN-o3HCo#l5(!V4ku) zgxq%lkw}?+Yo}^vUUM)sgfX^a7%xy!#QZgEdkkcBI**~KD-e*P7bWFVQ{zayx;ctt zHwcM_-Rud%d16J5w$c30Vp;pb0I0>n)(ST8_qMdyk@i)G<)oaCdz0zs$jGy5U zDu%axpac33!2{#mUj$>aLGee6rChVx6Rka@cVQ?Ag5~VJ42{B)%+92G(z4g=5B!a6dHoVWW)x21kSl367F-B`N5m%g^ z@yxOTEucuU!E#GqlRTE^cfvs@v*a>gfGa{!(>+%{HPP9Vsg13I$swJ16ycuEa&!;> zYL=20zcLM2b^lHgn?7TEENYr2d*@0@v#)gdUoNDcdl z5aP-BC#*OOHlfqtqATOWCxXr z3Zb#)f4tv_(#?Q1V}jl-dVael=db8$#^(dZL7q}og{ODNvO;T_012=Mt7*rHhv}K% z5r;u8p9ITe!?ZMsgRK>$JdV65e>@Vrme#vU_EATpe^kfI)xlr?Xnx1ijxs(SoBmR; zhkyS)K&jY3aTi!?6mC&^U!RK8f7l(z-yEcrXRI#iUQ%bAQM(iN+zQ36lLh{^LzN_S z85xWUp}1x&{{wNtQNy2Wn6(59?HNL>v!7^UyskIm3Wx3 z4L8lMx$O@=GHzWo+^Ui~X#>S8HJQZ1b2hjsBpius)C?XnkG)+ns)hbotpKd9ttBby zGHJ6k5*mp;$sXz%OL_@`Veo}{sNG#O_VnE);s=$63-Xw)ZHp7vI%*|)Tk%XCd8H7w z*PXLYu;y!H>n-TEr-EG}J5B=ZIUftr!qzA2U80P4d>j$JIHoV$F#DohzVuV?dr6>o z_OahVUoP|YZ3Y&%l+c( z9O6+d=r6|>kYvXobG7nyjc3*O>~K^=mco!m78>xT&=nseSTEq-Pg;23@!@l&=xlfjPw@}Rt}(B_OC9`TD4?vQsJ=_8Xr# zMuTX=>#o9Id9J%SDgVP`YH2^DN@()q{CoAh=@)<6C?nGM)v2Evt&acc&-pu4UO0_z zgn9q)1>d_M=lA(hvx{9;Lt&>e>VG3nRIQZA-)G10838rElo!^4 z0_rW{$)xI}i?Nme8CkQJ{{8sp`+F(-oDhuOh;)^7dc)uNhfN{M)|(?N40FTXf$2=HiY zQzqCTvzZXl|9Pir7pK(VU%Z*oe1Mn&)i7dY$Q#_D1htNB2n}A6*7NhOUIro;P>rL( zURrp6y2S7^Y4lE@!MA@bMb^-z)JaO9)ySF;)b7~258I;%8qCt_K%wqbVWP-_;SP!~ zoj{_HMVc@@=mEP!pesc>sk+MlCy`Tn9SeSrsN_6}pMvb5G37EV##t5hIEFq{)`)eF zLVvtdhc3~prbY*xg({&V_?Zip2lIHr;(~VuGog05`b&7sbe9cIsO^(w_7zHFjEiw4G3pm;0X9PKWut@R*9XS)A*jM{L zXQ<7~nu8GV^fnug78Is|cR*vf3CQF?CQ-eKO3ZU2T}zpx4Z?_)DeVU-zKIn$89l_s z+talfToWJV%2oe~zjwiG*-mE{9BWNlt!d%DTv1C|>tlOi!snbN@>Zq`8l)4`3KEschAJ=0Yo z#Fl=I&XeSPB#zbP}Tt+-nqwB8}k{Lj@-WD=yT!Qc4yi8weER zHt)r}9o`jFwuhl0dX>O_CZdk{mntf%^Z*}6WUf0_$uVu_n7tAYdLDQ78o|cao>d(E ziCdGCqVii|6UeNmMrB8)eoear4TfdRFjhpfeALq2p%hhat|NHsFMG3p4i-mfa>L;5 ztST^hXs&`6YP(i??%W&DbkYy*&Cmh;72rCn7JJ}xRL#@^bVHRub8Tl2T4l6xOp4{; zN|E}3S0_@NZsvgFnOSN*;1XnPn2fDPREP)Z!^jlg*Djyvm)lji0C!k;N~C{6qJ?(z z(D-wI)%l+5_|h^~*CGRi;%2qSNI!a40@E=KJ=jPn1$t095(jWL2x^MU>ll)5@d&&L2&SV9U3$uG)x*5R8yHueJycSCHz9NdJi3>LYM|)&{qehlpeI5hT@sT4(%MYnO0|aLz5l+TI zQ2jdCAZUaOOKsP}9>E?A=p?2^KK8r_Wyg_3NYzv4SUw?B!MoTyREw&oVk8QWbu&9Q z+O$Wml$ub0j{NCjyqC5+rwEVe3?nzxMRDW5YeU9$d$iy)pdvd3*R!#FZk-6NPxJfn zcEw6mZ7w!uNz-aXV2hLRZ7*GuAI0?GZs|AA6 zg6d@YY1O`cZKK%}VQH`|m51+i3qpd&p=PaK_I8RJ>Zft<))+ZB#j2&5#X#uqes-eo zbOP?w4RJ(f=ht2SaE_F>jYa8&LM@>^WZgr}9=)yg`oF&P(60kY_ZKbv4Jk^1E7T+2 zReWm(U%i@hI~zbPA0%||T{?;lA@lgQcpwT97~7XVvnE+LwEam1BokcmH zg@i?+Iwmk;NP@ z=IpI-C8J77b-v)yI8B473~Ug{V0{~~Mj5V}ZH#Ep^Yt{ZC2D~<_r@SmP5*)c5&J@u zRbVPw+l6B}!NMBdaVq%?CkbqhJd4JDT(!@-@?>+Pyde5d0_Zq1YRHwRzGZFLn3`yw z@n=08Bxl9IVRQrg{%z39PB}u5PHl27yEaVkMuJ)eBE#r5KKJ$Q%r8E}KT@sfJkPcv z5S%C2c|sK7zl|0tzIR-*kb0cb6AW*TVXBIgG3&#V4p)KY`P7Mb!|m$1KH#jw02s}E zaJdhx~~{?&hYv*ibpW_v7&xa*6d^i%7Fk3g zI$q$#-w(o$1@B4+Z33zuG@8AG57&e8Ohz9_;WLfFw)_Ur3!M7`pYA0aVQQ-oz6=1} zuHG{^J|QD&vtagp&8fgWHt$n_N@GjOiHue+uq(Q>NJa_7L^-sOTaVwVWI8wewaRv)!5C!X+F5H%yAkY)X!D0!<#g4Zk3<;MQu2#6-ez6gQG8;+t->7da$)#Y zCa6W=aiQPwlu^_@015T#YO*Md$zW)tl5ZKNHkqZ?J(j$kx)t|g{n7;7{cP(fK>(Jw z+#9oeJSh2rE32pUJz64YRYM6{^f1rWVS^}`F_LzTHbE#H!s2zh6M=q&5h}Hag+9%b z-Y{sXKnQZ|q~J!UA>)!Q^hj{VdnyV5gkc<`H3x^GUTNqLKuDHiq71Y;Uv8@Az-vae zt{}eIL9(+A(;uj~44xSfMa87vPj;7U9JEQbw6z*K<(=b==Fvin0*(<1l-16*dA~}q z-W3jPS&}^?Y9?wWdz4{F;1qJ5bWM%euh6wTPlE*3#yMz-9}*7ANIkF#q|d(Dr}hK< zg*kLaguW8xT(HI{A+T9s^G>J)pw8+<(&lor1FERdI;7H7te~tp``SKRJ*98ypI8pW zNx=}>aIP#T0k~#GYoQ!mAqOQ9mE?_ymK7SsR8JMrzTJXa9hZV z-jqqH%a)uQPzR6t`+#F}q1ls2F{lAeu|=fOUT^T#^#Ru0F}`TGUvRY_G}6Pjmb4wxz+dZMvPg=RsTvNpwM1slT{m=)Cq zX08EWqEU0+EjpWk&@&W_I8dmm>lKIsqLJG!KRkr(K+Py=1sV{qP?jQ;^wKo=fVUxl zY?#kekG^1@%zIX3w8g;*fVfJ+8B}p8*eK{LJeRkBH|k2NRd=7zc)SI>{kzwN=_s^C zmVIs@u9+>x93%Vj+^#iR#5Yc%#stc8+TgDVHlB6irlsm&a3)s3mLwuBxc&PN<*l1$ zG^~I%%deuuT(Puk5XywQVOeZr!dz0|2ei`1qXd_BB_7}|i0Ubw{$1*~GV(-g0tR!A z+*yRBrXEpp&<=zO6aiR`QO`iPJb0lT(vd`P0vgSvs34J^U*iw_>0W`S=q`LzlilXF zfVqwc%mv>dLgkqxM-m?>hA1SM>klA)R&I;!?v^9tuiBymxW*aKcLo`y2c~ zu!$VRTi8Uu240)V4=@MfkLW0=VHJ`?oENaBE>^NF=+CGv&Mp*)Gt6y`!~w`gZOm`! zBmPb9TC-Qh2v@uxb9(1|kPjSakKe$Zd(rlDCR>H^iI11{!ekpM=1HRSjHJVhHv)`t zFe~yZ_@vsMh*zG#^aJ~+|DcZCT^}?!b(<~*{g%pEF*O|6vDKac6=y+x`(PeIJKXuO zUc(2XM#IOD3ef9u*Hf99hM*JSIHj5pm5(O$4p*avX!rLj7~Ubow(FKwwHbF^qbL+M zc&TAEE(k2`fsHU&59{JBoMa9Oy1-9ix?(nXlm>N`nYY2X1|9tvpgN>c(d^rqr&a(* z81^F`*EFQfnR!TPUgrXjoBIw`0%1xLWUPp0AZC&N3SzfJ%7u2Tb;W`d?O29J9RoK3 zV$+q-cIhspFT_w44C3Q>lXN#?{YjJnb4mTTk>>aE{4iV{-|y`EK6@Pbz4z^IDBos6 zvF0zh#3WyVxY~xNh*~?- zpn|&meg2DNRx(6$C$ej9dd5=VO{ zB4q|(>bnH?~blrhUt zP4i=rrA({r3XB42C$bs>*2{CXrOOmr-hy?;BM=e3?kM#*Hf@}0mGgPXLV8N&sZ!u7 zy2w_NaX2`uroF%hV1&DC{tjKX&ApPN)<5brH==mdaj>j3z5e}wH17Ex|K%Qh&<^2y z9XagYih(-noTeDizOVb$6f%uVuHRvB7|a38a9MGamtCSi;+xp$e^V~(%E2ZIH7C|} z?3}^!oWbdFjpPq@eGQfgvKTObUN1Ud02762;nFxGGoP-7c-__4K^4Q zc1tBEK_@EV@gcMh%+nJlsPW@s>bj~XcAo#edF0-3jTPap{8)WeO0Az_frIeT9T00t z+KmM_R{*OO?51blY-pm8HSON1 z4K-^qqK%0&4LW9gO~|1aU`PZmIb{S4Aeg&|PKhU9;dA)y2eCsdR7$}%pqv`Z0(v+x$5hfi!S?t7vFfy=H*J~h7A01f_XWKAU>5^@HEbJl% z(c^bn;y(rVZ;W3s9sWF31g%oBT^I%_z{_w*r^SiQ=62rsJD5Q@Kkqq;u6i#T5T|@^ z#a*S!q}cub9MWlXod}K(b$OgBXa6noHez|VmkCaQF~;)5lF= z&-Zx0;eOrmM#1X+!p5LNj_%NF7kZfs4Gp`o>&t^t$!$~Ktu|V4IR<)mtE*V%9KlIH z$;!)y9wYGq+AG^*1G5Q{pSWXA;u51LH=I4`g1sNDVRmr`D!#T31sd+XSi?2tihD|K zxDs=pgW0MLdIcoIU%lusc#$;9jBu{DzhHjsAATl|jumisgbbIS}+BzxrY1tVA{GUa%+pa|uGy z?NlTwp_B7{dVY3ZWXJ%;SnuPM$D8Qc2R{S*(*v($pdns20JlG;m%FBEayY{>gsX)A=4-8+cU-mDo}R*>W#8gPC#oK83I zXICK%Dt|aP;-lQDU;k)3S#z9Qv!B^ysI&3+q?Ym+v#s zZ#Wx)*ecLIUJGp<=NVvi$UOZZ%r;y6Toy*57$OfNkg0+um9&db9VPa%1)% z9P9h*HXvpif3bE?0o&^PmZi330UdS+5P;JtTfhkk*RQ)u$k~DvFXoD_dnqtNHm>PB z&^+!3~! zHjkhFzfR5s8mhjJ<76k2-DB)2`-m)UWM77{McJ1j#x^vTkTq%Hu@qy=Y8Kf=YO2zocrcKrl8_;7zZkurV&=aAV9F2~D=-ql2FLOJ?k$9)8HlC!@lXVfVyHhayFH=qDFZxX(IQcv8Atet6W zbc*91XMpjeW}?W&(&{^d*WcHo83in0(iM?YtdC3Y%lHd}pE6>F|ognM}s1 zcZ_X9EIf|L>y{+cJ$Rai?#zOyswD0J`Bw^K;p12-elfqP;QZ49$`V2*+rstbE07zh ztfpp;&+UCT9$i0xQQWxdcyZSDK|xOy_PP7hzTgMwOUL-qlND4dC={-pT=T6Xl<}0K zOuPq@W)z(~_v*R+LHls#>U!0v zVmccVH6|=b>q|elff`L&lb5H%xJg0o7ygxLxl>bt?d_Vj{Lt9%T*k0+|E2QE#nz`U z^So-`R6UuKJw-9&(*8l^c!0qt>Z=M3URAEwrHSjz3(oqKIGhQ$K9g3%eXhvmjY1H@ z%6dTnchM~>ZczS+0h3YoXv?D7%I){MRm-h+XT0A|_FjJyTTM8I=;UN0s^wN&GBUC% zT^xhm%c@N5pwV(={v6%(L7b&vBR8>dGp8m#prFa>{lUKe9?b{5y5KIu8KK0CMXP+*m-=Aq4T-ET*C?0kZkr{d5S2b` zE5(T+#R!sN&bDl_N)rRG2iWDIr4-bH5IQi4)@0xTO6i0W$%e|?{s073#p|m(Q%;g@ z;a)||a;C)AOXG>;hZ-POqjDpK{igCXPbkig2q|8ZE~{bFK1BC^v;W~qoeut}-0 z76a=eJ<=(U)l7QXGg5a*<}o*e3&%5zz?rr+G5p)eqC|Cv8u9kgxW)W!cV!9)t&|bF zlGYZv05-9|H(_bVFG%54#`vFRQ*Pz6x~N5Lno;Y{Ea?50RZ#t)FVNVQ4h-Nm*ly$h zkN02SJNinC3!9qt1z}>sErixmBgqaaJp+wqSc@)>04p~V7Sn7m(<><-De-7&h2gai z!NukXFnsxlf!?{Bf}}@S;#Ywt#2(>ER);annBAEDr(^YYw2Q$kf z4~4rG7cndX7$VoQH#a!Q9&2zn9|c7r+~P7dKcllt_n&FlR$zZBKJX>-V&G-a4PFL}hD_ z3)~J|AMyNf?`XvVUr%oVOe;-nun|1-Y@y2F`lRZkQj>Lf$@8>3IyUS%80r#}I}hwj z?vfkZvJz@fio1Ne`Mil`vI;`79Fl$0z`z`_8s1VHJQ~;=vF1w1Zf}F6k>5^{m@_6z zf!%mx#69O?FI5}=u^>kgb%$xR~v04gf^nmoul?NvH;Q(F8P zTpVd(%VS>(;YAr#i^k)3J~Vu%yK~(A(`S7o#A6tFKZzG(&D3gifd{J7jzFF0vktIEwTRmE);SlbaM=t(v!gSLiSFr zE6UE^MFolQ1cDW8F8h9cA*vHo3lEcEQe9bKZthLM)M+>eck2w-z04_jc4Z4+|~)>n4^%J>`NWXBNd_TpJKJ-I-bqXHSJhsoijyv zaMm$S(WK~*1x}dpEQDugtuTA?5>_I8Kd|4pRo@n%jc+*ScbQ<)Qf<{$I+$Bmj=e*} zo8EuepxQh@A}Z_?q?v=rq_aAosJQK|jKA=o!zW~w46`DRhU<~N&ZxjI%W8IGwxI#2)gw}yZx=!g>kMb#vv(@H1>zBWZvdb2Qs zP8pCvVpxK2Eq!x{$mwlk8yV>Pkj$00X#xle1cneWes~kUi&6oauia2+Pb9+7%iaC5 zJsSPDQ{lf>hSSz=#Y4q$+H~S#f`VFN;w{jUz541Np2LYNw5ll(IQ?-MtN({0uECcp@}kF><7f1SNLzCyc%REJD% zqK-$=MzSDvq>;`C^#D}}VDRjx4vzA)NB-81yTGIe;)X{5;hTOw*+*=00Rn) zU(VYFds{;UkOYLbQbT#U0qH>h*L6>&t3wTMfoh0F`QV|=FilZn;X}VpTV1~PKbM$e zoV)-oSR(jhml7HnQRh+XzAQl)O9@om#1bD-SIl{U17SWHEJYR=At&8!U8gTj}Vq zrr@4hAJ>VEFNON3b+y3f2Snm+Wfe%!#o>bZe5HGmDS0dr7Tr;owyO?6!ss0iPixiG zYYE?NlxsWF%pi_QW@8bBX;aN?(Kqf?2biP`hVl`yTkcQgx6a=yNscUzM%QS~>9COSyZV7yP6&FOKWH2;UZZZRRllCOv-bu=Pyw9(D{ zbbW!i>#?ob!j|?ut2%7oH0eRWx+qcHBAJCbi9T@v`jDE&bVn;FNmq5M%8LvK-AL zmgi80IZez-$m9hYm=-l=Su(3WG^^%@05X_8G)9QEp~2Rt;51})F=IsU#I#?EgYq!{ zTY(e=f2d=*ZZ7TfPLYR|FGR%C^1Vr*%tOIkuL%%YLU_-YaCB3{+^2hDTPw_$O{v#h zufNXpNZi4$GhcP^7RhLAR#r~0jVQqp+`=y$@3mmd7k?CdQE1uHzQ+mH;|lZ3v|PKp z4NCR7{|@z-5pWko9V8-R+k4^qAl>XxKIrdDudEAZ=nM^}z*H;6xu;TU=T-V{!;@L6 zTqafSILdVQP>737lGYxGJ5m$4F-Uv(Xu{_k7`K{*B_HvCm-tjDOt-5|!Zu{!uruo& zLA?Pw$k;PZ4^F7?U#q1XpXa02;4v!vL5DqSsOm=JmsCDq#D>>SB~(1%jFn@*Ddyr*U_~z$q29vxo}tC>_&7^4@5eYp8=5~!^n?poM2=2U#s@oJ#C z-y}Y|vN%__@VJ+}T29~g4ZWkATUxb=eKeT77mYC=Y1D+ov5c7|l|mZh)@Ry31q~0K zh_q4NuZu@o;*A+U1= zuS#G;NO)XhO_>|t7&s4|LF4EbNyo@1ugQcSrl$($zap_(Vg4Z?w2Glis3vm5xkCzG zeJLSINLXKg)o?xOm4<>=Z=-#P2d`9{>r*mGiU4v(R;CG(F7a{B1M}5MH8w%FQ>YvHttBXLKz;m=Bzjc;}Y2@o|`34`aOEsimRmw zZHKZhA))DXon$s_nqBw8+pF+aG= zd-|cdv#jt#TMyeFjEJjxtgv);x63=`USk)u`qc-|AEj&-uLAK{#K05p_mP^w-Gm5O z#{cu#Ct!0gV88UmuSfn3U;+Nno-9W2f#9sb-2>A}{xvxe3<8JT?ShU2iI6`c2=|M; z1EausaeGjJjX%cl?$K3Sfhh`UYoqsO`WP$}_z)i@zm>Vx zx0Ylu1iX{82co(k~hYi?cwad-2#Szw-k0^3F>=b`)n|PN#NppmsGB? zhxENt+NTr;6Ty}9E>T-^AL8%oXfPIB@a|%#_rw0C`~_3Nh3YQ#w$?skL1inL1}-#r zX>724Xg`;oU>LYk+=V^Z5BBeMBNz^@?RMe1+Iy7#rqTn`zzgnO8YNJ7|G1BUmfw0X WGT^E4)g{MH=LkaW2+#v97A- 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 Mp?m$j&FZ&*0H}C=qyPW_ literal 0 HcmV?d00001 diff --git a/BE-chti C/soft/ModuleAffichage/Affichage_Valise.h b/BE-chti C/soft/ModuleAffichage/Affichage_Valise.h new file mode 100644 index 0000000..990ced9 --- /dev/null +++ b/BE-chti C/soft/ModuleAffichage/Affichage_Valise.h @@ -0,0 +1,78 @@ + +/* Fichier devant contenir l'ensemble de fichiers utiles pour le projet LaserQuest +et qui concenent l'affichage sur la valise */ +/* mais non disponible en version source pour les étudiants. */ + +#ifndef _AFFICHAGE_VALISE_H__ +#define _AFFICHAGE_VALISE_H__ +#include "stm32f10x.h" + + +/** + * @brief Initialise les périphériques nécessaires à l'affichage sur la Mallette + * et gère la cible active. S'utilise aussi avec les ùmodules affichages simple (pas de mallette) + * @note Utilise TIM1, PA5, PA6 pour les cibles, PC7 à PC9 pour SPI émulé + * utilise aussi une interruption sut TIM1, prio 8. + * @param none + * @retval None + */ +void Init_Affichage(void); + + +/** + * @brief Prépare l'affichage 2 digit sur l'afficheur demandé + * @note Exemple : Prepare_Afficheur(2, 99); + * prépare l'affichage de la valeur 99 sur l'afficheur n°2 + * L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED() + * @param char Aff : de 1 à 4 ; char Valeur de 0 à 99 + * @retval None + */ +void Prepare_Afficheur(char Aff, char Valeur); + + + +void Prepare_Set_Point_Unite(char Aff); +void Prepare_Clear_Point_Unite(char Aff); + + +/** + * @brief Prépare l'allumage de la LED demandée + * @note Exemple : Prepare_Set_LED(LED_Cible_2); + * prépare l'allumage de la LED correspondant à la cible n°2 + * L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED() + * @param voir #define ci-dessous + * @retval None + */ +void Prepare_Set_LED(char LED); +void Prepare_Clear_LED(char LED); + + +/** + * @brief Effectue l'action d'écriture dans le module d'affichage + * à partir de tout ce qui a été préparé auparavant. + * @note + * @param None + * @retval None + */ +void Mise_A_Jour_Afficheurs_LED(void); + +/** + * @brief Spécifie le capteut actif, à savoir celui effectivement relié + * aux sorties disponibles sur la malette + * @note Exemple : Choix_Capteur(1) + * @param 1 à 4 + * @retval None + */ +void Choix_Capteur(char Capteur); +// define utile pour la fonction Prepare_Set_LED et Prepare_Clear_LED +#define LED_LCD_R 5 +#define LED_LCD_V 4 +#define LED_Cible_4 3 +#define LED_Cible_3 2 +#define LED_Cible_2 1 +#define LED_Cible_1 0 + + + +#endif + diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.h b/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.h new file mode 100644 index 0000000..bc9b3bd --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.h @@ -0,0 +1,345 @@ +/** + * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) + * + * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz + * Modifs : + * enlèvement de tout ce qui est inutile dans le .h + * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C : + * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) + * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + * + * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3) + * PWM_Set_Value_On_TIM3_C3( int Val) + * permet en ASM ou en C de fixer la valeur de PWM + + * Ajout de commentaires + + */ +#ifndef DRIVERJEULASER_H__ +#define DRIVERJEULASER_H__ + +#include "stm32f10x.h" + +//********************************************************************************************************** +//--------------------- CONFIGURATION CLOCK DU STM32 -------------------------------------- +//********************************************************************************************************** + +/** + * @brief Configure l'ensemble des horloges du uC + * @note horloge systeme (config statique a 72 MHz pour le STM32F103) + * @param None + * @retval None + */ +void CLOCK_Configure(void); + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée + * @note L' horloge des 4 timers a une fréquence de 72MHz + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks ); + +/** + * Macros de base pour utiliser les timers + */ + // bloque le timer +#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0) +// Lance timer +#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0) + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) ); + + + + + + + + + + + +//********************************************************************************************************* +//--------------------- PWM TIM1 to TIM 4 ------------------------------ +//********************************************************************************************************* + +/** + * @brief Configure un timer en PWM + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param voie : un des 4 canaux possibles 1 à 4. + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé + */ +unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks ); + + + +/** + * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif + * est donc : rcy = Thaut_ticks / Periode_ticks + * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 + * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks + * @retval None + */ +void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure le timer Systick avec une périodicité donnée + * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption + * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3 + * Ce timer est un 24 bits + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Systick_Period_ff( unsigned int Periode_ticks ); + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick + * @note + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Systick_Prio_IT( char Prio, void (*Systick_function)(void) ); + + +/** + * Macros de base pour utiliser le Systick + */ +#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0) +#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0)) +#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1) +#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1)) + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps + * de fermeture du switch d'acquisition + * @note + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU + * exemple pour 1µs on choisira 72. + * @retval Nombre de Tick réellement pris en compte + */ +unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks ); + + +/** + * @brief Sélectionne la voie à convertir + * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Voie_ADC : 1 à 15 + * @retval None + */ +void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC ); + + + + + +/** + * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également + * la période de débordement du timer + * @note pas besoin de régler le timer avec une autre fonction dédiée timer + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ + +// param pour Source : +#define TIM1_CC1 0 +#define TIM1_CC2 1 +#define TIM1_CC3 2 +#define TIM2_CC2 3 +#define TIM4_CC4 5 +void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks ); + + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- ANALOG INPUT ADC & DMA ------------------------------ +//********************************************************************************************************** + +/** + * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA + * @note + * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé + * si '1' le ptr d'@ se recale à celle du début. + * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire + * @retval None + */ +void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA); + + + + + +/** + * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes + * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1 + * @note + * @param NbEchDMA est le nombre d'échantillons à stocker. + * @retval None + */ +void Start_DMA1( u16 NbEchDMA ); + +// arret DMA +#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1; + + +/** + * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition + * et du nombre d'echantillons + * @note fonction d'attente (bloquante) + * @param None + * @retval None + */ +void Wait_On_End_Of_DMA1(void); + + + + + + + + +//********************************************************************************************************** +//--------------------- GPIO ------------------------------ +//********************************************************************************************************** + +/** + * @brief Initialisation d'un GPIO (A à C), pin x. + * peut être configuré : + * -> Input ou output + * -> architecture technologique (push-pull, open drain...) + + * @note + * @param Port : GPIOA, GPIOB, GPIOC + * @param Broche : 0 à 15 + * @param Sens : INPUT ou OUTPUT + * @param Techno : voir define ci dessous + * @retval 1 erreur, 0 si OK + */ + +// Sens +#define INPUT 'i' +#define OUTPUT 'o' + +// Techno pour pin en entrée (INPUT) +#define ANALOG 0 +#define INPUT_FLOATING 1 +#define INPUT_PULL_DOWN_UP 2 + +// Techno pour pin en sortie (OUTPUT) +#define OUTPUT_PPULL 0 +#define OUTPUT_OPDRAIN 1 +#define ALT_PPULL 2 +#define ALT_OPDRAIN 3 + +// Exemple : +// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL); +// Place le bit 8 du port B en sortie Push-pull +char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno); + + +/** + * @brief Mise à 1 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Set(char Broche); +void GPIOB_Set(char Broche); +void GPIOC_Set(char Broche); + + + +/** + * @brief Mise à 0 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Clear(char Broche); +void GPIOB_Clear(char Broche); +void GPIOC_Clear(char Broche); + + +#endif + + diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc b/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc new file mode 100644 index 0000000..48d5e50 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc @@ -0,0 +1,56 @@ + +; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) +; Accès en aux fonctions suivantes : +; GPIO : +; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) +; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + +; PWM : +;/** +; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif +; * est donc : rcy = Thaut_ticks / Periode_ticks +; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 +; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks +; * @retval None +; */ + +;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + import PWM_Set_Value_TIM3_Ch3 + + + +;/** +; * @brief Mise à 1 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Set(char Broche); + import GPIOA_Set + +;void GPIOB_Set(char Broche); + import GPIOB_Set + +;void GPIOC_Set(char Broche); + import GPIOC_Set + + + +;/** +; * @brief Mise à 0 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Clear(char Broche); + import GPIOA_Clear + +;void GPIOB_Clear(char Broche); + import GPIOB_Clear + +;void GPIOC_Clear(char Broche); + import GPIOC_Clear + + end diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s b/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s new file mode 100644 index 0000000..3f6b5d4 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -0,0 +1,166 @@ + PRESERVE8 + THUMB + + +; ====================== zone de réservation de données, ====================================== +;Section RAM (read only) : + area mesdata,data,readonly + + +;Section RAM (read write): + area maram,data,readwrite + + + +; =============================================================================================== + + + + +;Section ROM code (read only) : + area moncode,code,readonly +; écrire le code ici + + + + + +;Section ROM code (read only) : + AREA Trigo, DATA, READONLY +; codage fractionnaire 1.15 + +TabCos + DCW 32767 ; 0 0x7fff 0.99997 + DCW 32610 ; 1 0x7f62 0.99518 + DCW 32138 ; 2 0x7d8a 0.98077 + DCW 31357 ; 3 0x7a7d 0.95694 + DCW 30274 ; 4 0x7642 0.92389 + DCW 28899 ; 5 0x70e3 0.88193 + DCW 27246 ; 6 0x6a6e 0.83148 + DCW 25330 ; 7 0x62f2 0.77301 + DCW 23170 ; 8 0x5a82 0.70709 + DCW 20788 ; 9 0x5134 0.63440 + DCW 18205 ; 10 0x471d 0.55557 + DCW 15447 ; 11 0x3c57 0.47141 + DCW 12540 ; 12 0x30fc 0.38269 + DCW 9512 ; 13 0x2528 0.29028 + DCW 6393 ; 14 0x18f9 0.19510 + DCW 3212 ; 15 0x0c8c 0.09802 + DCW 0 ; 16 0x0000 0.00000 + DCW -3212 ; 17 0xf374 -0.09802 + DCW -6393 ; 18 0xe707 -0.19510 + DCW -9512 ; 19 0xdad8 -0.29028 + DCW -12540 ; 20 0xcf04 -0.38269 + DCW -15447 ; 21 0xc3a9 -0.47141 + DCW -18205 ; 22 0xb8e3 -0.55557 + DCW -20788 ; 23 0xaecc -0.63440 + DCW -23170 ; 24 0xa57e -0.70709 + DCW -25330 ; 25 0x9d0e -0.77301 + DCW -27246 ; 26 0x9592 -0.83148 + DCW -28899 ; 27 0x8f1d -0.88193 + DCW -30274 ; 28 0x89be -0.92389 + DCW -31357 ; 29 0x8583 -0.95694 + DCW -32138 ; 30 0x8276 -0.98077 + DCW -32610 ; 31 0x809e -0.99518 + DCW -32768 ; 32 0x8000 -1.00000 + DCW -32610 ; 33 0x809e -0.99518 + DCW -32138 ; 34 0x8276 -0.98077 + DCW -31357 ; 35 0x8583 -0.95694 + DCW -30274 ; 36 0x89be -0.92389 + DCW -28899 ; 37 0x8f1d -0.88193 + DCW -27246 ; 38 0x9592 -0.83148 + DCW -25330 ; 39 0x9d0e -0.77301 + DCW -23170 ; 40 0xa57e -0.70709 + DCW -20788 ; 41 0xaecc -0.63440 + DCW -18205 ; 42 0xb8e3 -0.55557 + DCW -15447 ; 43 0xc3a9 -0.47141 + DCW -12540 ; 44 0xcf04 -0.38269 + DCW -9512 ; 45 0xdad8 -0.29028 + DCW -6393 ; 46 0xe707 -0.19510 + DCW -3212 ; 47 0xf374 -0.09802 + DCW 0 ; 48 0x0000 0.00000 + DCW 3212 ; 49 0x0c8c 0.09802 + DCW 6393 ; 50 0x18f9 0.19510 + DCW 9512 ; 51 0x2528 0.29028 + DCW 12540 ; 52 0x30fc 0.38269 + DCW 15447 ; 53 0x3c57 0.47141 + DCW 18205 ; 54 0x471d 0.55557 + DCW 20788 ; 55 0x5134 0.63440 + DCW 23170 ; 56 0x5a82 0.70709 + DCW 25330 ; 57 0x62f2 0.77301 + DCW 27246 ; 58 0x6a6e 0.83148 + DCW 28899 ; 59 0x70e3 0.88193 + DCW 30274 ; 60 0x7642 0.92389 + DCW 31357 ; 61 0x7a7d 0.95694 + DCW 32138 ; 62 0x7d8a 0.98077 + DCW 32610 ; 63 0x7f62 0.99518 +TabSin + DCW 0 ; 0 0x0000 0.00000 + DCW 3212 ; 1 0x0c8c 0.09802 + DCW 6393 ; 2 0x18f9 0.19510 + DCW 9512 ; 3 0x2528 0.29028 + DCW 12540 ; 4 0x30fc 0.38269 + DCW 15447 ; 5 0x3c57 0.47141 + DCW 18205 ; 6 0x471d 0.55557 + DCW 20788 ; 7 0x5134 0.63440 + DCW 23170 ; 8 0x5a82 0.70709 + DCW 25330 ; 9 0x62f2 0.77301 + DCW 27246 ; 10 0x6a6e 0.83148 + DCW 28899 ; 11 0x70e3 0.88193 + DCW 30274 ; 12 0x7642 0.92389 + DCW 31357 ; 13 0x7a7d 0.95694 + DCW 32138 ; 14 0x7d8a 0.98077 + DCW 32610 ; 15 0x7f62 0.99518 + DCW 32767 ; 16 0x7fff 0.99997 + DCW 32610 ; 17 0x7f62 0.99518 + DCW 32138 ; 18 0x7d8a 0.98077 + DCW 31357 ; 19 0x7a7d 0.95694 + DCW 30274 ; 20 0x7642 0.92389 + DCW 28899 ; 21 0x70e3 0.88193 + DCW 27246 ; 22 0x6a6e 0.83148 + DCW 25330 ; 23 0x62f2 0.77301 + DCW 23170 ; 24 0x5a82 0.70709 + DCW 20788 ; 25 0x5134 0.63440 + DCW 18205 ; 26 0x471d 0.55557 + DCW 15447 ; 27 0x3c57 0.47141 + DCW 12540 ; 28 0x30fc 0.38269 + DCW 9512 ; 29 0x2528 0.29028 + DCW 6393 ; 30 0x18f9 0.19510 + DCW 3212 ; 31 0x0c8c 0.09802 + DCW 0 ; 32 0x0000 0.00000 + DCW -3212 ; 33 0xf374 -0.09802 + DCW -6393 ; 34 0xe707 -0.19510 + DCW -9512 ; 35 0xdad8 -0.29028 + DCW -12540 ; 36 0xcf04 -0.38269 + DCW -15447 ; 37 0xc3a9 -0.47141 + DCW -18205 ; 38 0xb8e3 -0.55557 + DCW -20788 ; 39 0xaecc -0.63440 + DCW -23170 ; 40 0xa57e -0.70709 + DCW -25330 ; 41 0x9d0e -0.77301 + DCW -27246 ; 42 0x9592 -0.83148 + DCW -28899 ; 43 0x8f1d -0.88193 + DCW -30274 ; 44 0x89be -0.92389 + DCW -31357 ; 45 0x8583 -0.95694 + DCW -32138 ; 46 0x8276 -0.98077 + DCW -32610 ; 47 0x809e -0.99518 + DCW -32768 ; 48 0x8000 -1.00000 + DCW -32610 ; 49 0x809e -0.99518 + DCW -32138 ; 50 0x8276 -0.98077 + DCW -31357 ; 51 0x8583 -0.95694 + DCW -30274 ; 52 0x89be -0.92389 + DCW -28899 ; 53 0x8f1d -0.88193 + DCW -27246 ; 54 0x9592 -0.83148 + DCW -25330 ; 55 0x9d0e -0.77301 + DCW -23170 ; 56 0xa57e -0.70709 + DCW -20788 ; 57 0xaecc -0.63440 + DCW -18205 ; 58 0xb8e3 -0.55557 + DCW -15447 ; 59 0xc3a9 -0.47141 + DCW -12540 ; 60 0xcf04 -0.38269 + DCW -9512 ; 61 0xdad8 -0.29028 + DCW -6393 ; 62 0xe707 -0.19510 + DCW -3212 ; 63 0xf374 -0.09802 + + + + + END \ No newline at end of file diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/Signal.asm b/BE-chti C/soft/PjtKEIL_StepDFT/Src/Signal.asm new file mode 100644 index 0000000..5a79596 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Src/Signal.asm @@ -0,0 +1,68 @@ + AREA Signal, DATA, READONLY + export LeSignal +LeSignal + DCW 0x0fff ; 0 4095 0.99976 + DCW 0x0ff6 ; 1 4086 0.99756 + DCW 0x0fd9 ; 2 4057 0.99048 + DCW 0x0fa8 ; 3 4008 0.97852 + DCW 0x0f64 ; 4 3940 0.96191 + DCW 0x0f0e ; 5 3854 0.94092 + DCW 0x0ea7 ; 6 3751 0.91577 + DCW 0x0e2f ; 7 3631 0.88647 + DCW 0x0da8 ; 8 3496 0.85352 + DCW 0x0d13 ; 9 3347 0.81714 + DCW 0x0c72 ; 10 3186 0.77783 + DCW 0x0bc5 ; 11 3013 0.73560 + DCW 0x0b10 ; 12 2832 0.69141 + DCW 0x0a53 ; 13 2643 0.64526 + DCW 0x0990 ; 14 2448 0.59766 + DCW 0x08c9 ; 15 2249 0.54907 + DCW 0x0800 ; 16 2048 0.50000 + DCW 0x0737 ; 17 1847 0.45093 + DCW 0x0670 ; 18 1648 0.40234 + DCW 0x05ad ; 19 1453 0.35474 + DCW 0x04f0 ; 20 1264 0.30859 + DCW 0x043b ; 21 1083 0.26440 + DCW 0x038e ; 22 910 0.22217 + DCW 0x02ed ; 23 749 0.18286 + DCW 0x0258 ; 24 600 0.14648 + DCW 0x01d1 ; 25 465 0.11353 + DCW 0x0159 ; 26 345 0.08423 + DCW 0x00f2 ; 27 242 0.05908 + DCW 0x009c ; 28 156 0.03809 + DCW 0x0058 ; 29 88 0.02148 + DCW 0x0027 ; 30 39 0.00952 + DCW 0x000a ; 31 10 0.00244 + DCW 0x0000 ; 32 0 0.00000 + DCW 0x000a ; 33 10 0.00244 + DCW 0x0027 ; 34 39 0.00952 + DCW 0x0058 ; 35 88 0.02148 + DCW 0x009c ; 36 156 0.03809 + DCW 0x00f2 ; 37 242 0.05908 + DCW 0x0159 ; 38 345 0.08423 + DCW 0x01d1 ; 39 465 0.11353 + DCW 0x0258 ; 40 600 0.14648 + DCW 0x02ed ; 41 749 0.18286 + DCW 0x038e ; 42 910 0.22217 + DCW 0x043b ; 43 1083 0.26440 + DCW 0x04f0 ; 44 1264 0.30859 + DCW 0x05ad ; 45 1453 0.35474 + DCW 0x0670 ; 46 1648 0.40234 + DCW 0x0737 ; 47 1847 0.45093 + DCW 0x0800 ; 48 2048 0.50000 + DCW 0x08c9 ; 49 2249 0.54907 + DCW 0x0990 ; 50 2448 0.59766 + DCW 0x0a53 ; 51 2643 0.64526 + DCW 0x0b10 ; 52 2832 0.69141 + DCW 0x0bc5 ; 53 3013 0.73560 + DCW 0x0c72 ; 54 3186 0.77783 + DCW 0x0d13 ; 55 3347 0.81714 + DCW 0x0da8 ; 56 3496 0.85352 + DCW 0x0e2f ; 57 3631 0.88647 + DCW 0x0ea7 ; 58 3751 0.91577 + DCW 0x0f0e ; 59 3854 0.94092 + DCW 0x0f64 ; 60 3940 0.96191 + DCW 0x0fa8 ; 61 4008 0.97852 + DCW 0x0fd9 ; 62 4057 0.99048 + DCW 0x0ff6 ; 63 4086 0.99756 + END diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/principal.c b/BE-chti C/soft/PjtKEIL_StepDFT/Src/principal.c new file mode 100644 index 0000000..d09be75 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Src/principal.c @@ -0,0 +1,28 @@ + + +#include "DriverJeuLaser.h" + + + +int main(void) +{ + +// =========================================================================== +// ============= INIT PERIPH (faites qu'une seule fois) ===================== +// =========================================================================== + +// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers +CLOCK_Configure(); + + + + + +//============================================================================ + + +while (1) + { + } +} + diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/startup-rvds.s b/BE-chti C/soft/PjtKEIL_StepDFT/Src/startup-rvds.s new file mode 100644 index 0000000..a7b631a --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Src/startup-rvds.s @@ -0,0 +1,335 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.0 +;* Date : 11-March-2011 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + +; +; Enable UsageFault, MemFault and Busfault interrupts +; +_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24 + LDR.W R0, =_SHCSR + LDR R1, [R0] ; Read CPACR + ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts + STR R1, [R0] ; Write back the modified value to the CPACR + DSB ; Wait for store to complete + +; +; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority) +; +_AIRCR EQU 0xE000ED0C +_AIRCR_VAL EQU 0x05FA0300 + LDR.W R0, =_AIRCR + LDR.W R1, =_AIRCR_VAL + STR R1,[R0] + +; +; Finaly, jump to main function (void main (void)) +; + LDR R0, =__main + BX R0 + ENDP + +SystemInit PROC + EXPORT SystemInit [WEAK] + BX LR + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE***** diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/StepDFT.uvprojx b/BE-chti C/soft/PjtKEIL_StepDFT/StepDFT.uvprojx new file mode 100644 index 0000000..9031782 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDFT/StepDFT.uvprojx @@ -0,0 +1,1332 @@ + + + + 2.1 + +

    ### uVision Project, (C) Keil Software
    + + + + Simu + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepDFT + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + CibleSondeKEIL + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepDFT + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + CibleSondeST + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepDFT + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + + + <Project Info> + 0 + 1 + + + + + diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/BacASable.uvprojx b/BE-chti C/soft/PjtKEIL_StepDeb_1/BacASable.uvprojx new file mode 100644 index 0000000..2318c0c --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/BacASable.uvprojx @@ -0,0 +1,1347 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + Simu + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Delay.s + 2 + .\Src\Delay.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + CibleSondeKEIL + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Delay.s + 2 + .\Src\Delay.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + CibleSondeST + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Delay.s + 2 + .\Src\Delay.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + + + <Project Info> + 0 + 1 + + + + +
    diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h b/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h new file mode 100644 index 0000000..bc9b3bd --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h @@ -0,0 +1,345 @@ +/** + * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) + * + * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz + * Modifs : + * enlèvement de tout ce qui est inutile dans le .h + * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C : + * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) + * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + * + * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3) + * PWM_Set_Value_On_TIM3_C3( int Val) + * permet en ASM ou en C de fixer la valeur de PWM + + * Ajout de commentaires + + */ +#ifndef DRIVERJEULASER_H__ +#define DRIVERJEULASER_H__ + +#include "stm32f10x.h" + +//********************************************************************************************************** +//--------------------- CONFIGURATION CLOCK DU STM32 -------------------------------------- +//********************************************************************************************************** + +/** + * @brief Configure l'ensemble des horloges du uC + * @note horloge systeme (config statique a 72 MHz pour le STM32F103) + * @param None + * @retval None + */ +void CLOCK_Configure(void); + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée + * @note L' horloge des 4 timers a une fréquence de 72MHz + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks ); + +/** + * Macros de base pour utiliser les timers + */ + // bloque le timer +#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0) +// Lance timer +#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0) + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) ); + + + + + + + + + + + +//********************************************************************************************************* +//--------------------- PWM TIM1 to TIM 4 ------------------------------ +//********************************************************************************************************* + +/** + * @brief Configure un timer en PWM + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param voie : un des 4 canaux possibles 1 à 4. + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé + */ +unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks ); + + + +/** + * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif + * est donc : rcy = Thaut_ticks / Periode_ticks + * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 + * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks + * @retval None + */ +void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure le timer Systick avec une périodicité donnée + * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption + * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3 + * Ce timer est un 24 bits + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Systick_Period_ff( unsigned int Periode_ticks ); + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick + * @note + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Systick_Prio_IT( char Prio, void (*Systick_function)(void) ); + + +/** + * Macros de base pour utiliser le Systick + */ +#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0) +#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0)) +#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1) +#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1)) + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps + * de fermeture du switch d'acquisition + * @note + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU + * exemple pour 1µs on choisira 72. + * @retval Nombre de Tick réellement pris en compte + */ +unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks ); + + +/** + * @brief Sélectionne la voie à convertir + * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Voie_ADC : 1 à 15 + * @retval None + */ +void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC ); + + + + + +/** + * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également + * la période de débordement du timer + * @note pas besoin de régler le timer avec une autre fonction dédiée timer + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ + +// param pour Source : +#define TIM1_CC1 0 +#define TIM1_CC2 1 +#define TIM1_CC3 2 +#define TIM2_CC2 3 +#define TIM4_CC4 5 +void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks ); + + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- ANALOG INPUT ADC & DMA ------------------------------ +//********************************************************************************************************** + +/** + * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA + * @note + * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé + * si '1' le ptr d'@ se recale à celle du début. + * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire + * @retval None + */ +void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA); + + + + + +/** + * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes + * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1 + * @note + * @param NbEchDMA est le nombre d'échantillons à stocker. + * @retval None + */ +void Start_DMA1( u16 NbEchDMA ); + +// arret DMA +#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1; + + +/** + * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition + * et du nombre d'echantillons + * @note fonction d'attente (bloquante) + * @param None + * @retval None + */ +void Wait_On_End_Of_DMA1(void); + + + + + + + + +//********************************************************************************************************** +//--------------------- GPIO ------------------------------ +//********************************************************************************************************** + +/** + * @brief Initialisation d'un GPIO (A à C), pin x. + * peut être configuré : + * -> Input ou output + * -> architecture technologique (push-pull, open drain...) + + * @note + * @param Port : GPIOA, GPIOB, GPIOC + * @param Broche : 0 à 15 + * @param Sens : INPUT ou OUTPUT + * @param Techno : voir define ci dessous + * @retval 1 erreur, 0 si OK + */ + +// Sens +#define INPUT 'i' +#define OUTPUT 'o' + +// Techno pour pin en entrée (INPUT) +#define ANALOG 0 +#define INPUT_FLOATING 1 +#define INPUT_PULL_DOWN_UP 2 + +// Techno pour pin en sortie (OUTPUT) +#define OUTPUT_PPULL 0 +#define OUTPUT_OPDRAIN 1 +#define ALT_PPULL 2 +#define ALT_OPDRAIN 3 + +// Exemple : +// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL); +// Place le bit 8 du port B en sortie Push-pull +char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno); + + +/** + * @brief Mise à 1 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Set(char Broche); +void GPIOB_Set(char Broche); +void GPIOC_Set(char Broche); + + + +/** + * @brief Mise à 0 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Clear(char Broche); +void GPIOB_Clear(char Broche); +void GPIOC_Clear(char Broche); + + +#endif + + diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc b/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc new file mode 100644 index 0000000..48d5e50 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc @@ -0,0 +1,56 @@ + +; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) +; Accès en aux fonctions suivantes : +; GPIO : +; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) +; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + +; PWM : +;/** +; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif +; * est donc : rcy = Thaut_ticks / Periode_ticks +; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 +; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks +; * @retval None +; */ + +;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + import PWM_Set_Value_TIM3_Ch3 + + + +;/** +; * @brief Mise à 1 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Set(char Broche); + import GPIOA_Set + +;void GPIOB_Set(char Broche); + import GPIOB_Set + +;void GPIOC_Set(char Broche); + import GPIOC_Set + + + +;/** +; * @brief Mise à 0 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Clear(char Broche); + import GPIOA_Clear + +;void GPIOB_Clear(char Broche); + import GPIOB_Clear + +;void GPIOC_Clear(char Broche); + import GPIOC_Clear + + end diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/Delay.s b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/Delay.s new file mode 100644 index 0000000..abec5f2 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/Delay.s @@ -0,0 +1,61 @@ + PRESERVE8 + THUMB + + +; ====================== zone de réservation de données, ====================================== +;Section RAM (read only) : + area mesdata,data,readonly + + +;Section RAM (read write): + area maram,data,readwrite + +VarTime dcd 0 + + EXPORT VarTime + +; =============================================================================================== + +;constantes (équivalent du #define en C) +TimeValue equ 900000 + + + EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules. + + +;Section ROM code (read only) : + area moncode,code,readonly + + + +; REMARQUE IMPORTANTE +; Cette manière de créer une temporisation n'est clairement pas la bonne manière de procéder : +; - elle est peu précise +; - la fonction prend tout le temps CPU pour... ne rien faire... +; +; Pour autant, la fonction montre : +; - les boucles en ASM +; - l'accés écr/lec de variable en RAM +; - le mécanisme d'appel / retour sous programme +; +; et donc possède un intérêt pour débuter en ASM pur + +Delay_100ms proc + + ldr r0,=VarTime ; r0 prend la valeur VarTime = 0 ici la premiere adresse est 0x20000000 en RAM dans simulation + + ldr r1,=TimeValue ; r1 prend la valeur TimeValue = 900000 + str r1,[r0] ; la valeur 32bits contenue dans r1 est copiée en RAM à l'adresse spécifiée dans r0 + +BoucleTempo + ldr r1,[r0] ; la valeur 32bits située à l'adresse spécifiée dans r0 est recopiée dans r1 + + subs r1,#1 ; r1 prend la valeur r1 - 1 = 899999 + str r1,[r0] ; la valeur 32bits contenue dans r1 est copiée en RAM à l'adresse spécifiée dans r0 + bne BoucleTempo ; if z = 0 faire BoucleTempo; Z: Set to 1 when r1 is zero, otherwise cleared to 0 + + bx lr ; indirect jump to [LR] + endp + + + END \ No newline at end of file diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/principal.c b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/principal.c new file mode 100644 index 0000000..a2e1f67 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/principal.c @@ -0,0 +1,32 @@ +#include "DriverJeuLaser.h" + +extern void Delay_100ms(void); + + +int main(void) +{ + +// =========================================================================== +// ============= INIT PERIPH (faites qu'une seule fois) ===================== +// =========================================================================== + +// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers +CLOCK_Configure(); + +// configuration de PortB.1 (PB1) en sortie push-pull +GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL); + + + + +//============================================================================ + + +while (1) + { + Delay_100ms(); + GPIOB_Set(1); + Delay_100ms(); + GPIOB_Clear(1); + } +} diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/startup-rvds.s b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/startup-rvds.s new file mode 100644 index 0000000..a7b631a --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_1/Src/startup-rvds.s @@ -0,0 +1,335 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.0 +;* Date : 11-March-2011 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + +; +; Enable UsageFault, MemFault and Busfault interrupts +; +_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24 + LDR.W R0, =_SHCSR + LDR R1, [R0] ; Read CPACR + ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts + STR R1, [R0] ; Write back the modified value to the CPACR + DSB ; Wait for store to complete + +; +; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority) +; +_AIRCR EQU 0xE000ED0C +_AIRCR_VAL EQU 0x05FA0300 + LDR.W R0, =_AIRCR + LDR.W R1, =_AIRCR_VAL + STR R1,[R0] + +; +; Finaly, jump to main function (void main (void)) +; + LDR R0, =__main + BX R0 + ENDP + +SystemInit PROC + EXPORT SystemInit [WEAK] + BX LR + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE***** diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/BacASable.uvprojx b/BE-chti C/soft/PjtKEIL_StepDeb_2/BacASable.uvprojx new file mode 100644 index 0000000..2c5376a --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/BacASable.uvprojx @@ -0,0 +1,1347 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + Simu + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + .\Driver + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Cligno.s + 2 + .\Src\Cligno.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + CibleSondeKEIL + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Cligno.s + 2 + .\Src\Cligno.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + CibleSondeST + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + BacASable + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + Cligno.s + 2 + .\Src\Cligno.s + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + + + <Project Info> + 0 + 1 + + + + +
    diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h b/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h new file mode 100644 index 0000000..bc9b3bd --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h @@ -0,0 +1,345 @@ +/** + * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) + * + * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz + * Modifs : + * enlèvement de tout ce qui est inutile dans le .h + * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C : + * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) + * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + * + * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3) + * PWM_Set_Value_On_TIM3_C3( int Val) + * permet en ASM ou en C de fixer la valeur de PWM + + * Ajout de commentaires + + */ +#ifndef DRIVERJEULASER_H__ +#define DRIVERJEULASER_H__ + +#include "stm32f10x.h" + +//********************************************************************************************************** +//--------------------- CONFIGURATION CLOCK DU STM32 -------------------------------------- +//********************************************************************************************************** + +/** + * @brief Configure l'ensemble des horloges du uC + * @note horloge systeme (config statique a 72 MHz pour le STM32F103) + * @param None + * @retval None + */ +void CLOCK_Configure(void); + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée + * @note L' horloge des 4 timers a une fréquence de 72MHz + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks ); + +/** + * Macros de base pour utiliser les timers + */ + // bloque le timer +#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0) +// Lance timer +#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0) + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) ); + + + + + + + + + + + +//********************************************************************************************************* +//--------------------- PWM TIM1 to TIM 4 ------------------------------ +//********************************************************************************************************* + +/** + * @brief Configure un timer en PWM + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param voie : un des 4 canaux possibles 1 à 4. + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé + */ +unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks ); + + + +/** + * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif + * est donc : rcy = Thaut_ticks / Periode_ticks + * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 + * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks + * @retval None + */ +void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure le timer Systick avec une périodicité donnée + * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption + * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3 + * Ce timer est un 24 bits + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Systick_Period_ff( unsigned int Periode_ticks ); + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick + * @note + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Systick_Prio_IT( char Prio, void (*Systick_function)(void) ); + + +/** + * Macros de base pour utiliser le Systick + */ +#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0) +#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0)) +#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1) +#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1)) + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps + * de fermeture du switch d'acquisition + * @note + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU + * exemple pour 1µs on choisira 72. + * @retval Nombre de Tick réellement pris en compte + */ +unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks ); + + +/** + * @brief Sélectionne la voie à convertir + * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Voie_ADC : 1 à 15 + * @retval None + */ +void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC ); + + + + + +/** + * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également + * la période de débordement du timer + * @note pas besoin de régler le timer avec une autre fonction dédiée timer + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ + +// param pour Source : +#define TIM1_CC1 0 +#define TIM1_CC2 1 +#define TIM1_CC3 2 +#define TIM2_CC2 3 +#define TIM4_CC4 5 +void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks ); + + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- ANALOG INPUT ADC & DMA ------------------------------ +//********************************************************************************************************** + +/** + * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA + * @note + * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé + * si '1' le ptr d'@ se recale à celle du début. + * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire + * @retval None + */ +void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA); + + + + + +/** + * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes + * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1 + * @note + * @param NbEchDMA est le nombre d'échantillons à stocker. + * @retval None + */ +void Start_DMA1( u16 NbEchDMA ); + +// arret DMA +#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1; + + +/** + * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition + * et du nombre d'echantillons + * @note fonction d'attente (bloquante) + * @param None + * @retval None + */ +void Wait_On_End_Of_DMA1(void); + + + + + + + + +//********************************************************************************************************** +//--------------------- GPIO ------------------------------ +//********************************************************************************************************** + +/** + * @brief Initialisation d'un GPIO (A à C), pin x. + * peut être configuré : + * -> Input ou output + * -> architecture technologique (push-pull, open drain...) + + * @note + * @param Port : GPIOA, GPIOB, GPIOC + * @param Broche : 0 à 15 + * @param Sens : INPUT ou OUTPUT + * @param Techno : voir define ci dessous + * @retval 1 erreur, 0 si OK + */ + +// Sens +#define INPUT 'i' +#define OUTPUT 'o' + +// Techno pour pin en entrée (INPUT) +#define ANALOG 0 +#define INPUT_FLOATING 1 +#define INPUT_PULL_DOWN_UP 2 + +// Techno pour pin en sortie (OUTPUT) +#define OUTPUT_PPULL 0 +#define OUTPUT_OPDRAIN 1 +#define ALT_PPULL 2 +#define ALT_OPDRAIN 3 + +// Exemple : +// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL); +// Place le bit 8 du port B en sortie Push-pull +char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno); + + +/** + * @brief Mise à 1 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Set(char Broche); +void GPIOB_Set(char Broche); +void GPIOC_Set(char Broche); + + + +/** + * @brief Mise à 0 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Clear(char Broche); +void GPIOB_Clear(char Broche); +void GPIOC_Clear(char Broche); + + +#endif + + diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc b/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc new file mode 100644 index 0000000..48d5e50 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc @@ -0,0 +1,56 @@ + +; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) +; Accès en aux fonctions suivantes : +; GPIO : +; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) +; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + +; PWM : +;/** +; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif +; * est donc : rcy = Thaut_ticks / Periode_ticks +; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 +; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks +; * @retval None +; */ + +;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + import PWM_Set_Value_TIM3_Ch3 + + + +;/** +; * @brief Mise à 1 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Set(char Broche); + import GPIOA_Set + +;void GPIOB_Set(char Broche); + import GPIOB_Set + +;void GPIOC_Set(char Broche); + import GPIOC_Set + + + +;/** +; * @brief Mise à 0 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Clear(char Broche); + import GPIOA_Clear + +;void GPIOB_Clear(char Broche); + import GPIOB_Clear + +;void GPIOC_Clear(char Broche); + import GPIOC_Clear + + end diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/Cligno.s b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/Cligno.s new file mode 100644 index 0000000..7ec99b1 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/Cligno.s @@ -0,0 +1,77 @@ + PRESERVE8 + THUMB + + + + + + +; ====================== zone de réservation de données, ====================================== +;Section RAM (read only) : + area mesdata,data,readonly + + +;Section RAM (read write): + area maram,data,readwrite + +FlagCligno dcb 0 + + EXPORT FlagCligno + +; =============================================================================================== + +;constantes (équivalent du #define en C) +;char FlagCligno; + EXPORT timer_callback ; la fonction timer_callback est rendue publique donc utilisable par d'autres modules. + + +;Section ROM code (read only) : + area moncode,code,readonly +; écrire le code ici + +;*void timer_callback(void) +;{ +; if (FlagCligno==1) +; { +; FlagCligno=0; +; GPIOB_Set(1); +; } +; else +; { +; FlagCligno=1; +; GPIOB_Clear(1); +; } +; + + + include DriverJeuLaser.inc + +timer_callback proc + + push {lr} + ldr r1,=FlagCligno ; + + cmp r1,#0 ; si r1(FlagCligno) == 0, on continue. + beq L0 ; + cmp r1,#0 ; si r1(FlagCligno) == 0, on continue. + bne L1 ; sinon break to L1 + +L0 + mov r2, #1 + str r2, [r1] + mov r0, #1 ; GPIOB_Clear("1") + bl GPIOB_Clear + pop {pc} + +L1 + mov r2, #0 ; copie valeur "0" dans r2 + str r2, [r1] ; la valeur 32bits contenue dans r2 est copiée en RAM à l'adresse spécifiée dans r1 + mov r0, #1 ; GPIOB_Set(r0 = "1") + bl GPIOB_Set + pop {pc} + + endp + + + + END \ No newline at end of file diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/principal.c b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/principal.c new file mode 100644 index 0000000..1cb26f6 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/principal.c @@ -0,0 +1,47 @@ + + +#include "DriverJeuLaser.h" + +extern void timer_callback(void); +extern char FlagCligno; + +int main(void) +{ + +// =========================================================================== +// ============= INIT PERIPH (faites qu'une seule fois) ===================== +// =========================================================================== + +// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers +CLOCK_Configure(); + +// configuration du Timer 4 en débordement 100ms + +//** Placez votre code là ** // + +Timer_1234_Init_ff(TIM4, 7200000); + + +// Activation des interruptions issues du Timer 4 +// Association de la fonction à exécuter lors de l'interruption : timer_callback +// cette fonction (si écrite en ASM) doit être conforme à l'AAPCS + +//** Placez votre code là ** // +Active_IT_Debordement_Timer(TIM4, 2, timer_callback); + + +// configuration de PortB.1 (PB1) en sortie push-pull +GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL); + + + + +//============================================================================ + + +while (1) + { + } +} + + diff --git a/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/startup-rvds.s b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/startup-rvds.s new file mode 100644 index 0000000..a7b631a --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepDeb_2/Src/startup-rvds.s @@ -0,0 +1,335 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.0 +;* Date : 11-March-2011 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + +; +; Enable UsageFault, MemFault and Busfault interrupts +; +_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24 + LDR.W R0, =_SHCSR + LDR R1, [R0] ; Read CPACR + ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts + STR R1, [R0] ; Write back the modified value to the CPACR + DSB ; Wait for store to complete + +; +; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority) +; +_AIRCR EQU 0xE000ED0C +_AIRCR_VAL EQU 0x05FA0300 + LDR.W R0, =_AIRCR + LDR.W R1, =_AIRCR_VAL + STR R1,[R0] + +; +; Finaly, jump to main function (void main (void)) +; + LDR R0, =__main + BX R0 + ENDP + +SystemInit PROC + EXPORT SystemInit [WEAK] + BX LR + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE***** diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.h b/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.h new file mode 100644 index 0000000..bc9b3bd --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.h @@ -0,0 +1,345 @@ +/** + * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) + * + * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz + * Modifs : + * enlèvement de tout ce qui est inutile dans le .h + * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C : + * - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) + * - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + * + * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3) + * PWM_Set_Value_On_TIM3_C3( int Val) + * permet en ASM ou en C de fixer la valeur de PWM + + * Ajout de commentaires + + */ +#ifndef DRIVERJEULASER_H__ +#define DRIVERJEULASER_H__ + +#include "stm32f10x.h" + +//********************************************************************************************************** +//--------------------- CONFIGURATION CLOCK DU STM32 -------------------------------------- +//********************************************************************************************************** + +/** + * @brief Configure l'ensemble des horloges du uC + * @note horloge systeme (config statique a 72 MHz pour le STM32F103) + * @param None + * @retval None + */ +void CLOCK_Configure(void); + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée + * @note L' horloge des 4 timers a une fréquence de 72MHz + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks ); + +/** + * Macros de base pour utiliser les timers + */ + // bloque le timer +#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0) +// Lance timer +#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0) + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) ); + + + + + + + + + + + +//********************************************************************************************************* +//--------------------- PWM TIM1 to TIM 4 ------------------------------ +//********************************************************************************************************* + +/** + * @brief Configure un timer en PWM + * @note + * @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4 + * @param voie : un des 4 canaux possibles 1 à 4. + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé + */ +unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks ); + + + +/** + * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif + * est donc : rcy = Thaut_ticks / Periode_ticks + * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 + * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks + * @retval None + */ +void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Configure le timer Systick avec une périodicité donnée + * @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption + * ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3 + * Ce timer est un 24 bits + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ +void Systick_Period_ff( unsigned int Periode_ticks ); + + + +/** + * @brief Associe une fonction d'interruption (callback) lors du débordement du Systick + * @note + * @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min) + * @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption + * @retval None + */ +void Systick_Prio_IT( char Prio, void (*Systick_function)(void) ); + + +/** + * Macros de base pour utiliser le Systick + */ +#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0) +#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0)) +#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1) +#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1)) + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------ +//********************************************************************************************************** + +/** + * @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps + * de fermeture du switch d'acquisition + * @note + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU + * exemple pour 1µs on choisira 72. + * @retval Nombre de Tick réellement pris en compte + */ +unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks ); + + +/** + * @brief Sélectionne la voie à convertir + * @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Voie_ADC : 1 à 15 + * @retval None + */ +void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC ); + + + + + +/** + * @brief Permet lier le déclenchement au débordement d'un timer, spécifie également + * la période de débordement du timer + * @note pas besoin de régler le timer avec une autre fonction dédiée timer + * @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2 + * @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous + * @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer + * La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000 + * @retval None + */ + +// param pour Source : +#define TIM1_CC1 0 +#define TIM1_CC2 1 +#define TIM1_CC3 2 +#define TIM2_CC2 3 +#define TIM4_CC4 5 +void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks ); + + + + + + + + + + + + + + + +//********************************************************************************************************** +//--------------------- ANALOG INPUT ADC & DMA ------------------------------ +//********************************************************************************************************** + +/** + * @brief Permer de lier l'ADC à un tableau en RAM pour une DMA + * @note + * @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé + * si '1' le ptr d'@ se recale à celle du début. + * @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire + * @retval None + */ +void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA); + + + + + +/** + * @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes + * dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1 + * @note + * @param NbEchDMA est le nombre d'échantillons à stocker. + * @retval None + */ +void Start_DMA1( u16 NbEchDMA ); + +// arret DMA +#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1; + + +/** + * @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition + * et du nombre d'echantillons + * @note fonction d'attente (bloquante) + * @param None + * @retval None + */ +void Wait_On_End_Of_DMA1(void); + + + + + + + + +//********************************************************************************************************** +//--------------------- GPIO ------------------------------ +//********************************************************************************************************** + +/** + * @brief Initialisation d'un GPIO (A à C), pin x. + * peut être configuré : + * -> Input ou output + * -> architecture technologique (push-pull, open drain...) + + * @note + * @param Port : GPIOA, GPIOB, GPIOC + * @param Broche : 0 à 15 + * @param Sens : INPUT ou OUTPUT + * @param Techno : voir define ci dessous + * @retval 1 erreur, 0 si OK + */ + +// Sens +#define INPUT 'i' +#define OUTPUT 'o' + +// Techno pour pin en entrée (INPUT) +#define ANALOG 0 +#define INPUT_FLOATING 1 +#define INPUT_PULL_DOWN_UP 2 + +// Techno pour pin en sortie (OUTPUT) +#define OUTPUT_PPULL 0 +#define OUTPUT_OPDRAIN 1 +#define ALT_PPULL 2 +#define ALT_OPDRAIN 3 + +// Exemple : +// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL); +// Place le bit 8 du port B en sortie Push-pull +char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno); + + +/** + * @brief Mise à 1 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Set(char Broche); +void GPIOB_Set(char Broche); +void GPIOC_Set(char Broche); + + + +/** + * @brief Mise à 0 d'une broche GPIO + * @note Une fonction par GPIO + * @param Broche : 0 à 15 + * @retval None + */ + +void GPIOA_Clear(char Broche); +void GPIOB_Clear(char Broche); +void GPIOC_Clear(char Broche); + + +#endif + + diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.inc b/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.inc new file mode 100644 index 0000000..48d5e50 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Driver/DriverJeuLaser.inc @@ -0,0 +1,56 @@ + +; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR) +; Accès en aux fonctions suivantes : +; GPIO : +; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche) +; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche) + +; PWM : +;/** +; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif +; * est donc : rcy = Thaut_ticks / Periode_ticks +; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3 +; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks +; * @retval None +; */ + +;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); + import PWM_Set_Value_TIM3_Ch3 + + + +;/** +; * @brief Mise à 1 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Set(char Broche); + import GPIOA_Set + +;void GPIOB_Set(char Broche); + import GPIOB_Set + +;void GPIOC_Set(char Broche); + import GPIOC_Set + + + +;/** +; * @brief Mise à 0 d'une broche GPIO +; * @note Une fonction par GPIO +; * @param Broche : 0 à 15 +; * @retval None +; */ + +;void GPIOA_Clear(char Broche); + import GPIOA_Clear + +;void GPIOB_Clear(char Broche); + import GPIOB_Clear + +;void GPIOC_Clear(char Broche); + import GPIOC_Clear + + end diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Src/GestionSon.s b/BE-chti C/soft/PjtKEIL_StepSon/Src/GestionSon.s new file mode 100644 index 0000000..ba97e0f --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Src/GestionSon.s @@ -0,0 +1,67 @@ + PRESERVE8 + THUMB + + +; ====================== zone de réservation de données, ====================================== +;Section RAM (read only) : + area mesdata,data,readonly + + +;Section RAM (read write): + area maram,data,readwrite + + +SortieSon dcw 0 + EXPORT SortieSon + +Offset equ 32768 +Intervalle equ 360 +Index equ 0 + + EXPORT CallbackSon + +; =============================================================================================== + + + +;Section ROM code (read only) : + area moncode,code,readonly +; écrire le code ici + +;short int SortieSon; +;int LongueurSon 5512 +;int i; +;if not i == LongueurSon +;lire[i] str +;i++ +; +;360*(SortieSon+32768)/32768 + + import son + import LongueurSon + +CallbackSon proc + push {lr} + + ldr r0,=son ; tableau de données + ldr r1,=SortieSon ; resultat + + ldr r2,[r1,#LongueurSon] ; point fini + ldr r3,[r1,#Index] ; position actuelle + + add r3,#1 + cmp r2,r3 ;if on n'arrive pas la fin de tableau, on continue + beq FIN ; if oui on quitte le prog + +; ldr r4, +; ldrsh [] + + + + +FIN + mov r3,#0 + + ENDP + + END \ No newline at end of file diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Src/bruitverre.asm b/BE-chti C/soft/PjtKEIL_StepSon/Src/bruitverre.asm new file mode 100644 index 0000000..bf5ba29 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Src/bruitverre.asm @@ -0,0 +1,5527 @@ +;********************************************* + + AREA SecSon, DATA, READONLY + ;********************************************* + + + export LongueurSon + export PeriodeSonMicroSec + export Son + +LongueurSon DCD 5512 +PeriodeSonMicroSec DCD 91 +Son + DCW -6911 + DCW 20666 + DCW -1338 + DCW 10995 + DCW -23488 + DCW -18984 + DCW 29795 + DCW -21890 + DCW 12388 + DCW 16304 + DCW -32768 + DCW 13298 + DCW 22737 + DCW -20334 + DCW 4588 + DCW 5271 + DCW -27547 + DCW 19370 + DCW -4248 + DCW -7368 + DCW 24620 + DCW -21404 + DCW 14442 + DCW 4961 + DCW -7125 + DCW 21290 + DCW -22096 + DCW -6605 + DCW 6777 + DCW -14300 + DCW 8261 + DCW -2223 + DCW -6714 + DCW 15935 + DCW -13063 + DCW -3648 + DCW 19575 + DCW -15365 + DCW 7934 + DCW 23001 + DCW -10157 + DCW -5535 + DCW -7091 + DCW 3950 + DCW 7741 + DCW -8492 + DCW 1686 + DCW -6785 + DCW -6663 + DCW 5548 + DCW -15768 + DCW -2114 + DCW 18837 + DCW -13201 + DCW 3493 + DCW 21693 + DCW -2961 + DCW 8207 + DCW -12924 + DCW -10400 + DCW 16283 + DCW -22049 + DCW 2080 + DCW 21521 + DCW -12295 + DCW -3355 + DCW 3766 + DCW -1736 + DCW 243 + DCW -3078 + DCW 5452 + DCW 14019 + DCW -8475 + DCW 386 + DCW -12182 + DCW -13620 + DCW 20749 + DCW -1921 + DCW 4332 + DCW 11159 + DCW -17239 + DCW -9343 + DCW 9758 + DCW -11566 + DCW -294 + DCW 8244 + DCW -13503 + DCW 18862 + DCW 4927 + DCW -22662 + DCW -1355 + DCW -6030 + DCW -1854 + DCW 14325 + DCW -2709 + DCW -1665 + DCW 7607 + DCW -5997 + DCW 14191 + DCW -369 + DCW -14400 + DCW 19106 + DCW -8857 + DCW -2881 + DCW 5414 + DCW -12354 + DCW 16309 + DCW -1308 + DCW -9557 + DCW 9532 + DCW 3107 + DCW -1447 + DCW -7263 + DCW -15617 + DCW 8681 + DCW -4843 + DCW -13457 + DCW 31439 + DCW -13612 + DCW -4588 + DCW 3405 + DCW -23987 + DCW 32767 + DCW -289 + DCW -10215 + DCW 30843 + DCW -16631 + DCW -8412 + DCW -3242 + DCW -3221 + DCW 13516 + DCW -16531 + DCW -10689 + DCW 13306 + DCW -15306 + DCW -10861 + DCW 11322 + DCW -12702 + DCW 16518 + DCW 7024 + DCW -12572 + DCW 26193 + DCW -25496 + DCW 101 + DCW 18116 + DCW -20557 + DCW 20468 + DCW -14099 + DCW -12211 + DCW 18611 + DCW 1619 + DCW 8068 + DCW -10891 + DCW -7313 + DCW 10123 + DCW -570 + DCW 4290 + DCW 7582 + DCW -12287 + DCW -923 + DCW 5078 + DCW -6840 + DCW 17533 + DCW -7871 + DCW -13977 + DCW 2084 + DCW -9092 + DCW 11742 + DCW -4667 + DCW -365 + DCW 5552 + DCW -8580 + DCW 1166 + DCW 6215 + DCW 4592 + DCW -5636 + DCW -3627 + DCW -17856 + DCW 8047 + DCW 12723 + DCW -24196 + DCW 6399 + DCW 16589 + DCW -11700 + DCW -6102 + DCW 23366 + DCW -11679 + DCW -12132 + DCW 22477 + DCW -18841 + DCW 2550 + DCW 10048 + DCW -6823 + DCW 7502 + DCW -1166 + DCW 9234 + DCW -13864 + DCW -9263 + DCW 8848 + DCW -5632 + DCW 956 + DCW 2835 + DCW 3535 + DCW -1241 + DCW 4932 + DCW -3715 + DCW -2235 + DCW 6211 + DCW -9477 + DCW -4445 + DCW -12195 + DCW 9863 + DCW 15617 + DCW -14069 + DCW 5405 + DCW 9632 + DCW 323 + DCW -13247 + DCW -654 + DCW 14946 + DCW -12803 + DCW 1497 + DCW 2566 + DCW 1598 + DCW 9611 + DCW -14388 + DCW -1367 + DCW 14761 + DCW -1287 + DCW -26503 + DCW 18472 + DCW 18917 + DCW -25589 + DCW 16162 + DCW -19114 + DCW -4919 + DCW 20200 + DCW -18250 + DCW 11327 + DCW -1912 + DCW 3439 + DCW -21051 + DCW 6680 + DCW 32767 + DCW -20917 + DCW 13998 + DCW -12555 + DCW 566 + DCW 1241 + DCW -9293 + DCW 21731 + DCW -17290 + DCW 9033 + DCW -8106 + DCW -1065 + DCW 8458 + DCW -20229 + DCW 13398 + DCW -3208 + DCW -3518 + DCW 5456 + DCW -1208 + DCW -11159 + DCW 11289 + DCW 6303 + DCW -20586 + DCW 31736 + DCW -17302 + DCW -9909 + DCW 27702 + DCW -15419 + DCW 2311 + DCW -4344 + DCW -1103 + DCW -12170 + DCW 11348 + DCW 3317 + DCW -17634 + DCW 19781 + DCW -3745 + DCW -4064 + DCW -1774 + DCW 130 + DCW -6504 + DCW 3313 + DCW 2717 + DCW -7599 + DCW 14459 + DCW -3984 + DCW -1807 + DCW 1635 + DCW -2533 + DCW 2495 + DCW -6928 + DCW 2093 + DCW 1887 + DCW -2873 + DCW 12186 + DCW -13369 + DCW 2944 + DCW 13570 + DCW -16267 + DCW -872 + DCW -1522 + DCW -3451 + DCW -4495 + DCW 16216 + DCW 2449 + DCW 994 + DCW 10337 + DCW -17017 + DCW 356 + DCW -315 + DCW -2185 + DCW -4927 + DCW 2776 + DCW -1577 + DCW -4990 + DCW 12102 + DCW -9045 + DCW 4047 + DCW 4152 + DCW -23710 + DCW 4516 + DCW 9410 + DCW -12329 + DCW 3502 + DCW 11037 + DCW -8840 + DCW -2252 + DCW 15260 + DCW -19709 + DCW 3321 + DCW 16199 + DCW -20921 + DCW 3741 + DCW 9159 + DCW -2504 + DCW -3753 + DCW 10626 + DCW -2969 + DCW -5661 + DCW 4890 + DCW -11423 + DCW 11180 + DCW 4487 + DCW -11947 + DCW 4894 + DCW 3476 + DCW -6517 + DCW 10257 + DCW 5724 + DCW -14216 + DCW 10270 + DCW -2264 + DCW -14933 + DCW 18489 + DCW 990 + DCW -13281 + DCW 4906 + DCW 5200 + DCW -2814 + DCW -1669 + DCW 5632 + DCW -2306 + DCW -3753 + DCW -8655 + DCW 2088 + DCW 2659 + DCW -2537 + DCW 12392 + DCW -5414 + DCW 981 + DCW -2462 + DCW -3539 + DCW 2114 + DCW -2315 + DCW 8618 + DCW -17256 + DCW -1598 + DCW 7381 + DCW 92 + DCW 1631 + DCW -6722 + DCW 11696 + DCW -12874 + DCW -5758 + DCW 12132 + DCW -3892 + DCW 2273 + DCW 6596 + DCW -705 + DCW -8052 + DCW 15294 + DCW -11197 + DCW -8031 + DCW 18594 + DCW -14581 + DCW 2487 + DCW -1254 + DCW 4948 + DCW 11306 + DCW -7297 + DCW 1661 + DCW -1912 + DCW 5267 + DCW -9251 + DCW 3640 + DCW 7909 + DCW -14832 + DCW 4613 + DCW 2374 + DCW -8286 + DCW 4508 + DCW 7796 + DCW -14887 + DCW 4726 + DCW 5619 + DCW -16283 + DCW 14912 + DCW -2881 + DCW -117 + DCW 4579 + DCW -14514 + DCW 15029 + DCW -6127 + DCW 3774 + DCW 12446 + DCW -12933 + DCW 4051 + DCW -7079 + DCW 1254 + DCW 3980 + DCW -3233 + DCW 11561 + DCW 948 + DCW -13914 + DCW 5590 + DCW 7511 + DCW -13797 + DCW 15415 + DCW -5401 + DCW -14736 + DCW 12346 + DCW -5301 + DCW 7854 + DCW -2751 + DCW -1971 + DCW -440 + DCW -7838 + DCW 8240 + DCW -6026 + DCW 5548 + DCW 2554 + DCW 2738 + DCW 4110 + DCW -15986 + DCW 5246 + DCW 7330 + DCW -14941 + DCW 210 + DCW 10215 + DCW -15663 + DCW 12220 + DCW 8110 + DCW -10714 + DCW 13734 + DCW -14954 + DCW 3183 + DCW 4240 + DCW -8144 + DCW 16866 + DCW -9809 + DCW -4323 + DCW 13302 + DCW -4793 + DCW -4982 + DCW 9876 + DCW -4399 + DCW -4911 + DCW 3338 + DCW -403 + DCW 5162 + DCW -9532 + DCW 2613 + DCW 3749 + DCW -6458 + DCW 2684 + DCW -1916 + DCW 1736 + DCW 256 + DCW 7569 + DCW -1103 + DCW -17982 + DCW 9272 + DCW 6164 + DCW -15084 + DCW 14929 + DCW 3233 + DCW -19080 + DCW 10501 + DCW -3451 + DCW -2663 + DCW 8026 + DCW -11431 + DCW 7364 + DCW -4034 + DCW -5347 + DCW 16317 + DCW -7984 + DCW -243 + DCW 2914 + DCW -11406 + DCW -1124 + DCW 2344 + DCW 8215 + DCW 2449 + DCW -3611 + DCW 11650 + DCW -6504 + DCW -11532 + DCW 20330 + DCW -5766 + DCW -8307 + DCW 8211 + DCW -8198 + DCW 6458 + DCW 2361 + DCW 6185 + DCW 3640 + DCW -15990 + DCW 3577 + DCW -2495 + DCW -5443 + DCW 10647 + DCW -3434 + DCW -4189 + DCW 4118 + DCW -3237 + DCW 3535 + DCW -5087 + DCW -193 + DCW 11004 + DCW -21886 + DCW 449 + DCW 3791 + DCW -16258 + DCW 18149 + DCW 2021 + DCW -8291 + DCW -231 + DCW -8244 + DCW 7225 + DCW 4382 + DCW -809 + DCW 6546 + DCW -7376 + DCW -4512 + DCW 5766 + DCW -4122 + DCW -281 + DCW 1547 + DCW 910 + DCW -2680 + DCW -7108 + DCW 10131 + DCW 3174 + DCW -10408 + DCW 10823 + DCW -5611 + DCW -10467 + DCW 16074 + DCW -956 + DCW 1866 + DCW 1589 + DCW -4789 + DCW -348 + DCW -2743 + DCW 15575 + DCW 2847 + DCW -7116 + DCW 9553 + DCW -5015 + DCW -4223 + DCW 10706 + DCW -6752 + DCW 1459 + DCW -377 + DCW -15130 + DCW 12920 + DCW 2483 + DCW 46 + DCW 15126 + DCW -12639 + DCW -10446 + DCW 3233 + DCW -2386 + DCW 1942 + DCW 9687 + DCW 4235 + DCW -12564 + DCW -2185 + DCW 12442 + DCW -4592 + DCW -730 + DCW 4051 + DCW -14120 + DCW 2382 + DCW 6424 + DCW -3946 + DCW 7460 + DCW -2814 + DCW -2768 + DCW -1757 + DCW -4726 + DCW 5343 + DCW -5137 + DCW -1837 + DCW -407 + DCW -3606 + DCW 8303 + DCW -5217 + DCW 3548 + DCW 9880 + DCW -20695 + DCW 1925 + DCW 9632 + DCW -12597 + DCW 12677 + DCW 4848 + DCW -13797 + DCW 6588 + DCW 2059 + DCW -6869 + DCW 6324 + DCW 2088 + DCW -1614 + DCW 742 + DCW -2382 + DCW 4210 + DCW 71 + DCW -210 + DCW 3443 + DCW -1078 + DCW -3934 + DCW -3594 + DCW 8005 + DCW -319 + DCW -5493 + DCW 7682 + DCW -9066 + DCW -6169 + DCW 10241 + DCW -3921 + DCW -164 + DCW 5171 + DCW 897 + DCW -373 + DCW -4659 + DCW 151 + DCW 650 + DCW -3757 + DCW 9863 + DCW 7678 + DCW -5879 + DCW 5158 + DCW -4433 + DCW -5275 + DCW -264 + DCW -4680 + DCW 2696 + DCW -1724 + DCW 7309 + DCW 5946 + DCW -5821 + DCW -1975 + DCW 910 + DCW -482 + DCW -1677 + DCW 3070 + DCW 717 + DCW -4793 + DCW 1744 + DCW 3791 + DCW -1866 + DCW 2826 + DCW 1220 + DCW -3783 + DCW -776 + DCW -4495 + DCW -751 + DCW 2873 + DCW -2734 + DCW 8936 + DCW -2160 + DCW -9507 + DCW 9297 + DCW -4843 + DCW -4537 + DCW 6248 + DCW -176 + DCW -3757 + DCW 2864 + DCW 5175 + DCW -4017 + DCW 1044 + DCW -1090 + DCW -3166 + DCW -143 + DCW 1568 + DCW 1170 + DCW 8 + DCW 4177 + DCW -2944 + DCW -3133 + DCW -3028 + DCW 5187 + DCW 5200 + DCW -8697 + DCW 5883 + DCW -1166 + DCW -7053 + DCW 692 + DCW 2709 + DCW 7351 + DCW -7984 + DCW 88 + DCW 3636 + DCW -923 + DCW 5393 + DCW 2365 + DCW -7733 + DCW -4244 + DCW 6043 + DCW -8827 + DCW 3699 + DCW 5552 + DCW -1598 + DCW -5045 + DCW -3183 + DCW 8253 + DCW -5833 + DCW 470 + DCW 6328 + DCW 3434 + DCW -9142 + DCW 730 + DCW 583 + DCW -1447 + DCW 12027 + DCW -5833 + DCW 1786 + DCW -11029 + DCW -2147 + DCW 7909 + DCW -8253 + DCW 8995 + DCW -805 + DCW -3174 + DCW 3074 + DCW -55 + DCW -1355 + DCW -1967 + DCW 3636 + DCW -2491 + DCW 5401 + DCW -1556 + DCW -3904 + DCW 6542 + DCW -3279 + DCW 3229 + DCW -6047 + DCW -2420 + DCW 4114 + DCW 927 + DCW 1468 + DCW -2181 + DCW 3573 + DCW -9649 + DCW 2134 + DCW 4621 + DCW -956 + DCW 1623 + DCW -7351 + DCW 3900 + DCW 310 + DCW 1979 + DCW 2776 + DCW -3707 + DCW 1136 + DCW -566 + DCW 2080 + DCW -2558 + DCW 4563 + DCW 814 + DCW -7506 + DCW 4286 + DCW -2688 + DCW 1401 + DCW 1082 + DCW 3212 + DCW 2244 + DCW -1925 + DCW -814 + DCW -2340 + DCW 4986 + DCW -7825 + DCW 7183 + DCW 1996 + DCW -6055 + DCW 7938 + DCW -6798 + DCW 709 + DCW 1451 + DCW -1879 + DCW -1308 + DCW -159 + DCW 1002 + DCW -2550 + DCW 4843 + DCW 2294 + DCW 2231 + DCW -7997 + DCW -5066 + DCW 4827 + DCW -2466 + DCW 6462 + DCW -4315 + DCW -671 + DCW -277 + DCW 1162 + DCW 10194 + DCW -9226 + DCW 3154 + DCW -7414 + DCW -4043 + DCW 8223 + DCW 2575 + DCW 6349 + DCW -7636 + DCW 268 + DCW -113 + DCW -2671 + DCW -2239 + DCW 6362 + DCW 117 + DCW -5137 + DCW 8270 + DCW -8718 + DCW 4894 + DCW 1162 + DCW -4835 + DCW 7158 + DCW -9477 + DCW 558 + DCW -134 + DCW 1581 + DCW 7611 + DCW -876 + DCW -5053 + DCW -5254 + DCW 6127 + DCW -2562 + DCW 4286 + DCW 1342 + DCW -1036 + DCW 646 + DCW -6055 + DCW 6013 + DCW -3992 + DCW 6718 + DCW -2608 + DCW -4697 + DCW 5078 + DCW -5808 + DCW 9834 + DCW -2290 + DCW -260 + DCW 210 + DCW -13713 + DCW 4483 + DCW 8337 + DCW 2151 + DCW -457 + DCW -268 + DCW -4621 + DCW 1212 + DCW 839 + DCW -3099 + DCW 6533 + DCW -10823 + DCW 5691 + DCW 2621 + DCW -2889 + DCW 11616 + DCW -12325 + DCW 956 + DCW -1493 + DCW -138 + DCW 667 + DCW -348 + DCW 8228 + DCW -164 + DCW 369 + DCW -5473 + DCW 2126 + DCW -4667 + DCW 1942 + DCW 2432 + DCW -2634 + DCW 3263 + DCW -7322 + DCW 8924 + DCW 2285 + DCW -2206 + DCW 3149 + DCW -15306 + DCW 7829 + DCW -1640 + DCW -8 + DCW 8836 + DCW -7896 + DCW 9574 + DCW -13818 + DCW 5603 + DCW -331 + DCW 6315 + DCW 3409 + DCW -18900 + DCW 16606 + DCW -12648 + DCW 16820 + DCW -2038 + DCW -3154 + DCW 11826 + DCW -24704 + DCW 5749 + DCW -445 + DCW 8400 + DCW 4500 + DCW -461 + DCW -5883 + DCW -8207 + DCW 4990 + DCW 176 + DCW 15151 + DCW -1543 + DCW -7926 + DCW -5045 + DCW -4084 + DCW 3518 + DCW 6747 + DCW 8718 + DCW -4064 + DCW -344 + DCW -14421 + DCW -1476 + DCW 7540 + DCW 2592 + DCW 15700 + DCW -10761 + DCW -5561 + DCW -2923 + DCW 2478 + DCW 9721 + DCW 5242 + DCW -277 + DCW -11209 + DCW -1120 + DCW -9469 + DCW 6030 + DCW 5821 + DCW 2969 + DCW 3497 + DCW -10140 + DCW -159 + DCW -5615 + DCW 4701 + DCW 8060 + DCW 2139 + DCW 289 + DCW -12010 + DCW -2856 + DCW -1631 + DCW 7192 + DCW 7796 + DCW -2885 + DCW 3275 + DCW -12434 + DCW 575 + DCW 4374 + DCW 1652 + DCW 7615 + DCW -1526 + DCW -1833 + DCW -9733 + DCW 4357 + DCW -6471 + DCW 6500 + DCW 14300 + DCW -10987 + DCW 1535 + DCW -7863 + DCW -2696 + DCW 5556 + DCW 6840 + DCW 5359 + DCW -6034 + DCW -667 + DCW -8156 + DCW 3028 + DCW 4957 + DCW 2634 + DCW 5984 + DCW -7217 + DCW 1053 + DCW -7972 + DCW 1526 + DCW 7435 + DCW 2826 + DCW 5883 + DCW -9289 + DCW -3619 + DCW -5305 + DCW 5057 + DCW 6907 + DCW 4588 + DCW -327 + DCW -11725 + DCW 319 + DCW -4252 + DCW 5514 + DCW 9997 + DCW -465 + DCW -1778 + DCW -6957 + DCW -5053 + DCW -1015 + DCW 7670 + DCW 5347 + DCW 1111 + DCW -2940 + DCW -12430 + DCW 579 + DCW 4227 + DCW 8110 + DCW 5460 + DCW -5808 + DCW -7938 + DCW -7511 + DCW 5133 + DCW 3980 + DCW 10853 + DCW 612 + DCW -7846 + DCW -4885 + DCW -7242 + DCW 7167 + DCW 3338 + DCW 7804 + DCW -1283 + DCW -8584 + DCW -3795 + DCW -2944 + DCW 9146 + DCW 3380 + DCW 5946 + DCW -7662 + DCW -10773 + DCW 1422 + DCW 38 + DCW 12996 + DCW 3481 + DCW -721 + DCW -8249 + DCW -6907 + DCW 4806 + DCW 1132 + DCW 10165 + DCW -549 + DCW -2210 + DCW -5850 + DCW -4755 + DCW 5548 + DCW 1153 + DCW 9410 + DCW -1988 + DCW -5615 + DCW -4839 + DCW -3887 + DCW 6978 + DCW 3577 + DCW 6907 + DCW -4118 + DCW -4827 + DCW -4412 + DCW -1824 + DCW 10773 + DCW -428 + DCW 3292 + DCW -3091 + DCW -5124 + DCW -1883 + DCW 1174 + DCW 4751 + DCW 168 + DCW 7343 + DCW -7817 + DCW -3057 + DCW 1258 + DCW -3422 + DCW 7049 + DCW 3808 + DCW -549 + DCW -5363 + DCW -2814 + DCW -1069 + DCW 4269 + DCW 5351 + DCW -1833 + DCW 772 + DCW -5452 + DCW -1535 + DCW 1984 + DCW 96 + DCW 6546 + DCW -3187 + DCW -143 + DCW -3275 + DCW -2772 + DCW 2659 + DCW 604 + DCW 5309 + DCW -3443 + DCW -2629 + DCW -2625 + DCW 3485 + DCW -935 + DCW 369 + DCW 4403 + DCW -1040 + DCW 1816 + DCW -5359 + DCW 1069 + DCW -1245 + DCW 3552 + DCW 2227 + DCW -7037 + DCW 3770 + DCW -2420 + DCW -3112 + DCW 7162 + DCW 663 + DCW -3451 + DCW -159 + DCW -1338 + DCW -1258 + DCW 4277 + DCW 377 + DCW -549 + DCW 2394 + DCW -4751 + DCW 1266 + DCW -88 + DCW 3795 + DCW 2541 + DCW -34 + DCW -264 + DCW -5389 + DCW 2432 + DCW -407 + DCW 5934 + DCW 117 + DCW -2004 + DCW -2348 + DCW -4877 + DCW 3573 + DCW 1128 + DCW 4227 + DCW 1099 + DCW -5481 + DCW -5162 + DCW 507 + DCW 3200 + DCW 4575 + DCW 3711 + DCW -5556 + DCW -4424 + DCW 1178 + DCW -1501 + DCW 6131 + DCW 1401 + DCW -2768 + DCW -600 + DCW -3388 + DCW 226 + DCW 923 + DCW 5959 + DCW -2004 + DCW 1673 + DCW -3024 + DCW -5800 + DCW 4298 + DCW -348 + DCW 4483 + DCW 1107 + DCW -3053 + DCW -3141 + DCW -1476 + DCW 2516 + DCW 3711 + DCW 335 + DCW -2634 + DCW -3179 + DCW -1820 + DCW 2009 + DCW 5103 + DCW 214 + DCW -642 + DCW 17 + DCW -2994 + DCW 939 + DCW -960 + DCW 3351 + DCW 1950 + DCW 1208 + DCW -2818 + DCW -3011 + DCW 2151 + DCW -470 + DCW 2592 + DCW 382 + DCW -1392 + DCW -2608 + DCW -541 + DCW -763 + DCW 3439 + DCW 2151 + DCW -843 + DCW -952 + DCW -1975 + DCW 432 + DCW -252 + DCW 1329 + DCW 1132 + DCW 830 + DCW -1786 + DCW -784 + DCW -1757 + DCW 1652 + DCW 2973 + DCW 533 + DCW -486 + DCW -1115 + DCW -2717 + DCW -4 + DCW 3124 + DCW -1069 + DCW 2239 + DCW -1396 + DCW -927 + DCW -985 + DCW 1162 + DCW 159 + DCW 562 + DCW 2613 + DCW -3401 + DCW 8 + DCW -2080 + DCW 218 + DCW 3552 + DCW 1329 + DCW 252 + DCW -923 + DCW -3770 + DCW -386 + DCW 2420 + DCW 2013 + DCW 1879 + DCW -839 + DCW -1963 + DCW -579 + DCW -1254 + DCW 147 + DCW 4152 + DCW -700 + DCW 445 + DCW -1573 + DCW -2046 + DCW 1346 + DCW 3128 + DCW 1799 + DCW -197 + DCW -2956 + DCW -4781 + DCW 1837 + DCW 1996 + DCW 3938 + DCW 1153 + DCW -3489 + DCW -2692 + DCW 1371 + DCW -495 + DCW 2227 + DCW 3611 + DCW -3170 + DCW 151 + DCW -1401 + DCW -2139 + DCW 2424 + DCW 3133 + DCW 122 + DCW 201 + DCW -3191 + DCW -3682 + DCW 1195 + DCW 3346 + DCW 2675 + DCW 734 + DCW -2990 + DCW -1535 + DCW 960 + DCW -298 + DCW 2856 + DCW -1015 + DCW -411 + DCW -1115 + DCW -151 + DCW 1346 + DCW 361 + DCW 1166 + DCW 369 + DCW 721 + DCW -3812 + DCW -1732 + DCW 688 + DCW 2634 + DCW 4126 + DCW -348 + DCW -3325 + DCW -1120 + DCW -1434 + DCW 1225 + DCW 3325 + DCW -746 + DCW -1786 + DCW -1053 + DCW -633 + DCW 797 + DCW 2109 + DCW 189 + DCW 1610 + DCW -478 + DCW -1304 + DCW -1241 + DCW -315 + DCW 654 + DCW 2558 + DCW 1367 + DCW -2378 + DCW -1589 + DCW -2441 + DCW 3590 + DCW 2856 + DCW -92 + DCW -2084 + DCW -1061 + DCW 415 + DCW 1011 + DCW 432 + DCW -2290 + DCW -143 + DCW -4592 + DCW -4789 + DCW -130 + DCW 1552 + DCW 4164 + DCW 14208 + DCW 12434 + DCW 7733 + DCW 1728 + DCW -10396 + DCW -6307 + DCW -7259 + DCW -8437 + DCW -4420 + DCW -2680 + DCW 1854 + DCW 2688 + DCW 6911 + DCW 7611 + DCW -3304 + DCW -3128 + DCW 0 + DCW -2474 + DCW -25 + DCW 5204 + DCW -3837 + DCW -6596 + DCW 4495 + DCW -1703 + DCW 2000 + DCW 3384 + DCW -1774 + DCW 2269 + DCW 4131 + DCW -2625 + DCW -6022 + DCW 1178 + DCW -3309 + DCW 2281 + DCW 4013 + DCW -2789 + DCW 1006 + DCW 298 + DCW 1954 + DCW 881 + DCW -839 + DCW -2114 + DCW -4852 + DCW -2709 + DCW 1061 + DCW 2034 + DCW 3585 + DCW 5774 + DCW -1971 + DCW 4 + DCW -1078 + DCW -512 + DCW -2600 + DCW -1006 + DCW -2613 + DCW -4252 + DCW 8458 + DCW -7074 + DCW 15009 + DCW -327 + DCW -11809 + DCW 7846 + DCW -9213 + DCW 134 + DCW -1325 + DCW 1770 + DCW -839 + DCW 7498 + DCW 6466 + DCW -2231 + DCW -646 + DCW -8291 + DCW 1874 + DCW 9666 + DCW -11956 + DCW -5049 + DCW 3103 + DCW -6253 + DCW 18829 + DCW -415 + DCW -1623 + DCW 1803 + DCW -4315 + DCW -6974 + DCW -3590 + DCW -587 + DCW -1900 + DCW 12396 + DCW -4365 + DCW 8312 + DCW 2332 + DCW -3929 + DCW -2206 + DCW -3724 + DCW -2168 + DCW -1455 + DCW -717 + DCW -4470 + DCW 13654 + DCW 4072 + DCW -80 + DCW 587 + DCW -7733 + DCW -3158 + DCW 4651 + DCW -3346 + DCW 696 + DCW 2332 + DCW -2197 + DCW 4164 + DCW 570 + DCW -2042 + DCW 1619 + DCW 0 + DCW -3975 + DCW 2554 + DCW -6068 + DCW 2864 + DCW 5347 + DCW 2239 + DCW 3137 + DCW -2348 + DCW -6819 + DCW -2445 + DCW 5967 + DCW -2545 + DCW 5816 + DCW -474 + DCW -1812 + DCW 3917 + DCW 528 + DCW -2868 + DCW 1082 + DCW -918 + DCW -1501 + DCW 1719 + DCW -4458 + DCW 1413 + DCW 1338 + DCW 1954 + DCW -1040 + DCW 2499 + DCW -3581 + DCW 226 + DCW 1895 + DCW -969 + DCW 2420 + DCW -2202 + DCW 231 + DCW -1057 + DCW 1128 + DCW -2344 + DCW 1006 + DCW -1698 + DCW 4583 + DCW 147 + DCW -1979 + DCW 1916 + DCW -4365 + DCW 3166 + DCW 1027 + DCW -2315 + DCW -3460 + DCW 2592 + DCW 4097 + DCW 3325 + DCW -2365 + DCW -3007 + DCW -3154 + DCW -394 + DCW 315 + DCW -2428 + DCW 4122 + DCW 2617 + DCW 2483 + DCW 2147 + DCW -4793 + DCW -4596 + DCW 3246 + DCW -2055 + DCW 3996 + DCW -180 + DCW -4198 + DCW 2093 + DCW 1841 + DCW 2923 + DCW 608 + DCW -1329 + DCW -4630 + DCW -3317 + DCW -1095 + DCW 3497 + DCW 1908 + DCW 3216 + DCW 1308 + DCW 671 + DCW -3694 + DCW -1975 + DCW -2751 + DCW -1199 + DCW 7280 + DCW -1778 + DCW 923 + DCW -906 + DCW 424 + DCW 2839 + DCW 1594 + DCW -3103 + DCW -5322 + DCW -382 + DCW 1145 + DCW 2009 + DCW 5099 + DCW 2017 + DCW -2004 + DCW 168 + DCW -4462 + DCW -2227 + DCW -2780 + DCW 256 + DCW 545 + DCW 3887 + DCW 1673 + DCW -684 + DCW 2407 + DCW -168 + DCW 1199 + DCW -5062 + DCW -2508 + DCW -1229 + DCW 361 + DCW 5213 + DCW 2076 + DCW -1690 + DCW 3774 + DCW -3510 + DCW -784 + DCW 1078 + DCW -6957 + DCW 1841 + DCW 2432 + DCW 2218 + DCW -1199 + DCW 143 + DCW -960 + DCW 3552 + DCW -545 + DCW -3720 + DCW 1132 + DCW -893 + DCW 1334 + DCW 3795 + DCW 1635 + DCW -5355 + DCW 2566 + DCW -3233 + DCW -814 + DCW 2973 + DCW -3426 + DCW -621 + DCW 2160 + DCW -445 + DCW 449 + DCW 1212 + DCW -3510 + DCW 4764 + DCW -2449 + DCW 1216 + DCW 4168 + DCW -4927 + DCW -566 + DCW 4143 + DCW -1581 + DCW -1874 + DCW 4705 + DCW -7129 + DCW -302 + DCW 6844 + DCW -2025 + DCW -1338 + DCW 1724 + DCW 2059 + DCW -1099 + DCW -6219 + DCW 243 + DCW 4089 + DCW -3036 + DCW 2562 + DCW 5200 + DCW -5015 + DCW -3254 + DCW 7112 + DCW -2743 + DCW -1552 + DCW 1623 + DCW -4613 + DCW 562 + DCW 3384 + DCW 5175 + DCW -512 + DCW -4223 + DCW -3711 + DCW 5145 + DCW -4621 + DCW -4177 + DCW 9721 + DCW -5363 + DCW 1296 + DCW 7766 + DCW -2889 + DCW -4428 + DCW 252 + DCW -491 + DCW 2583 + DCW -3124 + DCW -1027 + DCW 5091 + DCW -5200 + DCW 4235 + DCW 6663 + DCW -3598 + DCW -8093 + DCW 2017 + DCW 1187 + DCW -3967 + DCW 2273 + DCW -92 + DCW 7091 + DCW -386 + DCW -4122 + DCW 4630 + DCW -7750 + DCW 1958 + DCW 3707 + DCW -3757 + DCW -667 + DCW -1191 + DCW 6513 + DCW -1807 + DCW 2927 + DCW -4206 + DCW -2956 + DCW -709 + DCW 445 + DCW 7993 + DCW -9758 + DCW 4286 + DCW 1942 + DCW 705 + DCW 2264 + DCW -3200 + DCW -1132 + DCW -2067 + DCW 3174 + DCW -3254 + DCW 1552 + DCW -2025 + DCW 923 + DCW 6500 + DCW -4386 + DCW -2197 + DCW -2189 + DCW 4827 + DCW 2021 + DCW -1245 + DCW 3430 + DCW -9318 + DCW 1233 + DCW 1363 + DCW 3099 + DCW -881 + DCW -7561 + DCW 6395 + DCW 1040 + DCW 4005 + DCW -2692 + DCW -1552 + DCW -3284 + DCW 1874 + DCW 5301 + DCW -6055 + DCW -1237 + DCW -4147 + DCW 6911 + DCW 2722 + DCW -499 + DCW 2235 + DCW -8387 + DCW 1518 + DCW 4915 + DCW -1761 + DCW -3426 + DCW 38 + DCW 2164 + DCW 2877 + DCW 4185 + DCW -8324 + DCW 1862 + DCW -1816 + DCW -512 + DCW 8710 + DCW -7737 + DCW 5506 + DCW -3770 + DCW 5238 + DCW -2160 + DCW -6198 + DCW 5020 + DCW -5233 + DCW 6118 + DCW -11721 + DCW 14245 + DCW -1522 + DCW -4936 + DCW 12715 + DCW -13189 + DCW 7691 + DCW -11637 + DCW 306 + DCW 6731 + DCW -524 + DCW 92 + DCW -3099 + DCW 15080 + DCW -5640 + DCW 2051 + DCW -16275 + DCW 2445 + DCW 9414 + DCW -12400 + DCW 20192 + DCW -13646 + DCW 6332 + DCW -1329 + DCW -4722 + DCW 6441 + DCW -16321 + DCW 16028 + DCW -13323 + DCW 14929 + DCW -80 + DCW -9431 + DCW 9037 + DCW -12270 + DCW 15013 + DCW -11742 + DCW 7263 + DCW -8538 + DCW 4416 + DCW 3015 + DCW -9171 + DCW 15814 + DCW -19336 + DCW 20716 + DCW -5414 + DCW -4441 + DCW -965 + DCW -8249 + DCW 13495 + DCW -12975 + DCW 7628 + DCW -13046 + DCW 6185 + DCW 8056 + DCW 9381 + DCW 19479 + DCW -28570 + DCW -1694 + DCW -12920 + DCW 1682 + DCW 15713 + DCW 2835 + DCW 12371 + DCW -17810 + DCW 3481 + DCW -13851 + DCW 4906 + DCW 9280 + DCW -7272 + DCW 13369 + DCW -18036 + DCW 10345 + DCW -1233 + DCW 474 + DCW 1577 + DCW -4382 + DCW -3070 + DCW -8194 + DCW 19378 + DCW -17214 + DCW 9628 + DCW -3007 + DCW -1996 + DCW 20313 + DCW -22305 + DCW 10291 + DCW -9934 + DCW -5196 + DCW 13855 + DCW 2940 + DCW 4638 + DCW -16153 + DCW 2948 + DCW -3195 + DCW 15466 + DCW 1711 + DCW -8014 + DCW 5213 + DCW -22305 + DCW 11700 + DCW -1044 + DCW 6584 + DCW -1610 + DCW -5074 + DCW 11205 + DCW -4433 + DCW 9075 + DCW -16166 + DCW 6202 + DCW -5477 + DCW 851 + DCW 9398 + DCW -18309 + DCW 9352 + DCW 2118 + DCW 13570 + DCW 2566 + DCW -10899 + DCW -8731 + DCW -13654 + DCW 11985 + DCW 3044 + DCW 4231 + DCW 1053 + DCW -3376 + DCW 12509 + DCW -5913 + DCW 1724 + DCW -5565 + DCW -8630 + DCW 927 + DCW 1707 + DCW 2537 + DCW -1879 + DCW 14677 + DCW 755 + DCW 4269 + DCW -13734 + DCW -8257 + DCW 4290 + DCW -6873 + DCW 11855 + DCW -4563 + DCW 239 + DCW -2319 + DCW 8555 + DCW 7112 + DCW -9733 + DCW -17 + DCW -8685 + DCW 4231 + DCW -3359 + DCW 386 + DCW 9628 + DCW -2776 + DCW 10786 + DCW -2143 + DCW -4361 + DCW -8379 + DCW -6479 + DCW 9347 + DCW -2738 + DCW 7200 + DCW -4391 + DCW 2122 + DCW 6026 + DCW -2919 + DCW -4131 + DCW -6563 + DCW 3824 + DCW -5192 + DCW 6789 + DCW -5384 + DCW 7313 + DCW 1749 + DCW -5892 + DCW 19135 + DCW -16959 + DCW -5510 + DCW 2302 + DCW -5737 + DCW 11385 + DCW -1573 + DCW -2164 + DCW 6429 + DCW -2675 + DCW -985 + DCW 4265 + DCW -7959 + DCW -6018 + DCW 9066 + DCW -8060 + DCW 10597 + DCW 3355 + DCW -19718 + DCW 17835 + DCW -2671 + DCW 700 + DCW 3871 + DCW -9695 + DCW -4407 + DCW -17 + DCW 872 + DCW 5464 + DCW 9574 + DCW -16841 + DCW 9192 + DCW 75 + DCW -9293 + DCW 8702 + DCW -2285 + DCW -5301 + DCW 7460 + DCW -1518 + DCW -9922 + DCW 15097 + DCW -5896 + DCW -2294 + DCW 10790 + DCW -12266 + DCW -474 + DCW 8110 + DCW -8748 + DCW 12337 + DCW -3690 + DCW -14430 + DCW 12643 + DCW -5309 + DCW -952 + DCW 14585 + DCW -8685 + DCW -5921 + DCW 9779 + DCW -15629 + DCW 6991 + DCW 5871 + DCW -7972 + DCW 8026 + DCW 92 + DCW -5221 + DCW 3590 + DCW 734 + DCW -7267 + DCW 10287 + DCW -11838 + DCW -2654 + DCW 13671 + DCW -7804 + DCW 3787 + DCW 14581 + DCW -15621 + DCW -5036 + DCW 8802 + DCW -14556 + DCW 10022 + DCW 4579 + DCW -6739 + DCW 7842 + DCW -4890 + DCW -4282 + DCW 13738 + DCW -9037 + DCW -1648 + DCW 7246 + DCW -15206 + DCW 4118 + DCW 11834 + DCW -7339 + DCW 5590 + DCW 6580 + DCW -19445 + DCW 8328 + DCW -4399 + DCW -1124 + DCW 9020 + DCW -12375 + DCW 6349 + DCW 3636 + DCW -2143 + DCW 2462 + DCW 10123 + DCW -14652 + DCW 1048 + DCW 7267 + DCW -18418 + DCW 11847 + DCW 2994 + DCW -3564 + DCW 13461 + DCW -6991 + DCW -6223 + DCW 2852 + DCW -6726 + DCW 6890 + DCW 4227 + DCW -12090 + DCW 2185 + DCW 8584 + DCW -10190 + DCW 11272 + DCW 2722 + DCW -16896 + DCW 9867 + DCW -923 + DCW 1044 + DCW 3908 + DCW -6596 + DCW -696 + DCW 5242 + DCW -5259 + DCW 2059 + DCW 5456 + DCW -11436 + DCW 10786 + DCW 340 + DCW -12367 + DCW 11209 + DCW -906 + DCW -7100 + DCW 10660 + DCW -4906 + DCW -8177 + DCW 8236 + DCW -2722 + DCW 5540 + DCW 2583 + DCW -15776 + DCW 8106 + DCW 2483 + DCW -3632 + DCW 13419 + DCW -7603 + DCW -8295 + DCW 4772 + DCW -595 + DCW -2852 + DCW 6970 + DCW -3355 + DCW -4697 + DCW 8651 + DCW -9758 + DCW 2227 + DCW 6701 + DCW -7691 + DCW 9670 + DCW -5682 + DCW -11318 + DCW 12954 + DCW -4588 + DCW 2214 + DCW 10794 + DCW -13558 + DCW -6429 + DCW 5623 + DCW 1614 + DCW 1187 + DCW 7435 + DCW -8517 + DCW -1635 + DCW 4399 + DCW -8664 + DCW 10421 + DCW -2856 + DCW -3711 + DCW 11285 + DCW -9851 + DCW -6655 + DCW 9305 + DCW -1296 + DCW 1799 + DCW 7116 + DCW -13629 + DCW -1535 + DCW 7381 + DCW -1786 + DCW 7137 + DCW -5137 + DCW -8005 + DCW 8391 + DCW -2550 + DCW 1602 + DCW 8349 + DCW -11566 + DCW -3338 + DCW 7586 + DCW -3476 + DCW 449 + DCW 4940 + DCW -10282 + DCW 6039 + DCW 6588 + DCW -13260 + DCW 4755 + DCW -3598 + DCW -1698 + DCW 7590 + DCW -4311 + DCW -2646 + DCW 6726 + DCW 11377 + DCW 2868 + DCW -3170 + DCW -10601 + DCW 667 + DCW -3657 + DCW -5347 + DCW 13453 + DCW -6550 + DCW -4235 + DCW 2512 + DCW -876 + DCW 6475 + DCW 1313 + DCW -3539 + DCW -55 + DCW 2759 + DCW -12539 + DCW 7221 + DCW 3858 + DCW -8685 + DCW 18896 + DCW -8517 + DCW -10102 + DCW 11423 + DCW -7125 + DCW -1854 + DCW 9913 + DCW -9800 + DCW -3460 + DCW 9897 + DCW -5309 + DCW 7997 + DCW 1002 + DCW -13977 + DCW 9846 + DCW 1086 + DCW -14451 + DCW 8140 + DCW 1195 + DCW -4877 + DCW 11612 + DCW -6257 + DCW -205 + DCW 12903 + DCW -13080 + DCW -3149 + DCW 5863 + DCW -10387 + DCW 5070 + DCW 4064 + DCW -3019 + DCW 11398 + DCW -2994 + DCW -18292 + DCW 12899 + DCW 4303 + DCW -12534 + DCW 11712 + DCW -8081 + DCW -59 + DCW 12572 + DCW -9536 + DCW 3996 + DCW 4500 + DCW -10203 + DCW 2164 + DCW 428 + DCW -9100 + DCW 9310 + DCW 5179 + DCW -6894 + DCW 8190 + DCW -5267 + DCW -8806 + DCW 11461 + DCW -5598 + DCW -608 + DCW 6567 + DCW -9242 + DCW 3552 + DCW 6923 + DCW -3237 + DCW 3388 + DCW -5238 + DCW -7611 + DCW 6970 + DCW -3065 + DCW 2118 + DCW 6970 + DCW -3711 + DCW -1128 + DCW 1950 + DCW -4470 + DCW -1443 + DCW 4533 + DCW -2160 + DCW 579 + DCW -96 + DCW -4412 + DCW 1933 + DCW 7821 + DCW 1505 + DCW -2692 + DCW -6894 + DCW -1929 + DCW 2176 + DCW -3049 + DCW 7066 + DCW 88 + DCW -6806 + DCW 6332 + DCW -2256 + DCW -2642 + DCW 8127 + DCW -6206 + DCW -1749 + DCW 3422 + DCW -3267 + DCW -977 + DCW 2575 + DCW -650 + DCW 1002 + DCW 3154 + DCW -8781 + DCW 5619 + DCW 2642 + DCW -7095 + DCW 6437 + DCW -3804 + DCW -5284 + DCW 6320 + DCW -394 + DCW 583 + DCW 1304 + DCW -2382 + DCW 734 + DCW -658 + DCW -1518 + DCW 319 + DCW 1614 + DCW -4617 + DCW 6060 + DCW -273 + DCW -5439 + DCW 6995 + DCW -4466 + DCW 746 + DCW 4273 + DCW -9024 + DCW -130 + DCW 9737 + DCW -5204 + DCW 126 + DCW 3816 + DCW -6999 + DCW 5015 + DCW 4843 + DCW -7825 + DCW 4340 + DCW -2701 + DCW -8890 + DCW 10945 + DCW -331 + DCW 952 + DCW 3242 + DCW -6173 + DCW 612 + DCW 1652 + DCW -4651 + DCW 1317 + DCW 3359 + DCW -3862 + DCW 2692 + DCW -503 + DCW 503 + DCW 5024 + DCW -1749 + DCW -3254 + DCW -524 + DCW -7125 + DCW 1287 + DCW 9301 + DCW -1032 + DCW 205 + DCW -201 + DCW -6714 + DCW 927 + DCW 4932 + DCW -4953 + DCW 4214 + DCW -1036 + DCW -5070 + DCW 5963 + DCW -1032 + DCW -864 + DCW 3137 + DCW -3325 + DCW -977 + DCW -914 + DCW -3866 + DCW 5816 + DCW 1816 + DCW -1489 + DCW -319 + DCW 273 + DCW -2889 + DCW 977 + DCW 1749 + DCW -96 + DCW 1321 + DCW -7142 + DCW 3036 + DCW 1371 + DCW -1560 + DCW 4785 + DCW 159 + DCW -1744 + DCW 1166 + DCW -5883 + DCW -4483 + DCW 9624 + DCW 1602 + DCW -3711 + DCW 2801 + DCW -2369 + DCW -2051 + DCW 4529 + DCW -1879 + DCW -4 + DCW -1522 + DCW -3632 + DCW 2621 + DCW 3497 + DCW -688 + DCW -285 + DCW -608 + DCW -3439 + DCW 2839 + DCW -2919 + DCW 1640 + DCW 3443 + DCW -3820 + DCW 1233 + DCW -1820 + DCW -2499 + DCW 6131 + DCW -419 + DCW -3443 + DCW 5108 + DCW -4315 + DCW -3804 + DCW 7871 + DCW -839 + DCW -5049 + DCW 4927 + DCW -7225 + DCW -512 + DCW 8769 + DCW -4835 + DCW 2143 + DCW 738 + DCW -3854 + DCW 2000 + DCW 1220 + DCW -4391 + DCW 1799 + DCW 2013 + DCW -1967 + DCW 1384 + DCW -985 + DCW -168 + DCW 3749 + DCW -650 + DCW -2826 + DCW 1199 + DCW -3606 + DCW 2348 + DCW 1359 + DCW -1858 + DCW 2705 + DCW -1740 + DCW 671 + DCW 3120 + DCW -4684 + DCW -3204 + DCW 4286 + DCW -2860 + DCW 1589 + DCW 5192 + DCW -3728 + DCW 1090 + DCW 1531 + DCW -6810 + DCW 2407 + DCW 3028 + DCW -3925 + DCW 3003 + DCW 1313 + DCW -2948 + DCW -210 + DCW 147 + DCW 3133 + DCW 3736 + DCW -4437 + DCW -2847 + DCW -2671 + DCW -625 + DCW 1279 + DCW 3187 + DCW 1283 + DCW -1132 + DCW 277 + DCW -1287 + DCW 4730 + DCW -2613 + DCW 600 + DCW 1199 + DCW -3082 + DCW -3766 + DCW -4399 + DCW 4458 + DCW 6756 + DCW 4529 + DCW -1082 + DCW 59 + DCW -6626 + DCW -8194 + DCW 3929 + DCW 4508 + DCW -3200 + DCW 554 + DCW 1367 + DCW 1170 + DCW 3892 + DCW 990 + DCW -1774 + DCW -5942 + DCW -4038 + DCW -1799 + DCW 5468 + DCW 4600 + DCW 3229 + DCW 1355 + DCW -985 + DCW -948 + DCW -7041 + DCW -2088 + DCW 860 + DCW -3770 + DCW 2223 + DCW 5548 + DCW -818 + DCW 6651 + DCW -495 + DCW -6647 + DCW 524 + DCW -5368 + DCW -2399 + DCW 5745 + DCW 122 + DCW -218 + DCW 6303 + DCW 679 + DCW -29 + DCW -1183 + DCW -6156 + DCW -3619 + DCW 1027 + DCW -600 + DCW 2801 + DCW 2877 + DCW 969 + DCW 6403 + DCW -985 + DCW -4223 + DCW -3896 + DCW -5246 + DCW 491 + DCW 3904 + DCW 453 + DCW 1099 + DCW 2852 + DCW 746 + DCW 1526 + DCW -201 + DCW -5770 + DCW -2143 + DCW -1426 + DCW -1245 + DCW 7599 + DCW -2600 + DCW -1690 + DCW 6517 + DCW -2696 + DCW 2088 + DCW 2554 + DCW -8953 + DCW 2692 + DCW 465 + DCW -9578 + DCW 6680 + DCW 5804 + DCW -1212 + DCW 2118 + DCW 2533 + DCW -7024 + DCW -1782 + DCW 3342 + DCW -3728 + DCW -168 + DCW -2466 + DCW 889 + DCW 1204 + DCW 2843 + DCW 7284 + DCW -1443 + DCW -5313 + DCW -608 + DCW -3875 + DCW -2927 + DCW 5896 + DCW 1174 + DCW -797 + DCW 2587 + DCW -1577 + DCW -1858 + DCW 1744 + DCW 1715 + DCW 1250 + DCW -3355 + DCW -5510 + DCW -818 + DCW 2365 + DCW 1413 + DCW 7393 + DCW 1279 + DCW -9981 + DCW 1002 + DCW 595 + DCW -4630 + DCW 2705 + DCW 3258 + DCW -1132 + DCW 4785 + DCW 4667 + DCW -2034 + DCW -2478 + DCW -2390 + DCW -1287 + DCW -5678 + DCW -6383 + DCW 4881 + DCW 5036 + DCW 717 + DCW 8207 + DCW -285 + DCW -6110 + DCW -1778 + DCW -2290 + DCW -738 + DCW -369 + DCW 977 + DCW 939 + DCW -520 + DCW 1468 + DCW 7355 + DCW -990 + DCW -4013 + DCW -197 + DCW -6957 + DCW -2638 + DCW 4168 + DCW 2638 + DCW 164 + DCW 3174 + DCW 2650 + DCW -2730 + DCW -155 + DCW -356 + DCW -981 + DCW -3300 + DCW -3128 + DCW 2940 + DCW -2650 + DCW 3137 + DCW 8282 + DCW 1216 + DCW -2994 + DCW -4462 + DCW -3296 + DCW -1103 + DCW 554 + DCW 55 + DCW 3107 + DCW -2717 + DCW 507 + DCW 2822 + DCW 2235 + DCW 3451 + DCW -3195 + DCW -2772 + DCW -2914 + DCW 411 + DCW -113 + DCW 1879 + DCW -927 + DCW -2504 + DCW 5301 + DCW 1958 + DCW -3145 + DCW -1929 + DCW -3422 + DCW -1526 + DCW 3984 + DCW -361 + DCW 742 + DCW 1325 + DCW -42 + DCW -8 + DCW 1480 + DCW -1757 + DCW -3263 + DCW 2218 + DCW -621 + DCW 994 + DCW 1933 + DCW -3418 + DCW -235 + DCW 3267 + DCW -3468 + DCW 147 + DCW -138 + DCW 256 + DCW -889 + DCW -3409 + DCW 6869 + DCW -4101 + DCW -3254 + DCW 7984 + DCW -2852 + DCW 185 + DCW 3242 + DCW -3208 + DCW -1703 + DCW -1933 + DCW 3489 + DCW -71 + DCW -1099 + DCW 3548 + DCW 1065 + DCW -4722 + DCW -1535 + DCW 4843 + DCW -1929 + DCW -1396 + DCW -1157 + DCW -994 + DCW -2126 + DCW 6257 + DCW 3271 + DCW -3162 + DCW 499 + DCW -1434 + DCW -1715 + DCW -38 + DCW 2315 + DCW -3258 + DCW 1002 + DCW -784 + DCW 2696 + DCW -453 + DCW -2545 + DCW 3745 + DCW -721 + DCW -1325 + DCW -2839 + DCW -2617 + DCW -2046 + DCW 5842 + DCW 5183 + DCW -717 + DCW -3036 + DCW 554 + DCW -1292 + DCW 1732 + DCW 1371 + DCW -2973 + DCW -2017 + DCW -2025 + DCW 7041 + DCW -415 + DCW -126 + DCW -59 + DCW 411 + DCW -1430 + DCW -3254 + DCW 1128 + DCW -2181 + DCW 1602 + DCW 3212 + DCW 1581 + DCW -3162 + DCW 2332 + DCW -512 + DCW 356 + DCW -1346 + DCW -5774 + DCW 386 + DCW 2407 + DCW 6131 + DCW 1812 + DCW 633 + DCW -3070 + DCW -2776 + DCW -3778 + DCW -1334 + DCW -717 + DCW 411 + DCW 4428 + DCW -361 + DCW 3887 + DCW -751 + DCW -2302 + DCW -1568 + DCW -1904 + DCW -1958 + DCW -860 + DCW 7414 + DCW 5292 + DCW -486 + DCW -675 + DCW -3657 + DCW -5657 + DCW -1770 + DCW -130 + DCW 3091 + DCW -1338 + DCW 2193 + DCW 6651 + DCW -1128 + DCW -2348 + DCW -3762 + DCW -461 + DCW -1044 + DCW -2365 + DCW 2361 + DCW 2881 + DCW 872 + DCW 2357 + DCW 876 + DCW -1652 + DCW -604 + DCW -7410 + DCW -2302 + DCW 4806 + DCW 2906 + DCW 486 + DCW 365 + DCW 4105 + DCW -352 + DCW -2034 + DCW -4013 + DCW -2281 + DCW -1577 + DCW -432 + DCW 4453 + DCW 1816 + DCW 2776 + DCW -1497 + DCW -1019 + DCW 193 + DCW -4399 + DCW 264 + DCW 579 + DCW -264 + DCW 2797 + DCW -742 + DCW 1560 + DCW 2910 + DCW -1426 + DCW -377 + DCW -3602 + DCW -2277 + DCW 138 + DCW -25 + DCW 1874 + DCW 1984 + DCW -881 + DCW 520 + DCW 1522 + DCW -1539 + DCW -797 + DCW -4269 + DCW 2663 + DCW 1598 + DCW -4139 + DCW -113 + DCW 2868 + DCW 3372 + DCW -1631 + DCW 1346 + DCW -3644 + DCW -3493 + DCW 2013 + DCW 3003 + DCW -2931 + DCW -5804 + DCW 10756 + DCW 7867 + DCW -9918 + DCW -11847 + DCW 11561 + DCW 11998 + DCW -9326 + DCW -6689 + DCW -2130 + DCW 4533 + DCW 5103 + DCW -3485 + DCW -1967 + DCW 1619 + DCW 1598 + DCW -3661 + DCW -3837 + DCW 7628 + DCW 2747 + DCW -3304 + DCW -1170 + DCW -4005 + DCW 1682 + DCW 5418 + DCW 633 + DCW -5531 + DCW -675 + DCW 419 + DCW 541 + DCW 2583 + DCW -3091 + DCW 3497 + DCW 2130 + DCW -1468 + DCW -4588 + DCW -5171 + DCW 8068 + DCW 2537 + DCW -2004 + DCW 1258 + DCW -3560 + DCW -4156 + DCW 2529 + DCW 6248 + DCW -201 + DCW 575 + DCW -4609 + DCW -306 + DCW -11905 + DCW -18430 + DCW 32767 + DCW 20728 + DCW -32768 + DCW -20229 + DCW 32767 + DCW 32767 + DCW -32768 + DCW -32768 + DCW 24939 + DCW 32767 + DCW 2868 + DCW -32768 + DCW 2332 + DCW 27904 + DCW -3300 + DCW 1992 + DCW -28763 + DCW -814 + DCW 32767 + DCW -7783 + DCW -13818 + DCW -9687 + DCW 5577 + DCW 21085 + DCW 16497 + DCW -28214 + DCW -32768 + DCW 32767 + DCW 13461 + DCW -28419 + DCW 4680 + DCW -11377 + DCW 15801 + DCW 9599 + DCW -7498 + DCW -19806 + DCW 8630 + DCW 24482 + DCW -32768 + DCW 10480 + DCW 12832 + DCW -17944 + DCW 13901 + DCW -2432 + DCW -1770 + DCW -8442 + DCW 13033 + DCW -2365 + DCW -20338 + DCW 32767 + DCW -13822 + DCW -16325 + DCW 11914 + DCW -10350 + DCW 12300 + DCW -340 + DCW 0 + DCW -13163 + DCW 7502 + DCW 10727 + DCW -19743 + DCW 24033 + DCW -11251 + DCW -16602 + DCW 18133 + DCW -2696 + DCW -1229 + DCW -7305 + DCW 8169 + DCW 2826 + DCW -780 + DCW 1308 + DCW -18565 + DCW 10362 + DCW 7502 + DCW -3112 + DCW 2495 + DCW -8001 + DCW -923 + DCW 2332 + DCW 12736 + DCW -4064 + DCW -11415 + DCW 9477 + DCW -8307 + DCW 67 + DCW 7418 + DCW -2575 + DCW 1111 + DCW -654 + DCW 2285 + DCW -11792 + DCW 9645 + DCW 6890 + DCW -16833 + DCW 16204 + DCW -7028 + DCW -10844 + DCW 11427 + DCW -2298 + DCW 3694 + DCW -851 + DCW 3917 + DCW -11528 + DCW -143 + DCW 16699 + DCW -17671 + DCW 9817 + DCW 1677 + DCW -12291 + DCW 9867 + DCW -3258 + DCW 3409 + DCW -2961 + DCW 3753 + DCW -3606 + DCW -5686 + DCW 7519 + DCW -9435 + DCW 12069 + DCW 3103 + DCW -10249 + DCW 1241 + DCW 2818 + DCW 507 + DCW -5254 + DCW 7301 + DCW -9549 + DCW 226 + DCW 10303 + DCW -7255 + DCW 5464 + DCW -520 + DCW -2415 + DCW -210 + DCW 994 + DCW -5716 + DCW -2747 + DCW 16208 + DCW -8362 + DCW -4093 + DCW 12476 + DCW -9712 + DCW -5053 + DCW 5066 + DCW -2508 + DCW 3183 + DCW 1799 + DCW -3946 + DCW -3187 + DCW 8156 + DCW 4890 + DCW -12107 + DCW 7573 + DCW -8454 + DCW -2873 + DCW 16183 + DCW -7712 + DCW 3279 + DCW -7267 + DCW 3200 + DCW 3493 + DCW -4751 + DCW 10433 + DCW -17671 + DCW 3409 + DCW 9003 + DCW -4625 + DCW 5665 + DCW -5368 + DCW 2269 + DCW -3393 + DCW 2558 + DCW 75 + DCW -6974 + DCW 8567 + DCW -5137 + DCW 579 + DCW 5795 + DCW -4047 + DCW -491 + DCW 2998 + DCW -3221 + DCW -3590 + DCW 6693 + DCW -5007 + DCW -3963 + DCW 8140 + DCW 2080 + DCW -5561 + DCW 2214 + DCW 730 + DCW -6898 + DCW 8722 + DCW 164 + DCW -5598 + DCW 5963 + DCW -3082 + DCW -4856 + DCW 3409 + DCW 2881 + DCW -1925 + DCW -323 + DCW -1497 + DCW -1858 + DCW 235 + DCW 4525 + DCW 264 + DCW -2831 + DCW 1929 + DCW -6831 + DCW 5867 + DCW 3304 + DCW -2822 + DCW 3535 + DCW -7204 + DCW 3162 + DCW -1552 + DCW 524 + DCW 1124 + DCW -4206 + DCW 8454 + DCW -4336 + DCW -1355 + DCW -159 + DCW -2831 + DCW 3980 + DCW 415 + DCW 1673 + DCW -5330 + DCW 2218 + DCW 1891 + DCW -3309 + DCW 6198 + DCW -4114 + DCW -2273 + DCW 3145 + DCW -6529 + DCW 4424 + DCW 12178 + DCW -13168 + DCW -5108 + DCW 13901 + DCW -6974 + DCW -612 + DCW -193 + DCW -7318 + DCW 9721 + DCW 1610 + DCW -8068 + DCW 445 + DCW 8387 + DCW -2910 + DCW -7272 + DCW 6622 + DCW -1598 + DCW -424 + DCW 3057 + DCW -7494 + DCW 1208 + DCW 8026 + DCW -1568 + DCW -3414 + DCW 2885 + DCW -4235 + DCW -3443 + DCW 6261 + DCW 981 + DCW -4336 + DCW 3732 + DCW 4453 + DCW -7104 + DCW 164 + DCW 3430 + DCW -3770 + DCW 4114 + DCW 3992 + DCW -8462 + DCW -1493 + DCW 3824 + DCW -5691 + DCW 6311 + DCW 1237 + DCW -10249 + DCW 3145 + DCW 4827 + DCW 3099 + DCW -2223 + DCW 3296 + DCW 1199 + DCW -6445 + DCW 4168 + DCW -5875 + DCW 663 + DCW 7351 + DCW -6156 + DCW 205 + DCW 3837 + DCW -4307 + DCW -7414 + DCW 7171 + DCW 3363 + DCW -6848 + DCW 5200 + DCW -2114 + DCW -2504 + DCW 6055 + DCW -2130 + DCW -2046 + DCW 2940 + DCW 587 + DCW -3606 + DCW 1484 + DCW 528 + DCW -516 + DCW 2478 + DCW -973 + DCW -1241 + DCW -2789 + DCW -918 + DCW -247 + DCW 5095 + DCW 1690 + DCW -7624 + DCW 956 + DCW 4013 + DCW -2273 + DCW 176 + DCW 3632 + DCW -2537 + DCW 1942 + DCW -1233 + DCW -3858 + DCW 4546 + DCW -361 + DCW -1455 + DCW -256 + DCW 1174 + DCW -2759 + DCW -2168 + DCW 6089 + DCW 994 + DCW -1795 + DCW -839 + DCW -3544 + DCW -1078 + DCW 6169 + DCW 1036 + DCW -4286 + DCW 2537 + DCW -256 + DCW 470 + DCW 3179 + DCW -2894 + DCW -3866 + DCW 688 + DCW 876 + DCW -923 + DCW 3221 + DCW -335 + DCW -1141 + DCW 1845 + DCW -243 + DCW -2407 + DCW -3263 + DCW 763 + DCW 470 + DCW 3439 + DCW 2453 + DCW -4617 + DCW 2705 + DCW 2206 + DCW -2797 + DCW 403 + DCW -3904 + DCW 168 + DCW 1086 + DCW 2160 + DCW 2118 + DCW -6093 + DCW 3107 + DCW -1002 + DCW -155 + DCW 5171 + DCW -5997 + DCW -2914 + DCW 2499 + DCW 4575 + DCW 13 + DCW 2285 + DCW -5041 + DCW -5196 + DCW 10111 + DCW -3061 + DCW -1648 + DCW -1300 + DCW 3967 + DCW 3690 + DCW -9406 + DCW 1300 + DCW 281 + DCW 7439 + DCW -4105 + DCW -4399 + DCW 1887 + DCW -3359 + DCW 6483 + DCW -6194 + DCW 8068 + DCW -2088 + DCW -4311 + DCW 4068 + DCW -10182 + DCW 9482 + DCW -830 + DCW -1770 + DCW 2487 + DCW 512 + DCW -3216 + DCW 474 + DCW 7590 + DCW -7913 + DCW 5137 + DCW -4139 + DCW -4860 + DCW 5183 + DCW 2013 + DCW -981 + DCW -1522 + DCW 5171 + DCW -7573 + DCW 4898 + DCW -13 + DCW -2466 + DCW -969 + DCW -1271 + DCW 6911 + DCW -5883 + DCW 5477 + DCW -4395 + DCW 1963 + DCW -356 + DCW -1791 + DCW -134 + DCW -7687 + DCW 14149 + DCW -8819 + DCW 8026 + DCW -348 + DCW -8546 + DCW 7561 + DCW -6986 + DCW 4474 + DCW -7045 + DCW 10513 + DCW -4831 + DCW -2923 + DCW 10643 + DCW -12929 + DCW 10001 + DCW -5703 + DCW -751 + DCW 4298 + DCW -5259 + DCW 2017 + DCW -6110 + DCW 11582 + DCW -3661 + DCW 84 + DCW 3284 + DCW -7884 + DCW 3862 + DCW -6936 + DCW 9171 + DCW -2520 + DCW 855 + DCW 3749 + DCW -7511 + DCW 5372 + DCW -5628 + DCW 4399 + DCW -2579 + DCW 3263 + DCW -1891 + DCW -3996 + DCW 4982 + DCW -7020 + DCW 8072 + DCW -2273 + DCW -2193 + DCW 1011 + DCW 461 + DCW 788 + DCW -2986 + DCW 5686 + DCW -2562 + DCW 164 + DCW -3812 + DCW 692 + DCW 6152 + DCW -4558 + DCW 4043 + DCW -2789 + DCW -2604 + DCW -1887 + DCW 2013 + DCW 3317 + DCW -4235 + DCW 8400 + DCW -6315 + DCW -3225 + DCW 205 + DCW 4277 + DCW 5514 + DCW -6336 + DCW 5774 + DCW -10211 + DCW 700 + DCW 4969 + DCW -3141 + DCW 4567 + DCW 4 + DCW 2998 + DCW -8148 + DCW 1355 + DCW 197 + DCW -948 + DCW 5900 + DCW -4353 + DCW 2894 + DCW -4445 + DCW -474 + DCW 315 + DCW 6039 + DCW -1858 + DCW -10618 + DCW 15231 + DCW -10131 + DCW -2294 + DCW 9913 + DCW -3502 + DCW 428 + DCW -3564 + DCW 4999 + DCW -4349 + DCW -277 + DCW 3388 + DCW -914 + DCW 155 + DCW 323 + DCW 315 + DCW -5984 + DCW 5984 + DCW 113 + DCW -1598 + DCW 4064 + DCW -7729 + DCW 705 + DCW 3745 + DCW -2629 + DCW 2340 + DCW 3237 + DCW -5896 + DCW -1631 + DCW 6680 + DCW -7251 + DCW 3036 + DCW 9507 + DCW -797 + DCW -10790 + DCW -6181 + DCW 14258 + DCW -11985 + DCW 3984 + DCW 15206 + DCW -15042 + DCW 629 + DCW -394 + DCW -3007 + DCW 10706 + DCW -1032 + DCW -5770 + DCW 7771 + DCW -12237 + DCW 243 + DCW 9762 + DCW -7322 + DCW 12723 + DCW -10756 + DCW -4248 + DCW 8026 + DCW -7297 + DCW 9310 + DCW -3757 + DCW -2030 + DCW 4776 + DCW -6643 + DCW -3024 + DCW 11901 + DCW -939 + DCW -9557 + DCW 7905 + DCW -7901 + DCW 6110 + DCW 1732 + DCW -7561 + DCW 8567 + DCW -9435 + DCW 3594 + DCW 5108 + DCW -3355 + DCW 2185 + DCW -3367 + DCW -3128 + DCW 5519 + DCW 105 + DCW -3544 + DCW 6827 + DCW -9813 + DCW 2948 + DCW 7674 + DCW -10136 + DCW 7871 + DCW 340 + DCW -9062 + DCW 2680 + DCW 3892 + DCW -960 + DCW 2873 + DCW 143 + DCW -5171 + DCW 2353 + DCW -4860 + DCW 3866 + DCW 3460 + DCW -2906 + DCW 1812 + DCW -8345 + DCW 6492 + DCW 2680 + DCW -1631 + DCW 3753 + DCW -7330 + DCW -1078 + DCW 5590 + DCW -2181 + DCW -4441 + DCW 7523 + DCW -4919 + DCW 96 + DCW 6177 + DCW -3787 + DCW 2223 + DCW -5951 + DCW 2877 + DCW 2038 + DCW -3787 + DCW 3984 + DCW -2504 + DCW 352 + DCW 2025 + DCW -4944 + DCW 2969 + DCW 3824 + DCW -7942 + DCW 3007 + DCW 147 + DCW -4357 + DCW 9754 + DCW -46 + DCW -5456 + DCW 2231 + DCW -4089 + DCW -440 + DCW 8844 + DCW -4378 + DCW -1640 + DCW -1262 + DCW -3850 + DCW 10320 + DCW -5435 + DCW -1388 + DCW 5393 + DCW -11218 + DCW 6777 + DCW 7532 + DCW -9385 + DCW 2881 + DCW 2743 + DCW -6529 + DCW 3309 + DCW 1904 + DCW -688 + DCW 533 + DCW -4047 + DCW 2290 + DCW -2399 + DCW 3418 + DCW 985 + DCW -4479 + DCW 8806 + DCW -11662 + DCW -1329 + DCW 10907 + DCW -5733 + DCW 155 + DCW 1724 + DCW -1069 + DCW -4298 + DCW 8177 + DCW -767 + DCW -7112 + DCW 8026 + DCW -4349 + DCW -562 + DCW 2843 + DCW -1124 + DCW -654 + DCW -2231 + DCW 4365 + DCW -746 + DCW -1296 + DCW 1833 + DCW -5305 + DCW 4416 + DCW 4126 + DCW -7611 + DCW 4583 + DCW 415 + DCW -5649 + DCW 4001 + DCW -138 + DCW -1791 + DCW 3028 + DCW -1614 + DCW -1728 + DCW 3200 + DCW -218 + DCW 881 + DCW -671 + DCW -1027 + DCW -973 + DCW -2449 + DCW 4994 + DCW -356 + DCW -4256 + DCW 4932 + DCW -2759 + DCW -1623 + DCW 4437 + DCW -5103 + DCW 2625 + DCW 3116 + DCW -4739 + DCW 1535 + DCW 3946 + DCW -4932 + DCW -2164 + DCW 5292 + DCW -1157 + DCW 2239 + DCW -2239 + DCW -2462 + DCW 2193 + DCW -3032 + DCW 3485 + DCW -3036 + DCW 2671 + DCW 2088 + DCW -9645 + DCW 9477 + DCW -92 + DCW -4760 + DCW 6039 + DCW -4856 + DCW -2365 + DCW 4424 + DCW 595 + DCW -3917 + DCW 6320 + DCW -2000 + DCW -7758 + DCW 7649 + DCW -1120 + DCW -2713 + DCW 3028 + DCW 256 + DCW -1749 + DCW -2059 + DCW 2885 + DCW -1074 + DCW -1103 + DCW 3778 + DCW -2248 + DCW 742 + DCW 449 + DCW -3351 + DCW 2839 + DCW 1107 + DCW -2768 + DCW -818 + DCW 3061 + DCW -3351 + DCW -1023 + DCW 4563 + DCW -2302 + DCW 457 + DCW -218 + DCW -1313 + DCW 939 + DCW 1178 + DCW 700 + DCW -2831 + DCW 2743 + DCW -432 + DCW -4655 + DCW 6722 + DCW -902 + DCW -3632 + DCW 4139 + DCW -2344 + DCW -1543 + DCW 1409 + DCW 331 + DCW -835 + DCW 2290 + DCW -2441 + DCW -2789 + DCW 5510 + DCW -1187 + DCW -927 + DCW 562 + DCW 952 + DCW 495 + DCW -3313 + DCW 4915 + DCW -2378 + DCW -2504 + DCW 3728 + DCW -4835 + DCW 5967 + DCW -436 + DCW -5653 + DCW 3682 + DCW -1455 + DCW 256 + DCW -377 + DCW 2680 + DCW -730 + DCW -3590 + DCW 2759 + DCW 554 + DCW 17 + DCW 294 + DCW -545 + DCW -1744 + DCW 1279 + DCW 340 + DCW -1300 + DCW 4441 + DCW -3095 + DCW -4902 + DCW 4604 + DCW -398 + DCW -671 + DCW 1627 + DCW -2046 + DCW -29 + DCW 608 + DCW -587 + DCW 2843 + DCW 1329 + DCW -2353 + DCW 457 + DCW 449 + DCW 1975 + DCW -4072 + DCW -5510 + DCW 3602 + DCW -637 + DCW 2663 + DCW 3661 + DCW -4101 + DCW 3866 + DCW 80 + DCW -5636 + DCW 3007 + DCW -1610 + DCW -3380 + DCW 914 + DCW 1602 + DCW 3158 + DCW 1036 + DCW 130 + DCW -2747 + DCW -1782 + DCW 2931 + DCW -2302 + DCW -3225 + DCW 5179 + DCW 1262 + DCW -5095 + DCW 5888 + DCW -637 + DCW -3183 + DCW 4621 + DCW -8387 + DCW 5795 + DCW 2084 + DCW -9964 + DCW 7125 + DCW 759 + DCW -1019 + DCW 839 + DCW 419 + DCW -352 + DCW -2646 + DCW -851 + DCW -75 + DCW 9880 + DCW -3363 + DCW -12191 + DCW 6395 + DCW 8391 + DCW -2688 + DCW -5238 + DCW 2759 + DCW -1484 + DCW -1023 + DCW 231 + DCW -5363 + DCW 11046 + DCW 1778 + DCW -10635 + DCW 6047 + DCW 847 + DCW -3615 + DCW 2042 + DCW -2684 + DCW 969 + DCW 3883 + DCW -7364 + DCW 1090 + DCW 10924 + DCW -8244 + DCW -1015 + DCW 6550 + DCW -7812 + DCW 3749 + DCW -4 + DCW -5594 + DCW 8777 + DCW -1111 + DCW -6475 + DCW 5674 + DCW 1011 + DCW -6223 + DCW 3082 + DCW 1904 + DCW -3653 + DCW 2214 + DCW -1812 + DCW -2323 + DCW 6437 + DCW -503 + DCW -4663 + DCW 6940 + DCW -1614 + DCW -8697 + DCW 7523 + DCW 1241 + DCW -3946 + DCW 4416 + DCW -4256 + DCW 143 + DCW 4449 + DCW -4906 + DCW 3556 + DCW 1967 + DCW -7666 + DCW 1187 + DCW 1359 + DCW 516 + DCW 3544 + DCW -3900 + DCW 143 + DCW 4034 + DCW -4709 + DCW -1405 + DCW 6370 + DCW -1048 + DCW -5233 + DCW 2302 + DCW 600 + DCW -759 + DCW -470 + DCW -2818 + DCW 4047 + DCW 2185 + DCW -5225 + DCW 1656 + DCW 4177 + DCW -5556 + DCW 952 + DCW 5825 + DCW -2814 + DCW 2722 + DCW -1535 + DCW -5493 + DCW 5200 + DCW -2407 + DCW -4571 + DCW 6181 + DCW -868 + DCW -4521 + DCW 3736 + DCW 1283 + DCW 449 + DCW 1837 + DCW -5011 + DCW -1770 + DCW 3879 + DCW -2952 + DCW 587 + DCW 6697 + DCW -3330 + DCW -2541 + DCW 3137 + DCW -1958 + DCW -629 + DCW 872 + DCW -1795 + DCW 1967 + DCW 2462 + DCW -3154 + DCW 1002 + DCW 1887 + DCW -4579 + DCW -558 + DCW 1300 + DCW 126 + DCW 893 + DCW -1124 + DCW 1573 + DCW 3837 + DCW -1434 + DCW -1929 + DCW 2097 + DCW -4525 + DCW -3154 + DCW 3632 + DCW -365 + DCW 3674 + DCW 176 + DCW -4936 + DCW 4173 + DCW 621 + DCW -5108 + DCW 738 + DCW 1292 + DCW -2432 + DCW 3007 + DCW 3212 + DCW -1095 + DCW 1078 + DCW -3351 + DCW -3095 + DCW 2810 + DCW -247 + DCW -3019 + DCW 2470 + DCW 2319 + DCW -1086 + DCW 2671 + DCW -545 + DCW -2860 + DCW -533 + DCW -2931 + DCW 2478 + DCW 4344 + DCW -3703 + DCW 700 + DCW 2445 + DCW -2738 + DCW 1975 + DCW 256 + DCW -2394 + DCW 1334 + DCW -3422 + DCW -763 + DCW 7389 + DCW -973 + DCW -4424 + DCW 2302 + DCW -470 + DCW -725 + DCW 1048 + DCW -1744 + DCW 1522 + DCW 1325 + DCW -3317 + DCW 784 + DCW 3636 + DCW -3296 + DCW -797 + DCW 3988 + DCW -2269 + DCW -1229 + DCW 533 + DCW -247 + DCW 1988 + DCW 239 + DCW -1229 + DCW 1132 + DCW -566 + DCW -3040 + DCW 1652 + DCW 1153 + DCW -562 + DCW 801 + DCW -1430 + DCW -17 + DCW 1069 + DCW -1581 + DCW 1518 + DCW 2097 + DCW -4877 + DCW 365 + DCW 3674 + DCW -3871 + DCW 2424 + DCW 2701 + DCW -4198 + DCW 1342 + DCW -365 + DCW -839 + DCW 4047 + DCW -315 + DCW -2914 + DCW 839 + DCW 302 + DCW -1505 + DCW 1296 + DCW -956 + DCW 1095 + DCW 956 + DCW -3573 + DCW 3715 + DCW 1963 + DCW -4915 + DCW 55 + DCW 2550 + DCW -361 + DCW 1023 + DCW 277 + DCW -2764 + DCW 1048 + DCW 67 + DCW -2277 + DCW 2575 + DCW 432 + DCW -2214 + DCW 935 + DCW 1078 + DCW 591 + DCW 931 + DCW -2051 + DCW -2545 + DCW 1740 + DCW -134 + DCW -63 + DCW 1849 + DCW -889 + DCW -50 + DCW 1220 + DCW 394 + DCW -935 + DCW -2407 + DCW -352 + DCW 2864 + DCW -868 + DCW -1409 + DCW 2264 + DCW -663 + DCW -1405 + DCW 1082 + DCW 843 + DCW 13 + DCW -1002 + DCW -2260 + DCW 876 + DCW 3443 + DCW -1988 + DCW 784 + DCW 3405 + DCW -6202 + DCW 17 + DCW 4508 + DCW -897 + DCW -1539 + DCW -5326 + DCW 4332 + DCW 8202 + DCW -6546 + DCW -6546 + DCW 8232 + DCW 2722 + DCW -9133 + DCW 218 + DCW 6705 + DCW 3430 + DCW -7125 + DCW -4760 + DCW 8974 + DCW 1728 + DCW -8756 + DCW 298 + DCW 8421 + DCW -2696 + DCW -6311 + DCW 1262 + DCW 8198 + DCW 1514 + DCW -14044 + DCW 1686 + DCW 11629 + DCW -5586 + DCW -5133 + DCW 5934 + DCW 2281 + DCW -4558 + DCW -721 + DCW 814 + DCW 4240 + DCW -2596 + DCW -8869 + DCW 9314 + DCW 3233 + DCW -5301 + DCW 3720 + DCW -2998 + DCW -2524 + DCW 5288 + DCW -1996 + DCW -6399 + DCW 7754 + DCW 3896 + DCW -11062 + DCW -147 + DCW 9129 + DCW 411 + DCW -8366 + DCW -1732 + DCW 9519 + DCW 1329 + DCW -10706 + DCW 2206 + DCW 10576 + DCW -5967 + DCW -7901 + DCW 5527 + DCW 8257 + DCW -5875 + DCW -11293 + DCW 7301 + DCW 13830 + DCW -5691 + DCW -13721 + DCW 9804 + DCW 6299 + DCW -13285 + DCW 889 + DCW 9712 + DCW 3057 + DCW -10052 + DCW -8538 + DCW 14304 + DCW 6072 + DCW -15168 + DCW 1648 + DCW 10446 + DCW -5259 + DCW -7716 + DCW 1275 + DCW 12547 + DCW -713 + DCW -14879 + DCW 3892 + DCW 10626 + DCW -3187 + DCW -7028 + DCW 2948 + DCW 6932 + DCW -6886 + DCW -8052 + DCW 9364 + DCW 7871 + DCW -8240 + DCW -6445 + DCW 6684 + DCW 5301 + DCW -5967 + DCW -4290 + DCW 7330 + DCW 755 + DCW -8832 + DCW 1459 + DCW 7984 + DCW 2134 + DCW -7871 + DCW -2931 + DCW 9473 + DCW -2038 + DCW -7137 + DCW 5204 + DCW 2466 + DCW -3489 + DCW -2789 + DCW 864 + DCW 8655 + DCW -1447 + DCW -11595 + DCW 6273 + DCW 5997 + DCW -8588 + DCW 382 + DCW 5573 + DCW -755 + DCW -5590 + DCW -1069 + DCW 7787 + DCW 1438 + DCW -6789 + DCW -990 + DCW 5447 + DCW 1199 + DCW -6085 + DCW -361 + DCW 6584 + DCW -2139 + DCW -4705 + DCW 3883 + DCW 2550 + DCW -3107 + DCW -3405 + DCW 1489 + DCW 6626 + DCW -4001 + DCW -5535 + DCW 6718 + DCW 1556 + DCW -3221 + DCW -1942 + DCW 2273 + DCW 4760 + DCW -6034 + DCW -4760 + DCW 8379 + DCW 1380 + DCW -6731 + DCW 2583 + DCW 2160 + DCW -1468 + DCW -1300 + DCW -952 + DCW 4932 + DCW -751 + DCW -7347 + DCW 2210 + DCW 7498 + DCW -1048 + DCW -6487 + DCW 176 + DCW 5858 + DCW -1820 + DCW -4076 + DCW 3460 + DCW 2185 + DCW -4051 + DCW -4269 + DCW 6148 + DCW 5959 + DCW -5774 + DCW -4340 + DCW 4282 + DCW 914 + DCW -3304 + DCW 612 + DCW 1254 + DCW 2420 + DCW -5561 + DCW -1103 + DCW 7884 + DCW -1833 + DCW -3065 + DCW -835 + DCW 1111 + DCW 1061 + DCW -1585 + DCW -193 + DCW 4495 + DCW -2545 + DCW -4948 + DCW 5489 + DCW 1929 + DCW -2424 + DCW -1988 + DCW 239 + DCW 3082 + DCW -814 + DCW -2608 + DCW 4240 + DCW -1082 + DCW -4403 + DCW 2596 + DCW 1895 + DCW 948 + DCW -3523 + DCW -1719 + DCW 4198 + DCW 17 + DCW -1313 + DCW 1493 + DCW 361 + DCW -1417 + DCW -4017 + DCW 2273 + DCW 5271 + DCW -3233 + DCW -3921 + DCW 1912 + DCW 2487 + DCW -931 + DCW -2164 + DCW 1614 + DCW 2885 + DCW -5477 + DCW -734 + DCW 5917 + DCW -973 + DCW -3837 + DCW 554 + DCW 1631 + DCW 2000 + DCW -2235 + DCW -1908 + DCW 4772 + DCW -2231 + DCW -2847 + DCW 931 + DCW 3166 + DCW 541 + DCW -3984 + DCW 935 + DCW 3187 + DCW -2768 + DCW -1556 + DCW 2625 + DCW 1199 + DCW -1929 + DCW -3036 + DCW 3472 + DCW 818 + DCW -3913 + DCW -189 + DCW 12081 + DCW 969 + DCW -13855 + DCW -3988 + DCW 7976 + DCW 9410 + DCW -8924 + DCW -4705 + DCW 4051 + DCW 3476 + DCW 1069 + DCW -9494 + DCW 2701 + DCW 9557 + DCW -8588 + DCW -2235 + DCW 7947 + DCW -5359 + DCW 608 + DCW 2034 + DCW -2290 + DCW 3405 + DCW -4940 + DCW 751 + DCW 6932 + DCW -4688 + DCW -3980 + DCW 486 + DCW 4458 + DCW 1011 + DCW -3527 + DCW 843 + DCW 130 + DCW -2919 + DCW 1782 + DCW 4009 + DCW -956 + DCW 130 + DCW -4701 + DCW 1539 + DCW 4856 + DCW -3107 + DCW 2139 + DCW -2046 + DCW -2864 + DCW 1497 + DCW -893 + DCW 6118 + DCW -1598 + DCW -6932 + DCW 5808 + DCW 260 + DCW -1237 + DCW 2600 + DCW -2923 + DCW -285 + DCW 1568 + DCW -4294 + DCW 5208 + DCW 2139 + DCW -6554 + DCW 1736 + DCW -80 + DCW 1023 + DCW 579 + DCW -231 + DCW 231 + DCW -998 + DCW -902 + DCW 2692 + DCW 340 + DCW -2319 + DCW -549 + DCW -1707 + DCW 3980 + DCW 377 + DCW -2260 + DCW 1698 + DCW -25 + DCW -3011 + DCW 1107 + DCW 3632 + DCW 524 + DCW -3372 + DCW -3082 + DCW 3741 + DCW 327 + DCW -159 + DCW 1518 + DCW -2646 + DCW 1510 + DCW -2109 + DCW 168 + DCW 6504 + DCW -4571 + DCW -4143 + DCW 2239 + DCW 2080 + DCW -147 + DCW 155 + DCW -453 + DCW -222 + DCW -566 + DCW -3485 + DCW 4869 + DCW 2873 + DCW -4583 + DCW -1245 + DCW 595 + DCW 2411 + DCW 273 + DCW -1770 + DCW 1946 + DCW -1765 + DCW -2105 + DCW 1325 + DCW 1547 + DCW 1531 + DCW -2772 + DCW -2210 + DCW 3485 + DCW 675 + DCW -3162 + DCW 2248 + DCW 1635 + DCW -2629 + DCW -684 + DCW 2176 + DCW 1870 + DCW -1744 + DCW -2575 + DCW 2512 + DCW -575 + DCW -1602 + DCW 1166 + DCW -663 + DCW 2940 + DCW -2873 + DCW -2097 + DCW 5623 + DCW -2374 + DCW -3564 + DCW 3154 + DCW 981 + DCW 226 + DCW -830 + DCW -1011 + DCW 2919 + DCW -1115 + DCW -2449 + DCW 2910 + DCW 872 + DCW -1967 + DCW -1464 + DCW 1040 + DCW 3892 + DCW -3644 + DCW -1698 + DCW 2504 + DCW -1061 + DCW 281 + DCW -122 + DCW 1422 + DCW 201 + DCW -3074 + DCW 407 + DCW 4244 + DCW -1241 + DCW -2944 + DCW 1715 + DCW 155 + DCW -84 + DCW -1141 + DCW 432 + DCW 3330 + DCW -3971 + DCW -1715 + DCW 3401 + DCW 1539 + DCW -386 + DCW -3824 + DCW 1753 + DCW 1422 + DCW -2969 + DCW 1640 + DCW 2420 + DCW -2747 + DCW -1883 + DCW 1921 + DCW 1895 + DCW 889 + DCW -2764 + DCW -1199 + DCW 3485 + DCW -1489 + DCW -1686 + DCW 3506 + DCW -910 + DCW -1740 + DCW -1518 + DCW 2390 + DCW 2495 + DCW -3560 + DCW -1128 + DCW 1086 + DCW 2202 + DCW -583 + DCW -826 + DCW 1325 + DCW -172 + DCW -3363 + DCW 1153 + DCW 4915 + DCW -1606 + DCW -3544 + DCW 180 + DCW 2508 + DCW -377 + DCW -637 + DCW 1296 + DCW 369 + DCW -3120 + DCW -637 + DCW 3963 + DCW 985 + DCW -1912 + DCW -4131 + DCW 2323 + DCW 3292 + DCW -1988 + DCW 1409 + DCW -814 + DCW -851 + DCW -725 + DCW 688 + DCW 2453 + DCW -981 + DCW -1069 + DCW -1728 + DCW 2516 + DCW 776 + DCW -2667 + DCW 734 + DCW 2172 + DCW -1086 + DCW -4315 + DCW 3355 + DCW 2810 + DCW -2738 + DCW 289 + DCW -1547 + DCW 1245 + DCW 2109 + DCW -2256 + DCW 1417 + DCW -218 + DCW -2252 + DCW 835 + DCW 2445 + DCW -1006 + DCW -2592 + DCW 1334 + DCW 1191 + DCW -164 + DCW -1560 + DCW 155 + DCW 1434 + DCW -1132 + DCW -13 + DCW -38 + DCW 2030 + DCW 436 + DCW -5087 + DCW 3711 + DCW 2101 + DCW -2717 + DCW 889 + DCW -709 + DCW 1472 + DCW -1053 + DCW -1438 + DCW 1690 + DCW 1916 + DCW -1937 + DCW -2415 + DCW 3086 + DCW -533 + DCW -1195 + DCW 1245 + DCW 382 + DCW -377 + DCW -1388 + DCW 1204 + DCW 247 + DCW -595 + DCW 470 + DCW -403 + DCW 1313 + DCW -1300 + DCW -1283 + DCW 2290 + DCW -893 + DCW -1556 + DCW 2063 + DCW 2520 + DCW -2189 + DCW -3309 + DCW 1845 + DCW 977 + DCW -486 + DCW 1396 + DCW 88 + DCW -1254 + DCW -872 + DCW -306 + DCW 1728 + DCW 1942 + DCW -2076 + DCW -1556 + DCW 566 + DCW 1166 + DCW 684 + DCW -1095 + DCW -50 + DCW -348 + DCW -1455 + DCW 1698 + DCW 1635 + DCW -1149 + DCW -491 + DCW -730 + DCW 2067 + DCW 973 + DCW -2654 + DCW 835 + DCW 1740 + DCW -2982 + DCW -1992 + DCW 3556 + DCW 2822 + DCW -1942 + DCW -4441 + DCW 931 + DCW 2621 + DCW 742 + DCW 516 + DCW -3028 + DCW -549 + DCW 1174 + DCW 470 + DCW 2558 + DCW -1371 + DCW -3699 + DCW 923 + DCW 2353 + DCW 281 + DCW -415 + DCW -1984 + DCW 2000 + DCW 3380 + DCW -7305 + DCW -126 + DCW 8513 + DCW -3380 + DCW -5762 + DCW 2491 + DCW 2952 + DCW -667 + DCW -130 + DCW -1837 + DCW -315 + DCW 1862 + DCW -1367 + DCW 1417 + DCW 2453 + DCW -3711 + DCW -1812 + DCW 1992 + DCW 956 + DCW 2344 + DCW -1858 + DCW -3942 + DCW 2533 + DCW 1564 + DCW -990 + DCW 2399 + DCW -2327 + DCW -3221 + DCW 2751 + DCW 528 + DCW 1526 + DCW -281 + DCW -4344 + DCW 2260 + DCW 2449 + DCW -2327 + DCW 1199 + DCW 1749 + DCW -3200 + DCW -759 + DCW 1522 + DCW 415 + DCW 3598 + DCW -2789 + DCW -4428 + DCW 3778 + DCW 923 + DCW -2675 + DCW 1992 + DCW 1145 + DCW -4554 + DCW 1677 + DCW 2084 + DCW -1136 + DCW 1225 + DCW -2738 + DCW 721 + DCW 3502 + DCW -2042 + DCW -264 + DCW 1665 + DCW -2273 + DCW -361 + DCW 1396 + DCW 482 + DCW 1355 + DCW -3137 + DCW -1401 + DCW 3678 + DCW -512 + DCW -650 + DCW 1032 + DCW -2571 + DCW -214 + DCW 1921 + DCW -474 + DCW 2512 + DCW -1040 + DCW -5057 + DCW 2256 + DCW 4957 + DCW -2466 + DCW -1837 + DCW 2524 + DCW -1690 + DCW 1107 + DCW -977 + DCW 549 + DCW 4164 + DCW -5057 + DCW -2474 + DCW 2185 + DCW 1765 + DCW -185 + DCW -906 + DCW -222 + DCW -1178 + DCW 1539 + DCW 1464 + DCW 1568 + DCW -1359 + DCW -6114 + DCW 2457 + DCW 9343 + DCW -876 + DCW -6601 + DCW -1157 + DCW 1355 + DCW 1568 + DCW -344 + DCW 327 + DCW 721 + DCW -4282 + DCW -864 + DCW 4529 + DCW 1187 + DCW -3137 + DCW -1124 + DCW 2529 + DCW -977 + DCW -281 + DCW 373 + DCW 449 + DCW 2634 + DCW -5644 + DCW 155 + DCW 6479 + DCW -3787 + DCW -923 + DCW 2235 + DCW -1141 + DCW -985 + DCW 4 + DCW 1480 + DCW 902 + DCW -2709 + DCW -1870 + DCW 3883 + DCW -92 + DCW -1220 + DCW 424 + DCW -675 + DCW 1883 + DCW -1493 + DCW -138 + DCW 1375 + DCW -1736 + DCW 1334 + DCW 1279 + DCW -2399 + DCW -306 + DCW 398 + DCW 654 + DCW 1900 + DCW -3116 + DCW -1422 + DCW 2877 + DCW 658 + DCW -793 + DCW -2202 + DCW 725 + DCW 3095 + DCW -1602 + DCW -461 + DCW 369 + DCW -516 + DCW 1518 + DCW -944 + DCW -67 + DCW 1170 + DCW -1208 + DCW -512 + DCW 1321 + DCW -822 + DCW -189 + DCW 449 + DCW -1166 + DCW 2105 + DCW -1296 + DCW -1547 + DCW 3409 + DCW -1661 + DCW -1346 + DCW 1430 + DCW -205 + DCW 1677 + DCW -994 + DCW -1510 + DCW 1929 + DCW 277 + DCW -969 + DCW -8 + DCW 1178 + DCW -465 + DCW -1417 + DCW 17 + DCW 935 + DCW 784 + DCW -1640 + DCW -822 + DCW 2847 + DCW 2151 + DCW -4965 + DCW -2327 + DCW 6185 + DCW 847 + DCW -3468 + DCW -1208 + DCW 1535 + DCW 1375 + DCW -1036 + DCW 25 + DCW 1237 + DCW -654 + DCW -1384 + DCW -80 + DCW 767 + DCW 327 + DCW -1170 + DCW 1912 + DCW -92 + DCW -3078 + DCW -218 + DCW 5284 + DCW 491 + DCW -8366 + DCW 4294 + DCW 6269 + DCW -6986 + DCW -3044 + DCW 9297 + DCW -767 + DCW -8760 + DCW 4181 + DCW 4189 + DCW -470 + DCW -5334 + DCW -1820 + DCW 9947 + DCW -3875 + DCW -9762 + DCW 9788 + DCW 4567 + DCW -9586 + DCW -516 + DCW 5573 + DCW 1476 + DCW -277 + DCW -5976 + DCW 3313 + DCW 3942 + DCW -8278 + DCW 6294 + DCW 1044 + DCW -5032 + DCW 2202 + DCW -621 + DCW 0 + DCW 1296 + DCW 583 + DCW -3674 + DCW 2688 + DCW -1099 + DCW -1552 + DCW 5959 + DCW -2097 + DCW -2793 + DCW 285 + DCW -122 + DCW 1996 + DCW 2294 + DCW -3409 + DCW -1803 + DCW 3363 + DCW -1115 + DCW 801 + DCW 755 + DCW -4512 + DCW 5028 + DCW 876 + DCW -7603 + DCW 4986 + DCW 2768 + DCW -3992 + DCW 2009 + DCW -814 + DCW -2269 + DCW 4915 + DCW -2764 + DCW -2696 + DCW 5724 + DCW -3795 + DCW -214 + DCW 1438 + DCW -1816 + DCW 2193 + DCW -1359 + DCW -101 + DCW 1392 + DCW -185 + DCW -2990 + DCW 3443 + DCW 1392 + DCW -4114 + DCW 2143 + DCW -1078 + DCW 1552 + DCW -612 + DCW -1065 + DCW 2642 + DCW -1292 + DCW -415 + DCW -461 + DCW 1589 + DCW -2348 + DCW 742 + DCW 3703 + DCW -4709 + DCW 591 + DCW 2462 + DCW -1317 + DCW -885 + DCW -315 + DCW 1719 + DCW 587 + DCW -1954 + DCW -1019 + DCW 4235 + DCW -1484 + DCW -5192 + DCW 5561 + DCW 784 + DCW -4013 + DCW 864 + DCW -801 + DCW 2814 + DCW 205 + DCW -2818 + DCW 1308 + DCW 1761 + DCW -575 + DCW -3036 + DCW 6114 + DCW -159 + DCW -8882 + DCW 2516 + DCW 5116 + DCW 1325 + DCW -2986 + DCW -2692 + DCW -243 + DCW 2730 + DCW -516 + DCW 331 + DCW 3661 + DCW -5959 + DCW -1099 + DCW 3112 + DCW 1635 + DCW 1497 + DCW -4885 + DCW -1061 + DCW 4282 + DCW -1669 + DCW 461 + DCW 4802 + DCW -4420 + DCW -4420 + DCW 1854 + DCW 3250 + DCW 3242 + DCW -2587 + DCW -4034 + DCW 1531 + DCW -247 + DCW 1854 + DCW 965 + DCW 1635 + DCW -1728 + DCW -9322 + DCW 9498 + DCW 2797 + DCW -3913 + DCW 1770 + DCW -3913 + DCW 2353 + DCW -1866 + DCW 2709 + DCW 1296 + DCW -1019 + DCW -956 + DCW -5766 + DCW 7636 + DCW 231 + DCW -2696 + DCW 277 + DCW -1329 + DCW 2982 + DCW -3573 + DCW 5447 + DCW -1895 + DCW -5368 + DCW 5229 + DCW -3854 + DCW 5095 + DCW 2776 + DCW -7896 + DCW -637 + DCW 2768 + DCW 2105 + DCW -558 + DCW 2030 + DCW -3757 + DCW -4781 + DCW 6261 + DCW 428 + DCW 2348 + DCW -2139 + DCW -6265 + DCW 4386 + DCW 323 + DCW 3057 + DCW -2998 + DCW 814 + DCW 2382 + DCW -7578 + DCW 6055 + DCW -445 + DCW -713 + DCW 398 + DCW -4068 + DCW 4089 + DCW -1807 + DCW 1258 + DCW 633 + DCW -323 + DCW 990 + DCW -4252 + DCW 4286 + DCW 1388 + DCW -2491 + DCW -629 + DCW -1916 + DCW 3879 + DCW -784 + DCW 2428 + DCW -2332 + DCW -5443 + DCW 6848 + DCW -3862 + DCW 3611 + DCW 1375 + DCW -6869 + DCW 3493 + DCW -323 + DCW 2139 + DCW -1296 + DCW 1111 + DCW -1824 + DCW -2231 + DCW 4734 + DCW -2025 + DCW 3187 + DCW -3560 + DCW -2411 + DCW 3866 + DCW -554 + DCW 1002 + DCW -1677 + DCW 2772 + DCW -3070 + DCW -1866 + DCW 3833 + DCW -1497 + DCW 2894 + DCW -3632 + DCW -1313 + DCW 3850 + DCW -1401 + DCW 218 + DCW -927 + DCW 2021 + DCW -1568 + DCW -1111 + DCW 3971 + DCW -1128 + DCW -1539 + DCW -1816 + DCW 2369 + DCW 742 + DCW -801 + DCW 1874 + DCW -4521 + DCW 839 + DCW 1447 + DCW -407 + DCW 3938 + DCW -3678 + DCW -1984 + DCW 688 + DCW 164 + DCW 2348 + DCW -273 + DCW 1199 + DCW -3690 + DCW -629 + DCW 3309 + DCW 138 + DCW 1048 + DCW -3246 + DCW 340 + DCW 164 + DCW 575 + DCW 1191 + DCW -1774 + DCW 1338 + DCW -2759 + DCW 2126 + DCW 2118 + DCW -3980 + DCW 2277 + DCW -600 + DCW -176 + DCW 2587 + DCW -1728 + DCW 533 + DCW -1258 + DCW -910 + DCW 1074 + DCW 830 + DCW 1703 + DCW -1996 + DCW -1984 + DCW -751 + DCW 2592 + DCW 302 + DCW 88 + DCW 608 + DCW -4621 + DCW 2843 + DCW 595 + DCW -235 + DCW 2759 + DCW -3879 + DCW -92 + DCW 1099 + DCW 1375 + DCW 403 + DCW -1979 + DCW 1065 + DCW -1006 + DCW 486 + DCW 1036 + DCW -1199 + DCW -38 + DCW 109 + DCW -491 + DCW -348 + DCW 1908 + DCW -1338 + DCW -952 + DCW 1434 + DCW -2415 + DCW 1879 + DCW 1464 + DCW -1703 + DCW 1157 + DCW -1694 + DCW 826 + DCW 717 + DCW 143 + DCW 1233 + DCW -3871 + DCW 2231 + DCW 1027 + DCW -1694 + DCW 2202 + DCW -285 + DCW -2990 + DCW -793 + DCW 4630 + DCW -1510 + DCW 264 + DCW -654 + DCW -3774 + DCW 4948 + DCW -893 + DCW -906 + DCW 2139 + DCW -1556 + DCW -1543 + DCW 516 + DCW 3887 + DCW -2629 + DCW -1841 + DCW 2143 + DCW -1279 + DCW 2017 + DCW -424 + DCW -1375 + DCW 843 + DCW -474 + DCW -570 + DCW 650 + DCW 2755 + DCW -3493 + DCW -713 + DCW 2294 + DCW -981 + DCW 1841 + DCW -985 + DCW -310 + DCW -1074 + DCW -59 + DCW 2202 + DCW -1371 + DCW 1459 + DCW 50 + DCW -3384 + DCW 1090 + DCW 2491 + DCW -1531 + DCW 478 + DCW 725 + DCW -2948 + DCW 1698 + DCW 1715 + DCW -2445 + DCW 1619 + DCW -583 + DCW -2025 + DCW 3237 + DCW -109 + DCW -1627 + DCW -478 + DCW 566 + DCW 1099 + DCW -382 + DCW 495 + DCW -1656 + DCW -226 + DCW 1220 + DCW -507 + DCW 1589 + DCW 38 + DCW -2139 + DCW -453 + DCW 2097 + DCW 457 + DCW -1510 + DCW 1103 + DCW -705 + DCW -474 + DCW 604 + DCW 520 + DCW 902 + DCW -1631 + DCW 55 + DCW -1241 + DCW 1187 + DCW 1359 + DCW -2449 + DCW 2378 + DCW -621 + DCW -2474 + DCW 801 + DCW 1895 + DCW -252 + DCW -470 + DCW -155 + DCW -2634 + DCW 1971 + DCW 1128 + DCW 1782 + DCW 63 + DCW -4760 + DCW 1053 + DCW 1967 + DCW -126 + DCW -419 + DCW -415 + DCW -75 + DCW -931 + DCW 1178 + DCW 2424 + DCW -2558 + DCW -1350 + DCW 1564 + DCW -197 + DCW 805 + DCW -872 + DCW -478 + DCW 1430 + DCW -818 + DCW -1204 + DCW 1984 + DCW 486 + DCW -1686 + DCW -134 + DCW 499 + DCW 1568 + DCW -1455 + DCW -1208 + DCW 1250 + DCW 327 + DCW -80 + DCW 143 + DCW -621 + DCW -1967 + DCW 2709 + DCW 2097 + DCW -671 + DCW -327 + DCW -4080 + DCW -889 + DCW 5217 + DCW 1250 + DCW 499 + DCW -3191 + DCW -6341 + DCW 6215 + DCW 1627 + DCW -700 + DCW 3854 + DCW -5296 + DCW -3669 + DCW 2441 + DCW 3128 + DCW 2210 + DCW 688 + DCW -6114 + DCW -1111 + DCW 2986 + DCW -595 + DCW 5024 + DCW -1820 + DCW -3133 + DCW -1489 + DCW -822 + DCW 6408 + DCW 88 + DCW -2831 + DCW -2298 + END + \ No newline at end of file diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Src/principal.c b/BE-chti C/soft/PjtKEIL_StepSon/Src/principal.c new file mode 100644 index 0000000..f6eae85 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Src/principal.c @@ -0,0 +1,34 @@ + + +#include "DriverJeuLaser.h" + +extern void CallbackSon(void); + + + + + +int main(void) +{ + +// =========================================================================== +// ============= INIT PERIPH (faites qu'une seule fois) ===================== +// =========================================================================== + +// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers +CLOCK_Configure(); + +Timer_1234_Init_ff(TIM4, 65520000); +Active_IT_Debordement_Timer(TIM4, 2, CallbackSon); +Run_Timer(TIM4); + + + +//============================================================================ + + +while (1) + { + } +} + diff --git a/BE-chti C/soft/PjtKEIL_StepSon/Src/startup-rvds.s b/BE-chti C/soft/PjtKEIL_StepSon/Src/startup-rvds.s new file mode 100644 index 0000000..a7b631a --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/Src/startup-rvds.s @@ -0,0 +1,335 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.0 +;* Date : 11-March-2011 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + +; +; Enable UsageFault, MemFault and Busfault interrupts +; +_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24 + LDR.W R0, =_SHCSR + LDR R1, [R0] ; Read CPACR + ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts + STR R1, [R0] ; Write back the modified value to the CPACR + DSB ; Wait for store to complete + +; +; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority) +; +_AIRCR EQU 0xE000ED0C +_AIRCR_VAL EQU 0x05FA0300 + LDR.W R0, =_AIRCR + LDR.W R1, =_AIRCR_VAL + STR R1,[R0] + +; +; Finaly, jump to main function (void main (void)) +; + LDR R0, =__main + BX R0 + ENDP + +SystemInit PROC + EXPORT SystemInit [WEAK] + BX LR + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE***** diff --git a/BE-chti C/soft/PjtKEIL_StepSon/StepSon.uvprojx b/BE-chti C/soft/PjtKEIL_StepSon/StepSon.uvprojx new file mode 100644 index 0000000..839c3b9 --- /dev/null +++ b/BE-chti C/soft/PjtKEIL_StepSon/StepSon.uvprojx @@ -0,0 +1,1377 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + Simu + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepSon + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + Son + + + bruitverre.asm + 2 + .\Src\bruitverre.asm + + + GestionSon.s + 2 + .\Src\GestionSon.s + + + + + ::CMSIS + + + + + CibleSondeKEIL + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepSon + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + Son + + + bruitverre.asm + 2 + .\Src\bruitverre.asm + + + GestionSon.s + 2 + .\Src\GestionSon.s + + + + + ::CMSIS + + + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + + + + + + + + + + + + CibleSondeST + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + STM32F103RB + STMicroelectronics + Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/ + IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + + + + + + + + + + + + + + $$Device:STM32F103RB$SVD\STM32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Obj\ + StepSon + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DARMSTM.DLL + -pSTM32F103RB + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --C99 + STM32F103xB,USE_FULL_LL_DRIVER + + .\Driver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Sources + + + principal.c + 1 + .\Src\principal.c + + + + + Sys + + + startup-rvds.s + 2 + .\Src\startup-rvds.s + + + + + Driver + + + DriverJeuLaser.lib + 4 + .\Driver\DriverJeuLaser.lib + + + + + Son + + + bruitverre.asm + 2 + .\Src\bruitverre.asm + + + GestionSon.s + 2 + .\Src\GestionSon.s + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + + + StepSon + 0 + 1 + + + + +
    diff --git a/BE-chti C/soft/Signal.m b/BE-chti C/soft/Signal.m new file mode 100644 index 0000000..b88fee7 --- /dev/null +++ b/BE-chti C/soft/Signal.m @@ -0,0 +1,38 @@ +clc +clear + +N = input('Nombre d''échantilllons pour ce signal : '); +Frel = input('Fréquence normalisée (nombre de périodes dans la durée totale) : '); +Ph0 = input('Phase a l''origine (en degrés) : '); +Ph0 = Ph0 * pi / 180.0; % a present en radian + +Ampl = 2048; +Offset = 2048; +%% Création du fichier .asm + +fileID = fopen(['Signal.asm'], 'w'); +fprintf(fileID,'\tAREA Signal, DATA, READONLY\n'); +fprintf(fileID,'\texport LeSignal\n'); + +fprintf(fileID,'LeSignal\n'); + +for i = 1: N + % fonction a modifier en fonction des besoins + Sig(i) = Offset + Ampl * cos( 2*pi*Frel*(i-1)/N + Ph0 ); + % arrondi + iSig = int16(Sig(i)); + % bornage du signal similaire a la sortie brute de l'ADC 12 bits + if ( iSig < 0 ) + iSig = 0; + end + if ( iSig > 4095 ) + iSig = 4095; + end + + fprintf(fileID,'\tDCW\t0x%04x\t; %2d %4d %7.5f\n',iSig, i-1, iSig, double(iSig) / 4096.0 ); + +end + +fprintf(fileID,'\tEND\n'); +fclose(fileID); +plot(Sig); \ No newline at end of file