diff --git a/electronics/.pulseGenerator_v1.brd.lck b/electronics/.pulseGenerator_v1.brd.lck
index 3e6cd101f430bf040fffe87ff99f59cee70552b4..d3bb2bae626443f231b39d04e8a23cf6bddf2221 100644
--- a/electronics/.pulseGenerator_v1.brd.lck
+++ b/electronics/.pulseGenerator_v1.brd.lck
@@ -1,3 +1,3 @@
 Will
 Will-RMBP
-14.03.2018 15:55.50
+20.03.2018 17:37.16
diff --git a/electronics/.pulseGenerator_v1.sch.lck b/electronics/.pulseGenerator_v1.sch.lck
index 3e6cd101f430bf040fffe87ff99f59cee70552b4..d3bb2bae626443f231b39d04e8a23cf6bddf2221 100644
--- a/electronics/.pulseGenerator_v1.sch.lck
+++ b/electronics/.pulseGenerator_v1.sch.lck
@@ -1,3 +1,3 @@
 Will
 Will-RMBP
-14.03.2018 15:55.50
+20.03.2018 17:37.16
diff --git a/firmware/hello.128a4u.dac.c b/firmware/hello.128a4u.dac.c
new file mode 100644
index 0000000000000000000000000000000000000000..fa2b07cc25a67f897b8278f7300da1955d6c88ba
--- /dev/null
+++ b/firmware/hello.128a4u.dac.c
@@ -0,0 +1,43 @@
+//
+// hello.dac.8E5.c
+//
+// 8E5 dac
+//
+
+#include <avr/io.h>
+#include <util/delay.h>
+#include <avr/pgmspace.h>
+
+
+uint16_t lookup[128] = {
+2047, 2147, 2247, 2347, 2446, 2544, 2641, 2736, 2830, 2922, 3011, 3099, 3184, 3266, 3345, 3421, 3494, 3563, 3629, 3691, 3749, 3802, 3852, 3897, 3938, 3974, 4005, 4032, 4054, 4071, 4084, 4091, 4094, 4091, 4084, 4071, 4054, 4032, 4005, 3974, 3938, 3897, 3852, 3802, 3749, 3691, 3629, 3563, 3494, 3421, 3345, 3266, 3184, 3099, 3011, 2922, 2830, 2736, 2641, 2544, 2446, 2347, 2247, 2147, 2047, 1947, 1847, 1747, 1648, 1550, 1453, 1358, 1264, 1172, 1083, 995, 910, 828, 749, 673, 600, 531, 465, 403, 345, 292, 242, 197, 156, 120, 89, 62, 40, 23, 10, 3, 0, 3, 10, 23, 40, 62, 89, 120, 156, 197, 242, 292, 345, 403, 465, 531, 600, 673, 749, 828, 910, 995, 1083, 1172, 1264, 1358, 1453, 1550, 1648, 1747, 1847, 1947
+};
+
+int main(void) {
+   //
+   // main
+   //
+   uint16_t angle=0;
+   //
+   // set up clock
+   //
+   //OSC.CTRL = OSC_RC32MEN_bm; // enable 32MHz clock
+   //while (!(OSC.STATUS & OSC_RC32MRDY_bm)); // wait for clock to be ready
+   //CCP = CCP_IOREG_gc; // enable protected register change
+   //CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // switch to 32MHz clock
+
+   OSC.PLLCTRL = OSC_PLLFAC4_bm | OSC_PLLFAC3_bm; // 2 MHz * 24 = 48 MHz
+   OSC.CTRL = OSC_PLLEN_bm; // enable PLL
+   while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready
+   CCP = CCP_IOREG_gc; // enable protected register change
+   CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL
+
+   //set up dac
+   DACA.CTRLB = ( DACA.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc;
+   DACA.CTRLC = ( DACA.CTRLC & ~( DAC_REFSEL_gm | DAC_LEFTADJ_bm ) ) | DAC_REFSEL_AVCC_gc;
+   DACA.CTRLA = ( DACA.CTRLA & ~DAC_CH1EN_bm ) | DAC_CH0EN_bm | DAC_ENABLE_bm;
+   while(1){
+	DACA.CH0DATA = lookup[angle];
+	angle = (angle+1)%128;
+   }
+}
diff --git a/firmware/hello.128a4u.dac.make b/firmware/hello.128a4u.dac.make
new file mode 100644
index 0000000000000000000000000000000000000000..ada0b760929c2d560de81b5ee19c3e24a7999625
--- /dev/null
+++ b/firmware/hello.128a4u.dac.make
@@ -0,0 +1,19 @@
+PROJECT=hello.128a4u.dac
+SOURCES=$(PROJECT).c
+MMCU=avrxmega7
+F_CPU = 32000000
+TARGET = x128a4u
+PROGRAMMER= atmelice_pdi
+
+CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU)
+
+$(PROJECT).hex: $(PROJECT).out
+	avr-objcopy -O ihex $(PROJECT).out $(PROJECT).c.hex;\
+	avr-size --mcu=$(MMCU) --format=avr $(PROJECT).out
+ 
+$(PROJECT).out: $(SOURCES)
+	avr-gcc $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES)
+ 
+program: $(PROJECT).hex
+	avrdude -p $(TARGET) -c $(PROGRAMMER) -U flash:w:$(PROJECT).c.hex
+
diff --git a/readme.md b/readme.md
index 6cd9f290dba9dc7ac8326dcb1503b65a0affe7a3..f29049894ded7d2aada8fb613567bfb00540a1ea 100644
--- a/readme.md
+++ b/readme.md
@@ -74,7 +74,7 @@ My understanding of the waveform:
 - High-side gate drivers: [LM5107](http://www.ti.com/lit/ds/symlink/lm5107.pdf) [UCC27200A](https://www.digikey.com/product-detail/en/texas-instruments/UCC27201ADDAR/296-28428-1-ND/2638108)
   - I could get away with just using one of these (and using a low-side mosfet to do the discharge control). The problem with this is that then the workpiece and worktable are at high voltages whenever the machine is on. So I suspect I'll go with two...
 - Capacitor: [6.8uF conductive polymer](https://www.digikey.com/scripts/DkSearch/dksus.dll?Detail&itemSeq=254554510&uq=636564567701952216)
-- 3.3V switching regulator: https://www.digikey.com/scripts/DkSearch/dksus.dll?Detail&itemSeq=254578769&uq=636564653321122626
+- 3.3V switching regulator: https://www.digikey.com/scripts/DkSearch/dksus.dll?Detail&itemSeq=254721636&uq=636571622259993391
 - window comparator
   - http://www.ti.com/lit/ug/tidub01/tidub01.pdf
   - just need 1 x (4x) https://www.digikey.com/product-detail/en/texas-instruments/TLV1704AIPWR/296-38432-1-ND/5015597