Mógłbym poprosić o najprostrzy kawałek kodu w C aby wyzwolić jeden raz konwersję AC i zapisać wynik do zmiennej?
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam
#include...
...
...
//kwarc 3,6864MHz
...
...
volatile unsigned int koniec=0;
volatile unsigned long int adc;
...
...
int main(void)
{
sei();
for(;;)
{
ADMUX = (1 << REFS1) | (1 << REFS0); //kanał ADC0, wew ref 2,56V
ADCSRA = (1 << ADEN) | (1 << ADSC) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1); //pojedyncza konwersja, aktywne przerwanie, prescal 64, clock input 56,7kHz
while(koniec!=1) {}
koniec=0;
adc = (adc * 2560) / 1024); //przeliczenie na wynik w mV
}
return 0;
}
SIGNAL (SIG_ADC) //obsługa przerwania od A/C
{
adc = ADC;
koniec=1;
}
janbernat napisał:Jeśli w głownej pętli sprawdzasz czy konwersja się zakończyła to możesz sprawdzić czy ADIF jest ustawiony, odczytać rejestry, skasować ADIF wpisując 1 i sprawdzać w głównej pętli ponownie.
Cytat:• Bit 6 – ADSC: ADC Start Conversion
In Single Conversion mode, write this bit to one to start each conversion. In Free Running mode,
write this bit to one to start the first conversion. The first conversion after ADSC has been written
after the ADC has been enabled, or if ADSC is written at the same time as the ADC is enabled,
will take 25 ADC clock cycles instead of the normal 13. This first conversion performs initializa-
tion of the ADC.
ADSC will read as one as long as a conversion is in progress. When the conversion is complete,
it returns to zero. Writing zero to this bit has no effect.
janbernat napisał:Można.
Każdy sposób ma swoje zady i walety.