Configure LEDs
This commit is contained in:
parent
59dcbaf177
commit
18f405aa46
@ -44,7 +44,7 @@ void adc_init()
|
|||||||
TIM_OC1Init (TIM5, &TIM_OCInitStructure);
|
TIM_OC1Init (TIM5, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_SetCompare1(TIM5, 0xFFFF);
|
TIM_SetCompare1(TIM5, 0xFFFF);
|
||||||
TIM_ITConfig(TIM5, TIM_IT_CC1, ENABLE);
|
// Let's leave the interrupt disabled until we are done configuring everything
|
||||||
|
|
||||||
TIM_CCxCmd(TIM5, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM5, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
TIM_CCxNCmd(TIM5, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxNCmd(TIM5, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
@ -127,14 +127,23 @@ void adc_init()
|
|||||||
ADC_DMACmd(ADC1, ENABLE);
|
ADC_DMACmd(ADC1, ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void adc_start()
|
||||||
|
{
|
||||||
|
TIM_ITConfig(TIM5, TIM_IT_CC1, ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
void DMA2_Stream0_IRQHandler()
|
void DMA2_Stream0_IRQHandler()
|
||||||
{
|
{
|
||||||
int sample;
|
int sample;
|
||||||
|
int peaking;
|
||||||
|
|
||||||
DMA_ClearFlag(ADC_RX_DMA_STREAM, DMA_FLAG_TCIF0);
|
DMA_ClearFlag(ADC_RX_DMA_STREAM, DMA_FLAG_TCIF0);
|
||||||
|
|
||||||
sample = ((adc_buffer[0] + adc_buffer[1]) / 2) - 2048;
|
sample = ((adc_buffer[0] + adc_buffer[1]) / 2) - 2048;
|
||||||
|
peaking = (adc_buffer[0] < -640+2048) || (adc_buffer[0] > 520+2048);
|
||||||
|
peaking |= (adc_buffer[1] < -640+2048) || (adc_buffer[1] > 520+2048);
|
||||||
|
|
||||||
GotSample(sample);
|
GotSample(sample, peaking);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only for debugging. Currently disabled.
|
// Only for debugging. Currently disabled.
|
||||||
|
@ -11,5 +11,6 @@
|
|||||||
// TODO: Update the IRQ handler in adc.c when updating the stream / channel.
|
// TODO: Update the IRQ handler in adc.c when updating the stream / channel.
|
||||||
|
|
||||||
void adc_init();
|
void adc_init();
|
||||||
|
void adc_start();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -168,7 +168,9 @@ void ConfigureUART()
|
|||||||
|
|
||||||
void ConfigureLED()
|
void ConfigureLED()
|
||||||
{
|
{
|
||||||
ConfigureGPIO( LEDPIN, INOUT_OUT );
|
ConfigureGPIO(LED_RED, INOUT_OUT);
|
||||||
|
ConfigureGPIO(LED_GREEN, INOUT_OUT);
|
||||||
|
ConfigureGPIO(LED_BLUE, INOUT_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t GetGPIOFromString( const char * str )
|
uint8_t GetGPIOFromString( const char * str )
|
||||||
|
@ -50,18 +50,20 @@ void ConfigureGPIO( gpio gpio, int parameters );
|
|||||||
#ifdef STM32F30X
|
#ifdef STM32F30X
|
||||||
#define LEDPIN 0x18
|
#define LEDPIN 0x18
|
||||||
#elif defined( STM32F40_41xxx )
|
#elif defined( STM32F40_41xxx )
|
||||||
#define LEDPIN (16+14)
|
#define LEDPIN (16+13)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define LED_GREEN (LEDPIN+0)
|
||||||
|
#define LED_BLUE (LEDPIN+1)
|
||||||
|
#define LED_RED (LEDPIN+2)
|
||||||
|
|
||||||
void ConfigureUART();
|
void ConfigureUART();
|
||||||
void ConfigureLED();
|
void ConfigureLED();
|
||||||
|
|
||||||
void JumpToBootloader(void);
|
void JumpToBootloader(void);
|
||||||
|
|
||||||
#define LED_TOGGLE {GPIOOf(LEDPIN)->ODR^=(1<<((LEDPIN)&0x0f));}
|
#define LED_ON(p) GPIOOn(p)
|
||||||
#define LED_ON GPIOOn(LEDPIN)
|
#define LED_OFF(p) GPIOOff(p)
|
||||||
#define LED_OFF GPIOOff(LEDPIN)
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -25,12 +25,21 @@ int16_t sampbuff[CIRCBUFSIZE];
|
|||||||
volatile int samples;
|
volatile int samples;
|
||||||
|
|
||||||
//This gets called by the ADC/Microphone
|
//This gets called by the ADC/Microphone
|
||||||
void GotSample( int samp )
|
void GotSample(int samp, int peaking)
|
||||||
{
|
{
|
||||||
//printf("[GOT-SMP] %d\r\n", samp);
|
//printf("[GOT-SMP] %d\r\n", samp);
|
||||||
sampbuff[last_samp_pos] = samp;
|
sampbuff[last_samp_pos] = samp;
|
||||||
last_samp_pos = ((last_samp_pos+1)%CIRCBUFSIZE);
|
last_samp_pos = ((last_samp_pos+1)%CIRCBUFSIZE);
|
||||||
samples++;
|
samples++;
|
||||||
|
|
||||||
|
if (peaking) {
|
||||||
|
LED_ON(LED_RED);
|
||||||
|
} else if (samp > 128) {
|
||||||
|
LED_ON(LED_BLUE);
|
||||||
|
} else {
|
||||||
|
LED_OFF(LED_BLUE);
|
||||||
|
// Red LED reset in main loop
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Call this once we've stacked together one full colorchord frame.
|
//Call this once we've stacked together one full colorchord frame.
|
||||||
@ -107,10 +116,8 @@ int main(void)
|
|||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
|
|
||||||
RCC_GetClocksFreq( &RCC_Clocks );
|
RCC_GetClocksFreq( &RCC_Clocks );
|
||||||
|
|
||||||
ConfigureLED();
|
|
||||||
|
|
||||||
LED_OFF;
|
ConfigureLED();
|
||||||
|
|
||||||
// SysTick end of count event each 10ms
|
// SysTick end of count event each 10ms
|
||||||
SysTick_Config( RCC_Clocks.HCLK_Frequency / 100);
|
SysTick_Config( RCC_Clocks.HCLK_Frequency / 100);
|
||||||
@ -129,10 +136,8 @@ int main(void)
|
|||||||
int this_samp = 0;
|
int this_samp = 0;
|
||||||
int wf = 0;
|
int wf = 0;
|
||||||
|
|
||||||
|
|
||||||
LED_ON;
|
|
||||||
|
|
||||||
int c = 1;
|
int c = 1;
|
||||||
|
LED_ON(LED_RED);
|
||||||
while (1) {
|
while (1) {
|
||||||
for (int a=0; a < NUM_LIN_LEDS; a++) {
|
for (int a=0; a < NUM_LIN_LEDS; a++) {
|
||||||
ledOut[a*3 + 0] = c/2;
|
ledOut[a*3 + 0] = c/2;
|
||||||
@ -143,17 +148,31 @@ int main(void)
|
|||||||
SendSPI2812(ledOut, NUM_LIN_LEDS);
|
SendSPI2812(ledOut, NUM_LIN_LEDS);
|
||||||
_delay_us(10*1000);
|
_delay_us(10*1000);
|
||||||
c++;
|
c++;
|
||||||
if (c==64)
|
if (c==16) {
|
||||||
|
LED_OFF(LED_RED);
|
||||||
|
LED_ON(LED_BLUE);
|
||||||
|
} else if (c==32) {
|
||||||
|
LED_OFF(LED_BLUE);
|
||||||
|
LED_ON(LED_GREEN);
|
||||||
|
} else if (c==48) {
|
||||||
|
LED_OFF(LED_GREEN);
|
||||||
|
} else if (c==64) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LED_OFF(LED_RED);
|
||||||
|
LED_OFF(LED_GREEN);
|
||||||
|
LED_OFF(LED_BLUE);
|
||||||
|
|
||||||
SendSPI2812(ledOut, NUM_LIN_LEDS);
|
SendSPI2812(ledOut, NUM_LIN_LEDS);
|
||||||
|
adc_start();
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
if( this_samp != last_samp_pos )
|
if( this_samp != last_samp_pos )
|
||||||
{
|
{
|
||||||
LED_OFF; //Use led on the board to show us how much CPU we're using. (You can also probe PB15)
|
LED_OFF(LED_GREEN); //Use led on the board to show us how much CPU we're using. (You can also probe PB15)
|
||||||
|
|
||||||
PushSample32( sampbuff[this_samp] ); //Can't put in full volume. (here was /2)
|
PushSample32( sampbuff[this_samp] ); //Can't put in full volume. (here was /2)
|
||||||
|
|
||||||
@ -164,10 +183,11 @@ int main(void)
|
|||||||
{
|
{
|
||||||
NewFrame();
|
NewFrame();
|
||||||
wf = 0;
|
wf = 0;
|
||||||
|
LED_OFF(LED_RED);
|
||||||
}
|
}
|
||||||
LED_ON;
|
LED_ON(LED_GREEN);
|
||||||
}
|
}
|
||||||
LED_ON; //Take up a little more time to make sure we don't miss this.
|
LED_ON(LED_GREEN); //Take up a little more time to make sure we don't miss this.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user