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
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

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
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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
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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
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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
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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