diff --git a/qemu/examples/spawn3.rs b/qemu/examples/spawn3.rs
index 54ea4daf9bd1f72dafefe3fd570415fcd7d97ea0..48c65eceeef105aed94459b99d3d56b7ecc53ba4 100644
--- a/qemu/examples/spawn3.rs
+++ b/qemu/examples/spawn3.rs
@@ -14,8 +14,8 @@ use core::pin::Pin;
 // use core::ptr;
 // use core::ptr::NonNull;
 // use core::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
+use core::sync::atomic::{compiler_fence, Ordering};
 use core::task::{Context, Poll, RawWaker, RawWakerVTable, Waker};
-
 use cortex_m_semihosting::{debug, hprintln};
 use panic_semihosting as _;
 
@@ -86,7 +86,18 @@ mod app {
 
     #[task(resources = [counter], priority = 2)]
     fn rt_task(cx: rt_task::Context) {
-        hprintln!("counter {}", cx.resources.counter).ok();
+        //hprintln!("counter {}", cx.resources.counter).ok();
+        // compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
+        compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
+    }
+
+    #[task(binds = UART1, resources = [counter], priority = 2)]
+    fn uart1(cx: uart1::Context) {
+        *cx.resources.counter += 1;
+        // compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
     }
 
     // RTIC requires that unused interrupts are declared in an extern block when