From d994c95941de615c48350544b584b77501f05112 Mon Sep 17 00:00:00 2001 From: Jonathan Wyss Date: Tue, 26 Mar 2024 18:44:33 +0100 Subject: [PATCH] stabilise sample rate --- main.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/main.c b/main.c index 4a02df8..4b7e437 100644 --- a/main.c +++ b/main.c @@ -35,30 +35,32 @@ const float log_scale = 64./log(64./SCALE_FACTOR + 1.); int msec; - +uint16_t ticks; ISR(TIMER1_OVF_vect) { -if(msec<100) +if(ticks < 65000) { - msec++; + ticks++; } -else msec=0; +if(ticks > 65000) +{ + ticks=0; +} + } int main (void) { int i,i2; - //int colorb; - //int colora; int sum,avg; char sample[64]; - //char im[64]; char buff[64]; float fac_r=0.1; float fac_g=0.1; float fac_b=1; msec=0; + ticks=0; struct cRGB led_bar1[8]; //DDRB = (1< 1/ca30'000'00r avg = sum/64;//calculate bias for(i=0;i<64;i++) { @@ -139,6 +145,7 @@ int main (void) } } ws2812_setleds(led_bar1,8); + while(ticks<60){ asm("");}//workaround for stoping gcc optimizing } return 0; } @@ -148,7 +155,7 @@ return 0; void setupTimer(void) { clock_prescale_set(0); - TCCR1 = (1<