Mám takový problém A/D převodník používat umím ale jak ho nastavit aby po sobě (třeba každou 1ms) střídal vstupy (ADC0-ADC7) a zapsal si každou hodnotu kterou změřil ? díky za nějaký nástřel v cčku
![Smile :)](./images/smilies/icon_smile.gif)
Moderátor: Moderátoři
Kód: Vybrat vše
uint8_t buff[8];
volatile uint8_t int_buff[8];
volatile uint8_t int_i;
// every 1 ms
ISR TCNT0_OVF
{
int_buff[int_i] = adc_get_value();
int_i++;
int_i = int_i & 0x03;
adc_set_channel(int_i); // [edit1, přepnutí kanálu až po převodu]
}
setup()
{
adc_setup();
adc_set_channel(0);
tcnt0_setup();
interrupt_setup();
sei();
}
loop()
{
cli();
memcpy( &buff , &int_buff, 8);
sti();
printf("ADC0=%d\n", buff[0]);
printf("ADC1=%d\n", buff[1]);
printf("ADC3=%d\n", buff[3]);
}