diff --git a/preload/apps/ecg/__init__.py b/preload/apps/ecg/__init__.py
index bd589238c1acff73d8cdf60b518b1919faa31b16..e3aeede42a5312433c0dcc7cfffc35b0d4283f38 100644
--- a/preload/apps/ecg/__init__.py
+++ b/preload/apps/ecg/__init__.py
@@ -113,6 +113,8 @@ def detect_pulse(num_new_samples):
             q_spike = -ecg_rate
             if pulse < 30 or pulse > 210:
                 pulse = -1
+            elif write > 0 and "pulse" in config.get_option("Log"):
+                write_pulse()
             # we expect the next r-spike to be at least 60% as high as this one
             r_threshold = (cur * 3) // 5
         elif samples_since_last_pulse > 2 * ecg_rate:
@@ -131,7 +133,7 @@ def callback_ecg(datasets):
         detect_pulse(len(datasets))
 
     # buffer for writes
-    if write > 0:
+    if write > 0 and "graph" in config.get_option("Log"):
         for value in datasets:
             filebuffer.extend(struct.pack("h", value))
             if len(filebuffer) >= FILEBUFFERBLOCK:
@@ -141,11 +143,36 @@ def callback_ecg(datasets):
     if update_screen >= DRAW_AFTER_SAMPLES:
         draw_histogram()
 
+def write_pulse():
+    global write, pause_screen
+    # write to file
+    lt = utime.localtime(write)
+    filename = "/pulse-{:04d}-{:02d}-{:02d}_{:02d}{:02d}{:02d}.log".format(*lt)
+
+    # write stuff to disk
+    try:
+        f = open(filename, "ab")
+        print(utime.time(), pulse)
+        f.write(struct.pack("h", utime.time(), pulse))
+        f.close()
+    except OSError as e:
+        print("Please check the file or filesystem", e)
+        write = 0
+        pause_screen = -1
+        disp.clear(COLOR_BACKGROUND)
+        disp.print("IO Error", posy=0, fg=COLOR_TEXT)
+        disp.print("Please check", posy=20, fg=COLOR_TEXT)
+        disp.print("your", posy=40, fg=COLOR_TEXT)
+        disp.print("filesystem", posy=60, fg=COLOR_TEXT)
+        disp.update()
+        close_sensor()
+    except:
+        print("Unexpected error, stop writing logfile")
+        write = 0
 
 def write_filebuffer():
-    global write, filebuffer
+    global write, filebuffer, pause_screen
     # write to file
-    chars = ""
     lt = utime.localtime(write)
     filename = "/ecg-{:04d}-{:02d}-{:02d}_{:02d}{:02d}{:02d}.log".format(*lt)
 
@@ -166,7 +193,7 @@ def write_filebuffer():
         disp.update()
         close_sensor()
     except:
-        print("Unexpected error, stop writeing logfile")
+        print("Unexpected error, stop writing logfile")
         write = 0
 
     filebuffer = bytearray()
diff --git a/preload/apps/ecg/settings.py b/preload/apps/ecg/settings.py
index e6da4e4b1865a6c151770345f2b19d47bf5f413f..9d005bb2ce504d0c3dc61e2092ad6dc27a25f6be 100644
--- a/preload/apps/ecg/settings.py
+++ b/preload/apps/ecg/settings.py
@@ -19,7 +19,6 @@ class Settings(simple_menu.Menu):
             self.options[value[0]] = next(value[1])
 
     def entry2name(self, value):
-        print(value, value[0])
         if value[0]=="return":
             return value[0]
         else:
@@ -86,5 +85,14 @@ def ecg_settings():
                 ]
             )
     ))
+    config.add_option(("Log", 
+            itertools.cycle(
+                [
+                    ("full", {"graph", "pulse"}),
+                    ("graph", {"graph"}),
+                    ("pulse", {"pulse"}),
+                ]
+            )
+    ))
 
     return config