From 5d96b9005a0a0784c830d2c6c88961591398a675 Mon Sep 17 00:00:00 2001
From: Sam Calisch <s.calisch@gmail.com>
Date: Wed, 31 May 2017 13:00:16 -0400
Subject: [PATCH] added nrf52

---
 nrf52/index.html        |  72 ++++++++++++++++++++++++++++++++++++++++
 nrf52/nrf52-arduino.png | Bin 0 -> 5556 bytes
 nrf52/nrf52.png         | Bin 0 -> 7483 bytes
 nrf52/ring.ino          |  14 ++++++++
 ring.json               |  12 ++++++-
 5 files changed, 97 insertions(+), 1 deletion(-)
 create mode 100644 nrf52/index.html
 create mode 100755 nrf52/nrf52-arduino.png
 create mode 100755 nrf52/nrf52.png
 create mode 100644 nrf52/ring.ino

diff --git a/nrf52/index.html b/nrf52/index.html
new file mode 100644
index 0000000..77fe776
--- /dev/null
+++ b/nrf52/index.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+<style>
+pre code {
+  background-color: #eee;
+  border: 1px solid #999;
+  display: block;
+  padding: 20px;
+}
+</style>
+
+
+</head>
+<body>
+
+<h1>NRF52</h1>
+
+<figure>
+<img src='nrf52.png'>
+<figcaption>Ring oscillator with nrf52.</figcaption>
+</figure>
+
+<p>This ring oscillator runs on the NRF52 BLE SOC using the Adafruit feather development board.  The NRF52 has an ARM Cortex M4F running at 64 MHz with built in BLE radio.  An arduino sketch for the oscillator is available <a href='ring.ino'>here</a>, or visible below.</p>
+
+<pre>
+<code>
+const int pin_in = g_ADigitalPinMap[25];
+const int mask_in = 1 << pin_in;
+const int pin_out = g_ADigitalPinMap[26];
+const int mask_out = 1 << pin_out;
+
+void setup() {
+  pinMode(pin_out, OUTPUT);
+  pinMode(pin_in, INPUT);
+  while(1){
+     NRF_GPIO->IN & mask_in ? NRF_GPIO->OUTCLR = mask_out : NRF_GPIO->OUTSET = mask_out;
+  }
+}
+
+void loop() {}
+</code>
+</pre>
+
+<p>Note: This test was run on a the Adafruit Feather Dev board, which uses the Raytac MDBT42Q module, incorporating the NRF52.  The module retails for $7, the development board retails $24.  Other (untested) modules are available for a lower price from Fanstel.</p>
+
+<p>With the generic Arduino library calls, the ring oscillator is much slower:</p>
+
+<figure>
+<img src='nrf52-arduino.png'>
+<figcaption>Ring oscillator with nrf52 using Arduino library calls.</figcaption>
+</figure>
+
+<p>The code for this is below:</p>
+
+<pre>
+<code>
+void setup() {
+  pinMode(PIN_WIRE_SDA, OUTPUT);
+  pinMode(PIN_WIRE_SCL, INPUT);
+}
+ 
+void loop() {
+  digitalWrite(PIN_WIRE_SDA, 1-digitalRead(PIN_WIRE_SCL)); 
+}
+</code>
+</pre>
+
+<p><a href='../index.html'>Back</a></p>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/nrf52/nrf52-arduino.png b/nrf52/nrf52-arduino.png
new file mode 100755
index 0000000000000000000000000000000000000000..aff63bb9a2221eb242894c3ade53d201dd9b08af
GIT binary patch
literal 5556
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

literal 0
HcmV?d00001

diff --git a/nrf52/nrf52.png b/nrf52/nrf52.png
new file mode 100755
index 0000000000000000000000000000000000000000..cbc9b44316cafbac032decf50bce4c302b225296
GIT binary patch
literal 7483
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
a!>czU@g+acrZO-vFnGH9xvX<aXaWFhh8C^>

literal 0
HcmV?d00001

diff --git a/nrf52/ring.ino b/nrf52/ring.ino
new file mode 100644
index 0000000..bdb995e
--- /dev/null
+++ b/nrf52/ring.ino
@@ -0,0 +1,14 @@
+const int pin_in = g_ADigitalPinMap[25];
+const int mask_in = 1 << pin_in;
+const int pin_out = g_ADigitalPinMap[26];
+const int mask_out = 1 << pin_out;
+
+void setup() {
+  pinMode(pin_out, OUTPUT);
+  pinMode(pin_in, INPUT);
+  while(1){
+     NRF_GPIO->IN & mask_in ? NRF_GPIO->OUTCLR = mask_out : NRF_GPIO->OUTSET = mask_out;
+  }
+}
+
+void loop() {}
\ No newline at end of file
diff --git a/ring.json b/ring.json
index f8a07d2..7ff1c8b 100644
--- a/ring.json
+++ b/ring.json
@@ -150,6 +150,16 @@
 			"ic_price":0.00,
 			"ic_sales_link":"",
 			"ring_period":11000000
-		}			
+		},
+		{
+			"name":"NRF52",
+			"serial_number":"",
+			"subdirectory_path":"nrf52",
+			"dev_board_price":7.00,
+			"dev_board_sales_link":"",
+			"ic_price":3.00,
+			"ic_sales_link":"",
+			"ring_period":377
+		}				
 	]
 }
\ No newline at end of file
-- 
GitLab