From 75f4a97eba3f25cba3a5988e2d7fee38fd430056 Mon Sep 17 00:00:00 2001 From: Quentin Bolsee <quentinbolsee@hotmail.com> Date: Tue, 27 Dec 2022 02:37:39 -0500 Subject: [PATCH] Code and binaries --- CMakeLists.txt | 20 +++++++++ README.md | 99 ++++++++++-------------------------------- build/ring_133MHz.bin | Bin 0 -> 10620 bytes build/ring_133MHz.elf | Bin 0 -> 42520 bytes build/ring_133MHz.uf2 | Bin 0 -> 21504 bytes build/ring_250MHz.bin | Bin 0 -> 10620 bytes build/ring_250MHz.elf | Bin 0 -> 42520 bytes build/ring_250MHz.uf2 | Bin 0 -> 21504 bytes ring.RP2040PIO.c | 32 ++++++++++++++ ring.RP2040PIO.pio | 40 +++++++++++++++++ 10 files changed, 115 insertions(+), 76 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 build/ring_133MHz.bin create mode 100644 build/ring_133MHz.elf create mode 100644 build/ring_133MHz.uf2 create mode 100644 build/ring_250MHz.bin create mode 100644 build/ring_250MHz.elf create mode 100644 build/ring_250MHz.uf2 create mode 100644 ring.RP2040PIO.c create mode 100644 ring.RP2040PIO.pio diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..84fd8a3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.13) + +include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake) + +project(ring C CXX ASM) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) + +pico_sdk_init() + +add_executable(ring) + +pico_generate_pio_header(ring ${CMAKE_CURRENT_LIST_DIR}/ring.RP2040PIO.pio) + +target_sources(ring PRIVATE ring.RP2040PIO.c) + +target_link_libraries(ring pico_stdlib hardware_pio) + +pico_add_extra_outputs(ring) diff --git a/README.md b/README.md index 0a1bba7..f689029 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,39 @@ # rp2040-ring-pio +This is a demonstration of the RP2040's PIO system, which let you run several state machines independently of the CPU. There's exactly 0 overhead and the state machines run a custom assembly language with very few instructions. - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +In this example implementation of a [ring oscillator](https://pub.pages.cba.mit.edu/ring/), pin 1 is configured as a PIO input, and pin 2 as an output. Reading, inverting and writing is as simple as: ``` -cd existing_repo -git remote add origin https://gitlab.cba.mit.edu/quentinbolsee/rp2040-ring-pio.git -git branch -M main -git push -uf origin main +.program ring + mov pins, !pins +.wrap ``` -## Integrate with your tools - -- [ ] [Set up project integrations](https://gitlab.cba.mit.edu/quentinbolsee/rp2040-ring-pio/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** +## Results -# Editing this README +| CPU Freq | Ring Freq | +| -------- | ---------- | +| 133 MHz | 16.667 MHz | +| 250 MHz | 25 MHz | -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. +## Binaries -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. +You can find compiled binaries in [build/](./build/). Simply drang and drop the `.uf2` file on your raspberry pi pico's storage space after putting it in reset mode (boot button + power cycle). -## Name -Choose a self-explaining name for your project. +## Build -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. +Navigate to `build/` and generate the project using cmake: -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. +``` +cd build/ +cmake .. +``` -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. +This should create a Makefile, and you can simply build the project every time you update the code by running: -## License -For open source projects, say how it is licensed. +``` +make +``` -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +The output is `bin`, `elf`, `hex` and `uf2` files in `build/`. diff --git a/build/ring_133MHz.bin b/build/ring_133MHz.bin new file mode 100644 index 0000000000000000000000000000000000000000..c500a6c33479d456d6f3e5cfba1b88587cd8a8ec GIT binary patch literal 10620 zcmZSBYUHh`5Rot=gGsT&c}BvG1c}6mL_Kc?#hD3Aijj$oiXW6_255UqCNL__OfXeo z_~7z`Noj(U$OSe<$ux!!CO;(e7(pxri8QG+h7USFB=bO!Re|Ay{tre)4yT_NL1syN zN+vKUMkYvkN_#MZ&3dgUnYI9=^MlY2kP0zR5vUB~9tI7D3k>c;9>Sg+3Ct%NK67+% zxHE5^nZ=^O==A#nqXMJTkBiKEnYK!#Nu>S%{^`F&o<ttgUIqpx2L=WP2?hps1_tJM z21O+XhA#{Z5=sgT3m6y~1UTL@JYYZqC7b-J7!+6(zB4ii9A;z?ILgQ%a1akZjwE-I zkwM@zBZI)%0mcmbkl+XJ9|9H(`#!zyDEy+%ARwT@AYj78ATVLE)N=*}MNf_dwiAt? zIXVQ~<vkcO7&P=R@-E>!!=TA@f#HMDkDt$_Jf*!D6c`>b9-Qd(=c1%%hdT^2?ECwi z@g(D+Sx&z%7r2AWJ;1=Apu@zVP@~Bpz`($w0K#Cl0E+?x2s1D+6u5JHFn);o!{Gk@ zGi$?vO$F`@4A3~ZV8Fznz{19$a8!^%AeNayV5<;=KzJAf0~<q7!0OEj!3F9J0w8vq z3^P*$lpUh9Xl{o(g8(Z-P{6&^FBu^Fer!G9#^S;1EwHuOiTMJHH-k3Ag&FPwdqHjk zVNi6ld9ZtON_7jI<Uc7Pu+>ulmpXy1>^{mB4BDI*|9`*wpVgZ|o9P0J2g3t~{fx@W z1p<2wm>Cp6=5c`B;4QF~L7Vvkizh2s#sBYT{tN6q;0BU6VP;SOsrj(=m>a{^o(=jQ z9IIJYF|TC!Fz*M0M&LyqA6-uc2Br_`KNuC+89*$T9}P-Bl!KU}nOG*VPClT_pvuM| z&CIe=K#60;3^(?vY?B#3y!zLm9L>Zr*^2o$qp&mQWM?-4C61LWE4U^zez@~b(wj|@ zQGtCj!w03GY>G?@3?Jlv8iJfVl~I{diP4nl!=fKBK9dsDhuJ^2Iw&x(thQn>WMKMm z;|GI+a)zw4Y68y&mOT^PKJ4X~#WIt52Ezx=AIqP2uro0*Fen6o{KV8C!0=&f^9EK1 zJ_Zp6h7a9888jF#FmL#<SJa<T$(n&tkzqQk0mBF1|Hcej3=C5k6$LyPKOFj{$e_Vc z=*;+`@iz+tk2ix7!(=8!76pb6mj9I*7?c<l8K!_r45R<n3`|N4iVV})6c|2e|G)H{ zA?FSgLj#iogY<TW4_oiKg}eE=xw<{r%FfWdfkk1q8^c7#NsJ%<{rIKW$-wv_=(mw_ zliPpenQm<iVJ_PkeY}0VK1;BxOm^bF$*3IdG{-I2?V-yzDQ`Ch?GG0j6rvt5swgrT zFeExNelYpn?i6_;S#E|Kqt1&9vJ9!t1`L`Ej2|?9w>t%1SS&ZgjY;SE1zl-P1_K7h z53;}8ojfl*mYd<mtm6$A75d%o<aR+>euf*1jt5+n{dc>Q^Mz#j8E&jPu5i&mzuKJ~ zF0ko1T`*vHDbM)f%P%&ScBkzZ88o+EWK?EXnc-H<I9qx)!#qib+20uC5*TMYxyd9% zyD=(AB`|NW*)zdyrrRR7)ovg5GH5QoxWMiCa|X@T7oR+5(0l}S*XD~%D*ewHG;cv& zwCy6ZO8avL%}Y?X?7YaLQvaMm^V9`4ojn&>RVtq!aBFz_^M8ZC5Cf-IGs6@&2c={e zfvqwb2N;qZ4ycGYG$;iz3OmarFniB&OK@>a5ZKFdfYE`$fzjdpXMu*IZOmT684TKg zF6{pt-(TRa!^i+;F(@&4OC>aX7U+P8{n+~cvp{>%Ha<UNxa!j!M<m!)m$)5?VN~XI zSnVLepx~hF#BnjnP1#wv0A!v)Li=Zdjvspk7#Kb<`~#W&W9vCLceft529S9jMcWj8 zbut)qAhyqP(z$VkgI$p|mQ9jTMbM$gLB~n{0=r_T8=EEPgDV^$aUVB+1`&tl4mJ$> zPJ$O0jV3#Ny2Pm9-~_UbL5a^>Dxu@EKnH^c|7{*{X#d!&<1D~nQt<9MScS4SSRSM! z*^NQ_%>|Ab3?DZCJ>Uj%8<V$0Mg#i+{sQ*{ZVU(592gW?yji?J`j`$+cKUS@EY8Sq zp@EU%0*jYGg|p1<P2$=NHwBc13qW!;j0_6R8QdNMTU*=`U6Ncl8HE^UNkmG7WO!#V zD$H?WyuoyVLE*qAfxSW*+!?c+e%|>0{Qv*|{6DsayScjgx!rSnuyv*z&uYmE-qq3- ztPB&}X1TFvFlY*0+*i$@=X#-p!8&7!B(sgQWK@MA!>(cmEryG~iW!t<6+{(C6)->G zWAI@}kzlsb@n%q(<F+~@(PfUCvl}O4q6>F|x0`nY*X-^D?%AgktTUt~A$qE-XS*?I z>s&Bmh;-YLQJpcv-714YL;OOtTZCIQL$r&CB(wE`f{PNDV?bqeazV5kUqN;8W>=95 z1`LSQ{9|u4ST(ctWr=wOf|5e93|b5qq6(tjxC`ovo!q?LG-??>-22HQ$95sujX|6F zq9KDu2EzyYKYX(pv~OOJDYy;}2T)nz=LQN32IU7^dpB@R&h~C%xE#SfVWt~{@@zM6 zH&9ub^^<)L8v{Q>QpWqw0<A^cAgNc0fqe=nrc^SLt7p0~Xs2J8lo8`S!Oh!6nsJ7U zvzt^#bcO(fBtwJrPDcjK_`BRQ7(Pt>$)L=jHp7iUeU=;hoa79U{wO!8gx1dj9Uymd zTx8HVc99n)-*U}%bdzB6c9U?v;Lb6Db0VrMAa3B8$vKNb%j347GxG)Z+0vN|+OZee zXG>??s%Fq)zYxgKB_Wy7<L2p><iczfSm5P$tJvF(eHNqj#f(!ij7FzIqTSeM2`2`l zxTonk!mSJn%bzo7GG1iRn0=8!QGtQs!=GQyZgLs%8M8CkXU%eRcDtQ1!|ig0w+o}S zbOqOBX(nc8;Y0?7p6AM$4B9&{7&F)~L`zL^lwwe3SnecwW4@F0g-AD+iHwTO6FuFS zCOWz?P7HKopTRKk|M!jmwm)b1u;B;CEY8`WP@g1O?Ksov=}ktZAg9aXkDpI-dI)9T zeSU+PK>?JW1-1(LBxf*avs~a(6!2j9Q2bM1uQCI_mw=)|2E&IVKbaL6K2-kzk#0Yk z6}UVZK6L%~|2^y<hxZ&eX5|DI<x+O<28M)$I|=umH!w0NykTZgn9I%}aFc^Uz=46m z1Z2;Lt=HWA-Q3&`Y<>Tkwb@=t*g=9pz~cR9fu5pm3cgwy3|f#fg;7b6q0vFsr^78V zS;kYGfv=*=&5+@s1HS{8ljsFW&nAYHtiXsKC&|m=-j^br-R3z5yUBseE(T@ogdR{? zqQ!P$f;-CtQ0mYJi^zaWmPKwK_Huj8W|-jS>>`yRl>m~5>3REHgOT9^g9EDrGYf;l z2WAF^5M~C23-+uI0$Ujwn7o)h{(leq3u=3as51yKurMevdq-w*G0ez{%<2M{G$6eN zTUi)*8Qy;uXe-(#g;Yv2=t^Gz#d_&qG0#RPE-<_NFC#c5ME+$|UhE*~C7dAWy@cUu z0N7PZ+}=_NZJ@GzFSqw1hN}ULN{bx0JQWzYD<(U07qECTd}#a&NlBJ}pMu@a%FQ5P zk-+KzayQryTm9Xxfy0}f!N4ami<e<pR$|slr(YMloj7i=USL!}gvutT?>FCn7U(S6 zrtZO*!Jr9^2~`!(y$(HYoD~W_d<=Td9c~{tb-5+F1-Nk(Sjx(IbTXtSa|P~X;0{pC zVo=a@lDv?Z#R0aZ5p0X(4aSR`oWyP%a+SRx;4QBpn-rVOsLbxL+d;rf&O$gL+0DsK z3KDZloZeCiou36dwmfH0fP?@GRAlvYMuj)e54eHC7ZgWezcDi?G(2K>AONb9T8g%D zd2+++I7a1W2X-$G58))HidoJ~5c8F}6IwnCbb#UyWCqAAkU31=bKDYLIvE%f3fw{I zRA4I$!~gHE{xC8qF#P}i;s1YS<wB5aK>8qZcc5~Q{{L5A+yIj+*a~f_X{uac&{Db3 zkdd7+!(B6jL4)r?GJ~{a5d*XJB+1hf%vSRXIwZPc7_>w#vJ@CF@I5GIm@S#az-%o9 zmYoBY1(n5Y1quuWdpQ{XJdY{>sr~W%fSbYA<^%@iGn<@?8I4(rof4Xhj}-GVFk~?5 zu-$Z$VKlzINw|R7XpYm*i~kih9lRMLB^Z<)B$zFn3k>!`>Txy(9)^ak44Uj0d>NQC zawV8;qa?#C81z{#Dlow6-%5s)lFXJJZq6=|6`gJjijf6@1;rUw42ld588h6CGZ-{P zE;zZ(l9*BuDH$CLs%L@=_zTn-JlzZ!{(nFH-;#le0mLf#&%$u|xs#itTdd^zf>{#L z;5sS0K&0U1^8;=lz;)<7H$S%rTX`9>85lF7CGX3zFr0{O-oQBNlq7?O&jn`&X$fZQ z(-LtNTih7*#4a+<W6-m^@T{6akL3a=<W5U4TgMhWEe7?n7?gtxP+M$8450G5Q^Koa zf*XU9SHVQLr~*a?BXHcR{dab2a%0eDzYxu!nBnXKvL&j5K}+nSlUtx0DE3AFD`qgx zJ|)SZee5EG#(B6~7!+p~oOsSSn?ZZm#UsxH7#bv)EjT4SDw^Fq+&l^*3LL?@zx|7J zYXGyH|2w)df$e<rufgs7^AB4=ZEH{)`@vSXY8Hl428N8alFYWv8yF`##yUwdX!>37 zW{8$xwmvKoU$MuHL0{q`<6H(^hYL@u8FX1LWHUrd9+qIXjw^Up%%Ev_kwMvjA-Ev1 z7}f7pV81s=I8{t`V^DGe`(1&-isAqFmH(pM8sI*UhWlLnVw4-i?KA!{&Sqp#$Z(Qm z&^~gJLGvu!Jq!vn3XXyOzT@H{B)>O7{T>PSamBx2w`RBv!EhVcE=IZqfmNjcYj!)1 z(C_A70SY-txJUl8WM~AdTK3Nq8gl;sn%o{dKi~!`Ul}xYE;v_rJLz3u&G29VrEU$0 zrV0iv#S6g<vn80VU&XwW=yGDZDE)vzivue5S|X~V%jw%ir;4Zo24zO2<^tyeP#o|5 zmskyn8@Yc8#f%CJ4;T~*_BvM>7rcJXs3gho|N9!S_?PDg+;qHky$ZHUCFpqRdh2>h zB?vHdXUuT^eNo#-$9s+w=OspKS?RSLjHYWDbR{{?%y3`h^!p;i2ezN8UW(pQ35s5m zGj20B82`TLprquj<fH66D?KV*D*aa48YhlR${7j_4BCnpI86S3KmB)&)3?hqJ~F-w zGY%+eFfe>r@PBE-|L+rjF?`tn`~P>%KjJ>(SZ!SD^!sALUXU5H|E_Vma{114h6fA| z`_KOV_pjat)Sh=>IKbc_!Nj1T!33`N85uq>ItVZ^D1gKmAmcV*IdGqT-{0r_TNt)- zcr<Td{Lt}(Wi}|cu&$I~V4TSCf$0yk2jhp@AD}Ud18x@T3<4gYv5>8d9{;~T`R}97 zAn;+Us~aelgYq{hNAt{LW$195<-~Ba<bf35WH&h`0|o}=NH?BY3?H)pn0x0i%yCPR zT*8pzlAOWL(Cox;DIq~y{`RJsZj9QdHxDQ`D9vV6b{1lkO3?LQ%Mckk%Z)*k^+H4@ z!w0TEj0TJre=jo5QqBls40d>+B<0Yc9L=cgES2Ep#;B!#vjIsr$W|+cNVoI^h7bCG zg54ql85L0Tj<Xx1_OXixl$pUcN+mE^EzXc~`f~wdew4!lWrX=$UTYa9xjDHhW&}Dg zD{(nUB`_*EyUlWd=s5J8LE!?Z?rLCgNMUABFxbkY(7b`+gZ=OS-xvM_)ecj<r+7&v zL?z5hxRoH47?n6H@m8W#(gd%lB<2kUd;5JBq%(Xl_|2%)=Pi|xoWrR7=OVLG52$AJ znw$;dF{v;rc6xPsuo^Q=Vfb+H7pro+7o%dk2Z*=pSDSZK#(yoQ8x2Z93{eRUN)<k} z-inz*j19h0382tR$Yl7C{TmW`4-~7tnG~cl1i}4JEoZ?5$qWw%W<^E^!2}k?Ss8*( ze=amAH7HJE)N<xz6ik4aneVNfnC~5#@n4hSMpOc`QjSNmH>09d0u#gJ3`wUy7aphz zXUKwMgV|X&K`6t^fmu<|K{A0!G0_X6qCvSqaW*5fGbf{DLW5$gw<kkjLULjZ*yRj2 zA`=>vqP!nw3NeNwxmghAW~Crc?hHt5Xgf<KK;l^&oJty$?7V{*yb>NKdc)n<pycVT zm?gyMhGf?3Ur_%mIpQ`;xj`wK!8<|I`x29KlBIWK#zZHEOP~-n_fE_bVl+WA?=ajv zeLUvfX7WxD_fAgI0Q(aWL#o~jGldwHkj$G6H%}Iic_7#Ec`r_U{0x-NK;t>m+Zh-b z8W<dGHZV9CY+!I;(9ehjkMUT{kzqK%<Y3Ui03PqLX<%@0h%9CgX<%>&*}&kC(7@o3 zuz|rLr-8vCX9I(SM+1X{#|8!mM(+lO0}%!8AoD?OECx-M3(Q`^2_RhH4kCX)2eru< z9x^;=c*yX8$y>l+b_PTbsB9_N3TqkjBejfq!Kzvqq$9b#COa`-nCrxN;s5vBf7!if zXUGPE+E*aVpadG*fV78IK<)Im3=cqK!l3>qY^;ihp?Smm&jMXV+oF-o7f_n$*68Bp z7VbTbVRpvc$T062ZgZVjFD!KuyAb04T3TOQ<Ys{P?2Nfcc6obCC3Jlj=s+zMWEoyP z2l;!pTa=rdw{(V-1H+^!H&<^+KjPnahrf&y7&MqKG`fO(Q1zElS&LzovoM3L=WXd| z$4F;R-pLtroH#B<KLE9AW;6Vjn31u-N$`Rc1Dk?C7=y;=TMV-qv{^4ixfyv&CFpre zC2V>g<)-T`m9XwPn}S3bgND*=Ck8=@PKFwZ4!4CFGZP+G-YjHOObnY@xUjNbQ~t)1 zj-OH~tSX`|E}W7NR5)2Zc~zJcoo6-(NyvFmV%RSsRUuKZtMK%5#u*G6+!y~FOemD} zn9v~ZB~T$)Fr#q)^Sz3kOwXT-dWm^nlH#xmU~=GPbe`ED>>0$t<$SAQ{d15zg&7z$ zcHd&0#h~@-qAR#gMvjjapoTLv{#UJHU;w2DCKd(-hQ0s)KLW{p`2U~b$N&F7wlb=+ zFt9rR`@ZxKGqk^?=*b1|1Il|TFvxp0NI5t<I&<>MdCX>L&+y#zKVrR;%mp^(%VFJ4 zG8crvw9*ARFs*PwOZjpbvqHC%zy)D%sS3%0Mc|e@1H32oV{cOiug8Ue_s<y=ATe-B z;=l6bLQe0=4NsplDtvj)r10ta0XL9;K>h%^ACzuE?gynckRMpR*}Q}kKsY#Ia>C^V z;l$v?$%zH-4Gj$q3{MyyusmUS@M9|r1CN3@gDe9d1H*?sKO7l3rMej-rA{(%N^~+> zFfe@B^n-1dHj5Cmu(MJIgO=iL39m&GflgkI4T_$OJ#IlxTn-|hNiJLoBAy^D&d{5& z-ud^%1Byzros5Fcib`q;3lg{zKzje&dYr(a%$@LKuf39D2A9JoryCa+WeBkf@isYK zzW6AELHokR51{(T;qQJ>TY%vM1Go*)pv>eon}ON+a#DdiLj$YBDrGh=X-44$ePve9 z%L%OBk_o|}{?skd7#V{DlLNzsUknThOb!BD88jF!3hZV0p!etZ^8;=ITRFX$8ALK# zHZbULTwqjUn8@Z4<ixykfjgrD%Lb6ToIeZ-Kc8P=W>7dO#UQ}w!J^3ME#dxwkwL*y znn6HB8PvO$=wLCH?f}gvh(Y;GP(EaApFvaXf`~E;1EcB;HwpDl1~&<3H^mHz4(pB? z?u<vA<z_fKII%h`bNYNyg8?$G&ZzqHxuDnN{Mj7Bmju!R(?E6I|K}hWm@klD;LfrY zG@j0&aKM@2!`#0NiY$9U{SlG8(7f<`vHbtvpZ*s~3r!187fb)Jmw|!d!W1_@uSxln zIFj5LFBv=lsrB;PnxD(@=dwv&X<m80Sw6!D)gM#bT)bfVlH5M*J>WLQ%>k}20<6yl zL!a-DDQ;$H`WUoTZVO&u(6qb7u=S*~gA>C=Mni@V7C&I@+s;8CF=K|k3|g-*GH5Vf z1o@Cb;Uxb_cE*bboE<qBwlaLs_{*Tgpv<tBVJm|s*KN3-4<c}L81`bA_<{8YT;*N{ zP34OW+7cHTw0JJ;apU#3NUKU?P-IXBh2;O|RrwbA>23w?ps-~3U}ON<`R)(IP9_F! z1_lKNMbK;%!-fC<|NjT|6Zbz5=Fzywp!NJh!xlk*%e1OAkVytxSa_=QE%T*Wl%1`i zV*j5XaBJCAoo|aGdcciAS%*cJ2V^sYWTxYWJrMIhY@Oo9pen-0cu|On!&HQy@uCnT zi|G`8#*32}m`tzmGhPg0U^KnL&1j<PUz4WlW0S_mGkFup?*Gqi^3$Bnc*>dgxfMI# z=Z<DMAhpv`n5WqJw!}%Pa~vSKZ7!2H6+6rGOEbdc<hi9;LF_i(ekMC-kQz>1mD@pF zMa~UU<;-qeAQ3U;Xz6<n_Z{|2rnsd!H%S+`v6!+MGcw$CSmAI$lHoF=;UXutOAN~3 z6vhAvBOz%<gU^>gKIc@gm;UFF;<jiL$V7%qjFw6~Mb5%JLM%;EGab1ZKxPS>Gcx>i zSmDqBHj6=<>Ea?Mu1g>GG8%x)7LxvTiP8GU#YIjGNMhfgf7mL+!*HSD0nZi&RT(ap zi_%PDe8$e8P?O<ixhTyj#&7Hl3cESnEEi`pOyf6p28G}qZl;TqB%&P|O=TFSOQbk5 znz;Gbq`85^5fX|A+z{b7eN(yf0cnt{A>{l`<<2LiPfCmPlsnh4{O1OZ=t4r4N7wlF zHWwjoc~&cDX>No*hz^i?I~IE$ka}21Yl1_D$F|&Uy~BP<gFTBjt=?4RT<qK+HPaCm zMj$pQ{V|#|NUwDKd8tB<LGi<09<a`Gw|egN4*w+|JZDgem0`ai;$NF)2~LF|f7s+t z-864gs&ksNgY-s6Q64!S5ZjDJpU2Kwmjxs?(~0F0$ZQ1$keQ4ZCpdk-46={WWTw-n z%io@ZW+owVDXd(uRkngrSM-9wU3HKD-zWZ6_hDpcPy&quZvVlg%XUG<<Nx=%zslYc z2?cu<e3ZNvrF?y^#~|yY;I)_|+DXnq)=B?@F@sWqg2G0IM2QAzt^}`yu7pzwT!~(Z zU5Td>xstq+x{^*MaV2{tcO{=n=1TEO=}I}3!j<Zk+Ld}Ll`G9Ftt;(R8dthkx&w!R z2J^+P^i%1JQVu<rGoH=xC}2^_-scR;=bs;N3wB{(U}0fU@G)j!c)`q|uvLLUfPHI% z8)F9-7n8w#tzQ>UZffFSxy;nz(80hW;LPxVA%oE?Ab@!S`(BVfVP%1>LLM>||G&%q zWn^H~;kv+lw?T>DgW-eI4?d6o-?{(tc}pY+?B((a0sG(l2e)@}>f+SLsmf`|X^Yby zrzxi=r!P)_oUWYoIPvN8U^fN^7FL9NTop-h4=aNLte#<Dg48pN-q9Hn?hFhdK4==8 zgF!k&kO5TV9B})w)!pr!Tf<i88g>R=1~CQ(ZSxBZDhvt?T5@;2<z~1^d(U)Z(9yo& z>?R${YaQhj?09>VRxFp6@C8PbWlkUOv^g=~HI%Z>(2$tnzE+aaR=WbC%DMzLp2nd4 z^5Oy~=39zTRUU3kiq;v7CNta>816o|uDSl4IYW>^gJFjI)8_}=c7XfN;ouqAdu}oe z7nC1tm1dLAF!gTUz{bGKAi==6a-!QTH---$zZ%>aG&n9Y&aU4y--+cyfE&XHw_l9P zGu*Oem@gVIFnoCala+x%N9&@xzlOI=27`{o1<;(V%0*T0nQlxEo@6lS@Ly2QV9@?~ z!P`wbgF&0|!eXb-7Zn(^7z`P9xP#>1Uvze3(AKz^A=m2oViRhMSk(XWb7Ak9Zd}T< zp{BjSVj9RS1%@5&QEu683Jg+(j4K(HcDO%(4sz}JpO>D4#vkS?G6<YuW>C1m%%IS# z2pT(p#7XmpY`6O|7nCguq}gOL6uj9O7*|R#%y47)aOx+koYDmuu&=Z(fZ_<^9|0^b zP+(wGvSj%Go$EiyNAE5&=n7smU|`+=iJuR98E2<#n&ZTM!NHB;!?K_3-i)fCu)1;) z#IO7L@;NiumNOThfZYmnCwMICgV|38Wkv>821X^&c#`se4zOCb3!vE))(bPhVff>s z21CJKklmjz{(KJ7&+RR+6*RZ&;^gAU>9vHRX#>L~4i6=U$1?xEyZ>x)V!Fd1&9p&a zFKE{D7pVQlaAEx(bp`=O(A>n<dv307p!D%zD;q=e2404L-#`B_@Yb*VDB<lC>8R(; zsxrf^n_;$_vs;wg><9&=Ic|)~yB!!O=!7#`Uy^3fF}gj)$@$J=ha@*CC;N*tK_iS8 zvMaPIq?x3gS64{02s^*35Mq;Zp5(@$9OxFs&>NM-&2UjyQc6<DXc7aX@zlWiPM>Zh zyLq`qx(PcwxiQWN4*2(d?+*nA)bzoiC2(7kA;E2;g9t;X8>18Z#goq^7!utkIEXMb zx^Xxiy1;1l?Gm%czwf92f!1_fSntEkpzr{k{$XRJ-EN)?pz+}bw^*0A46ZI344iA! zD()DR$Srg1bYsjYaq4js^^{lZa#M2%b79ryySYHoleNoDUj2q?pj!wdk29+gt2Il4 zm4jXatM=C$k#3$YCm9@FX0rt`N;z{ga4_64mP$x+yJ5hVAeDfaA^oto;Q<4~hpmjN zy$&oHYn*)<SQ2t1o-nXTsxh1}W6;*RAfIu^#5^HBqdZ}L#_f#l3CaoC61N#-85&eB zn7T@)FzPrrsOqw*Ca5L|`tZv3IJ6`%s;D!pcd%vPFzj)VS7giJaxisfO<>K?ab`(4 zAaTQhDdEH32K9O-^MoJj^-Sdn2h{JF*fWDnzWDrr8zUnlqrlc?cJ&L)6%5*H7nm8C z6`3ALRWNADTwpZjcKUfyGK1esz^6;1%UQ{Z|00XAWCphvgvSBqaX@(=FEBh{GzRJX zeNjS6U@tSn!{-bNpmg^C-@kvLz6@x+52z+%+`{D1;>Nfq!JT1$AR~hUGQW}lpA${~ zAOnMf04NRrXJFu1z`)><Sd>zpSd^-en3GtPtDu^qkeE}HnwV0lkerj4nVXuzz`($z zrKP11;OOV+te~Z(#l^tI0MVzASX`W1RKgIHnv<GXoXU`tpI>4WUv6YtXkcN$z`$Ur zXRHUJ3o?`QLH;Pp%u5H+E~&{1M&=4e21Z8UHBh_%+ia_Vu6uge)KQ-RWncbK>J*{Q zAi>z~Gm!5a8*rP+XE&lB$rKn4FQBms+d<c6eE0W=>*KPAW)EK~a8sQDUw_aY15o zD#)%aObh}mm>2}+Ffj;BQD+dCz{DW1K%GHgjXHzC1!aS+464#>3@WkVY!8^h^Tsj> zjh_WN6!tTLX2~02v*e)B59Z2x?Kd}B3nA(ll%&8a4fY;z1Jz{=AoVRp+nC_JXBMSd zVGLT_w;43~FEA)@B}jwK2kC>%fn87%ViU?>RFEqC_?$uE{qqBEn0EeGW=6BmVSj-; zs6Qycz`!sA)R$*qU;wQz>w&J<0{M9k5*wrrB*wtN2%*3vXpIw?!N9=43}Y}bF#LzG zw|ZnS8uqy{xEHu_S}=NcxHIe(lw=SHFlJx?wM{~d85n|$85n$n85n$>85n|17#N&Q cAX-6Wp(29-r!<4WS9u13hYAb=mdp$S0DP?@Z~y=R literal 0 HcmV?d00001 diff --git a/build/ring_133MHz.elf b/build/ring_133MHz.elf new file mode 100644 index 0000000000000000000000000000000000000000..3c57d5efa1097239c6094d254e9dedeb0d41f846 GIT binary patch literal 42520 zcmb<-^>JflWMqH=CI$@#5bq@;gMbMG1B1aL1_lNu238XW1qNmY4F*XD39vka09Xfz z6cEs0U;trukdOcaSpI+m1H%CZ1_c2P27w$#1_lsDmN#HxU@%}}Pyk_&wkymG3~V3< z$V3o5ibq3WGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!ns22iTjl2~VA`)g~ zFe!F8&q%nDAdwi6sOQa~I5UAsF*1=+@q^OL0Bujn1V+V~38o4RA6$MgDNS$^xxl6< zna1$J<cDM)BZ#FSktUVK@ImK?WF82zDlmM||G}up;q>z&$Si43$pi+)$OI`*X%9xQ zS+5l((-weqeh~TrQX%Fk0+nIh!=S-%fx%tKL)eoef%!zkXO0dIcjm1#vse@uoqk_n zRA6-aaglj1(^iQziM0RUKmC`;lgMM*%fP_oz`(#D!N9=Iz`z{Ops2*a@P&avLP>#P z0Rtn00LNQ~2gm_evdOQCL4if#J0pX@VMYdlql^p!2l3$JNOC6`83ax<G6<X<V9c-& z34ZYYAz;C<@6+p!!Y}F!pm7-i6D9_M35%tkGbku}awM>wX#C94A>c0W!H~hAp?{Hg z3Evq8O{NPBAB2AVd@kiF?Zu$L@PP5)M5jL&B|SUbVVGgx-{*`c84t~J`hB^;9W<tM zfPq0lhlxR<MiVp=#G=5!zye_luqZHqFarZafjhSc<A<m}4DRngvo;*qRN&6Q0F8qS zpm84-HU@>Gf(!z&%nSlsg%||F!$4y|K>@2bCj=L$GYGIT1O>FoFf%nk*&#}c=60wv z2(U5)1>8&hk^!>&$JPUGEFP@h0$ZD%m@lw+GiWnhnBgw47vwe&2E{j<2fHVyRJXuM z{*w{{TRjDEsT0`B?xS46pv`&l|M#o^S-lywnJ%z+Fg#$`�_iAh6efnLz<$9tX$` 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ℑB@IJ7*kK^M%faCU$!~eN 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 KKyn}qQwIP5QC$uI literal 0 HcmV?d00001 diff --git a/build/ring_133MHz.uf2 b/build/ring_133MHz.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..a065dda6a502316e110774cedd473ae60c5f73cf GIT binary patch literal 21504 zcmWG_GvW#ljGf1zzyJaQ42&R(fkBIbfg$XF_Y;P#M&61F5eYLgm=rslXC&N6kVuS3 z)bnOgoSDF+7@5eZ_(5rAfVQV(0;A&01XBfu4=z8LlqNWdTwqg_Ok?<9@<TF@5yVoE zNRvuq_@MJcG7kh<6&OC~|6o+)aQb->WR|q2WCDX?WP+5Zv<D;Dtk;T?X$wF)KM4H* zsSxuNfyyxMVbEZ>z~C<AA?(SKz<i?NGe-x9JM-3=Su6^SPQNcODlj_zxX8ShX{$t< zMB4xFpZ-haN#rr@Wnf@(U|?X7U|?WpU|^1CP*h@I_`<*-p`^gDfPs-gfa5L01BmY- zWXUGKDhO+Mk_P!3xlrPtkpUe4pd<i~e+3qW?~DurhZz|JjxsU`9K?f<Bgvg)WDq#b z$RKcbfHA{9B>2JmhkymczE7_^3csi`2nc8}2$(Q22uxTk^_)RL(UT*A?L^~ejt&8L zc@KsR1`Yj-yi0~>%tL&I5&uk(_-A53<bS?144O<A7(NL7`1xGQQ`(C`f#Ct;!HG_P zE=qcKxWh2RzQ4~IPcj~w<@Eb<fjcN%4=^w&=rA!T)MzpYFfgzvfH0UXz@oqa!VC-y z1@7D)j31)@Fu1?}%-V2ZQ-M1J12hj_FkoU(U}0lWI4Z~>5X;OUuvLgbAUuqLfsG+3 zVD;vN-~x390T8=QhMB1W$_`OlG`B;YL4cJZDBxb|mkf}7KeirlWAR}17TDVC#C(Cp zn?al5!VGtTy&$)NFeoJ0JlH)srMd-9@}HCt*y<^OtPUhUTro!cGehE^87cljVFbdU zFc8?v?xS46pv`&l|M#o^S-lywnJ%z+Fg#$`�_iAh6ef8B&XIfa1VgU@L<*^92@9 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 A7XSbN literal 0 HcmV?d00001 diff --git a/build/ring_250MHz.bin b/build/ring_250MHz.bin new file mode 100644 index 0000000000000000000000000000000000000000..91c057ebb9b088a308b9f23505ebf975e8adbc03 GIT binary patch literal 10620 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 a5Lu|mAiycjAn;Y5LExbRgMcM7g8%>@<0L`= literal 0 HcmV?d00001 diff --git a/build/ring_250MHz.elf b/build/ring_250MHz.elf new file mode 100644 index 0000000000000000000000000000000000000000..51a5ffbfc740f10fbaa17a8182e161ef19d98ea6 GIT binary patch literal 42520 zcmb<-^>JflWMqH=CI$@#5bq@;gMbMG1B1aL1_lNu238XW1qNmY4F*XD39vka09Xfz z6cEs0U;trukdOcaSpI+m1H%CZ1_c2P27w$#1_lsDmN#HxU@%}}Pyk_&wkymG3~V3< z$V3o5ibq3WGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!ns22iTjl2~VA`)g~ zFe!F8&q%nDAdwi6sOQa~I5UAsF*1=+@q^OL0Bujn1V+V~38o4RA6$MgDNS$^xxl6< zna1$J<cDM)BZ#FSktUVK@ImK?WF82zDlmM||G}up;q>z&$Si43$pi+)$OI`*X%9xQ zS+5l((-weqeh~TrQX%Fk0+nIh!=S-%fx%tKL)eoef%!zkXO0dIcjm1#vse@uoqk_n zRA6-aaglj1(^iQziM0RUKmC`;lgMM*%fP_oz`(#D!N9=Iz`z{Ops2*a@P&avLP>#P z0Rtn00LNQ~2gm_evdOQCL4if#J0pX@VMYdlql^p!2l3$JNOC6`83ax<G6<X<V9c-& z34ZYYAz;C<@6+p!!Y}F!pm7-i6D9_M35%tkGbku}awM>wX#C94A>c0W!H~hAp?{Hg z3Evq8O{NPBAB2AVd@kiF?Zu$L@PP5)M5jL&B|SUbVVGgx-{*`c84t~J`hB^;9W<tM zfPq0lhlxR<MiVp=#G=5!zye_luqZHqFarZafjhSc<A<m}4DRngvo;*qRN&6Q0F8qS zpm84-HU@>Gf(!z&%nSlsg%||F!$4y|K>@2bCj=L$GYGIT1O>FoFf%nk*&#}c=60wv z2(U5)1>8&hk^!>&$JPUGEFP@h0$ZD%m@lw+GiWnhnBgw47vwe&2E{j<2fHVyRJXuM z{*w{{TRjDEsT0`B?xS46pv`&l|M#o^S-lywnJ%z+Fg#$`�_iAh6efnLz<$9tX$` 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 K6i5z)Vd?<7fL&Ao literal 0 HcmV?d00001 diff --git a/build/ring_250MHz.uf2 b/build/ring_250MHz.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..53bfaf8ef33763ae20b2bcbcf0e774c038733cca GIT binary patch literal 21504 zcmWG_GvW#ljGf1zzyJaQ42&R(fkBIbfg$XF_Y;P#M&61F5eYLgm=rslXC&N6kVuS3 z)bnOgoSDF+7@5eZ_(5rAfVQV(0;A&01XBfu4=z8LlqNWdTwqg_Ok?<9@<TF@5yVoE zNRvuq_@MJcG7kh<6&OC~|6o+)aQb->WR|q2WCDX?WP+5Zv<D;Dtk;T?X$wF)KM4H* zsSxuNfyyxMVbEZ>z~C<AA?(SKz<i?NGe-x9JM-3=Su6^SPQNcODlj_zxX8ShX{$t< zMB4xFpZ-haN#rr@Wnf@(U|?X7U|?WpU|^1CP*h@I_`<*-p`^gDfPs-gfa5L01BmY- zWXUGKDhO+Mk_P!3xlrPtkpUe4pd<i~e+3qW?~DurhZz|JjxsU`9K?f<Bgvg)WDq#b z$RKcbfHA{9B>2JmhkymczE7_^3csi`2nc8}2$(Q22uxTk^_)RL(UT*A?L^~ejt&8L zc@KsR1`Yj-yi0~>%tL&I5&uk(_-A53<bS?144O<A7(NL7`1xGQQ`(C`f#Ct;!HG_P zE=qcKxWh2RzQ4~IPcj~w<@Eb<fjcN%4=^w&=rA!T)MzpYFfgzvfH0UXz@oqa!VC-y z1@7D)j31)@Fu1?}%-V2ZQ-M1J12hj_FkoU(U}0lWI4Z~>5X;OUuvLgbAUuqLfsG+3 zVD;vN-~x390T8=QhMB1W$_`OlG`B;YL4cJZDBxb|mkf}7KeirlWAR}17TDVC#C(Cp zn?al5!VGtTy&$)NFeoJ0JlH)srMd-9@}HCt*y<^OtPUhUTro!cGehE^87cljVFbdU zFc8?v?xS46pv`&l|M#o^S-lywnJ%z+Fg#$`�_iAh6ef8B&XIfa1VgU@L<*^92@9 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 A=>Px# literal 0 HcmV?d00001 diff --git a/ring.RP2040PIO.c b/ring.RP2040PIO.c new file mode 100644 index 0000000..4b1513b --- /dev/null +++ b/ring.RP2040PIO.c @@ -0,0 +1,32 @@ +// +// ring.RP2040PIO.c +// RP2040 ring oscillator test with PIO +// connect P1 and P2 +// +// Quentin Bolsee 12/27/22 +// +// This work may be reproduced, modified, distributed, +// performed, and displayed for any purpose, but must +// acknowledge this project. Copyright is retained and +// must be preserved. The work is provided as is; no +// warranty is provided, and users accept all liability. +// + +#include "pico/stdlib.h" +#include "hardware/pio.h" +#include "hardware/clocks.h" +#include "hardware/structs/sio.h" +#include "ring.RP2040PIO.pio.h" + +#define IN_PIN 1 +#define OUT_PIN 2 + +int main() { + // set_sys_clock_khz(133000, false); + set_sys_clock_khz(250000, false); + + PIO pio = pio0; + uint offset = pio_add_program(pio, &ring_program); + uint sm = pio_claim_unused_sm(pio, true); + ring_program_init(pio, sm, offset, IN_PIN, OUT_PIN); +} diff --git a/ring.RP2040PIO.pio b/ring.RP2040PIO.pio new file mode 100644 index 0000000..87deae0 --- /dev/null +++ b/ring.RP2040PIO.pio @@ -0,0 +1,40 @@ +// +// ring.RP2040PIO.pio +// RP2040 ring oscillator test with PIO +// connect P1 and P2 +// +// Quentin Bolsee 12/27/22 +// +// This work may be reproduced, modified, distributed, +// performed, and displayed for any purpose, but must +// acknowledge this project. Copyright is retained and +// must be preserved. The work is provided as is; no +// warranty is provided, and users accept all liability. +// + +.program ring + mov pins, !pins +.wrap + + +% c-sdk { +static inline void ring_program_init(PIO pio, uint sm, uint offset, uint pin_in, uint pin_out) { + pio_sm_config c = ring_program_get_default_config(offset); + + sm_config_set_in_pins(&c, pin_in); + sm_config_set_out_pins(&c, pin_out, 1); + + // Set this pin's GPIO function (connect PIO to the pad) + pio_gpio_init(pio, pin_in); + pio_gpio_init(pio, pin_out); + + // Set the pin direction to output at the PIO + pio_sm_set_consecutive_pindirs(pio, sm, pin_in, 1, false); + pio_sm_set_consecutive_pindirs(pio, sm, pin_out, 1, true); + + // Load our configuration, and jump to the start of the program + pio_sm_init(pio, sm, offset, &c); + // Set the state machine running + pio_sm_set_enabled(pio, sm, true); +} +%} -- GitLab