diff --git a/src/audio.h b/src/audio.h index e48c7066d..b61fda3aa 100644 --- a/src/audio.h +++ b/src/audio.h @@ -161,25 +161,6 @@ void audioDefevent(uint8_t e); #define AUDIO_MIX_WARNING_1() audioDefevent(AU_MIX_WARNING_1) #define AUDIO_MIX_WARNING_3() audioDefevent(AU_MIX_WARNING_3) -#if defined(PCBSTD) -#define AUDIO_HEARTBEAT() \ - if (audio.toneTimeLeft > 0) { \ - static uint8_t toneCounter; \ - toneCounter += audio.toneFreq; \ - if ((toneCounter & 0x80) == 0x80) \ - PORTE |= (1 << OUT_E_BUZZER); \ - else \ - PORTE &= ~(1 << OUT_E_BUZZER); \ - } \ - static uint8_t cnt10ms = 77; \ - if (cnt10ms-- == 0) \ - cnt10ms = 77; \ - else \ - return; \ - audio.heartbeat() -#else -#define AUDIO_HEARTBEAT() \ - audio.heartbeat() -#endif +#define AUDIO_HEARTBEAT() audio.heartbeat() #endif // audio_h diff --git a/src/open9x.cpp b/src/open9x.cpp index 4269c3ca0..e528c5136 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -1776,7 +1776,23 @@ ISR(TIMER0_COMP_vect, ISR_NOBLOCK) //10ms timer sei(); - AUDIO_HEARTBEAT(); +#if defined (PCBSTD) && defined (AUDIO) + if (audio.toneTimeLeft > 0) { + static uint8_t toneCounter; + toneCounter += audio.toneFreq; + if ((toneCounter & 0x80) == 0x80) + PORTE |= (1 << OUT_E_BUZZER); + else + PORTE &= ~(1 << OUT_E_BUZZER); + } + + static uint8_t cnt10ms = 77; // execute 10ms code once every 78 ISRs + if (cnt10ms-- == 0) { // BEGIN { ... every 10ms ... } + // Begin 10ms event + cnt10ms = 77; +#endif + + AUDIO_HEARTBEAT(); #ifdef DEBUG // Record start time from TCNT1 to record excution time @@ -1801,6 +1817,10 @@ ISR(TIMER0_COMP_vect, ISR_NOBLOCK) //10ms timer g_time_per10 = dt2 - dt; // NOTE: These spike to nearly 65535 just now and then. Why? :/ #endif +#if defined (PCBSTD) && defined (AUDIO) + } // end 10ms event +#endif + cli(); #if defined (PCBV4) TIMSK2 |= (1<