Witam!
Znalazłem w sieci (niewykluczone, że na tym forum
) i trochę przerobiłem przykładowy program obsługujący przetwornik AC. Generalnie jego działanie sprowadza się do przetworzenia napięcia podawanego na ADC0 i wyświetlenia części wyników przetwarzania na porcie B.
Problem polega na tym, że program działa prawidłowo, ale tylko jeśli napięcie na ADC0 jest większe niż 2,2V. Poniżej tej wartości diody nie świecą w ogóle, niezależnie czy korzystam z VCC czy wewnętrznego napięcia 1,1V. Powyżej niej dla VCC diody prezentują jakąś wartość binarną wprost proporcjonalną do napięcia a dla 1,1V wszystkie się świecą.
Kod:
Schemat podłączenia (nie uwzględniłem ISP):
Korzystam z jakiejś gotowej płytki prototypowej. Programowałem na niej już ATTiny13 i nie miałem z tym problemów. Próbowałem na 2 procesorach, problem wystąpił na obydwu. Oba są najprawdopodobniej sprawne.
Co robię źle?
Znalazłem w sieci (niewykluczone, że na tym forum
Problem polega na tym, że program działa prawidłowo, ale tylko jeśli napięcie na ADC0 jest większe niż 2,2V. Poniżej tej wartości diody nie świecą w ogóle, niezależnie czy korzystam z VCC czy wewnętrznego napięcia 1,1V. Powyżej niej dla VCC diody prezentują jakąś wartość binarną wprost proporcjonalną do napięcia a dla 1,1V wszystkie się świecą.
Kod:
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/wdt.h>
long int value;
SIGNAL(SIG_ADC)
{
value = ADCH;
PORTB = (value>>2);
}
int main(void)
{
wdt_disable();
DDRB = 0b00011111;
ADMUX = 0b00100000;
ADCSRA = 0b11101101;
ADCSRB = 0b00000000;
DIDR0 = 0b00100000;
sei();
for(;;)
{ ;};
}
Schemat podłączenia (nie uwzględniłem ISP):
Korzystam z jakiejś gotowej płytki prototypowej. Programowałem na niej już ATTiny13 i nie miałem z tym problemów. Próbowałem na 2 procesorach, problem wystąpił na obydwu. Oba są najprawdopodobniej sprawne.
Co robię źle?