diff --git a/raven_spn/raven_spn b/raven_spn/raven_spn index cc7e100..f05de60 100755 Binary files a/raven_spn/raven_spn and b/raven_spn/raven_spn differ diff --git a/raven_spn/src/init.h b/raven_spn/src/init.h index b4ee8df..fa4d3e7 100644 --- a/raven_spn/src/init.h +++ b/raven_spn/src/init.h @@ -66,6 +66,17 @@ void wait_for_spn2_interrupt() { spn2_hw_interrupt=true; } +void wait_for_spn_interrupts() { + if(spn1_hw_interrupt || spn2_hw_interrupt) { + do{ + asm("wfi"); + asm("nop"); + }while(spn1_hw_interrupt || spn2_hw_interrupt); + } + spn1_hw_interrupt=true; + spn2_hw_interrupt=true; +} + /*!\brief initializes platform * */ diff --git a/raven_spn/src/raven_spn.cpp b/raven_spn/src/raven_spn.cpp index 4c1875a..0717b0a 100644 --- a/raven_spn/src/raven_spn.cpp +++ b/raven_spn/src/raven_spn.cpp @@ -97,8 +97,7 @@ int main() { for (int k = 0; k < iterations*step; k+=step) { run_xspn1(in_addr, out_addr1, step, in_beats, out_beats); run_xspn2(in_addr, out_addr2, step, in_beats, out_beats); - wait_for_spn1_interrupt(); - wait_for_spn2_interrupt(); + wait_for_spn_interrupts(); printf("XSPN finished\n"); spn_checker::offset_reg() = k; spn_checker::length_reg() = step;