Uzyłem przycisku "szukaj" i to wielokrotnie.
Znalazłem mniej więcej taki kod, który podobno działa:
zmieniłem może 2 sprawy, ale nie maja one żadnego wpływu na pracę ADC.
Ogólnie dzieje się tak: po resecie proca jest nowy (zalezny od napięcia) wynik konwersji. Jak zmieniam napięcie w dalszej pracy nie ma efektu, natomiast po kolejnym resecie znowu odczytuje poprawną wartosć i cisza.
Proc: mega8
kompilator: avr-gcc
konfiguracja ADC na "free run"
aaa, jeszcze, wcześniej samodzielnie napisałem kod do obsługi ADC, ale wynik miałem ten sam :/
Znalazłem mniej więcej taki kod, który podobno działa:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
unsigned char bin8toBCD (unsigned char a)
{
unsigned char dziesiatki;
unsigned char jednosci;
unsigned char wynik;
jednosci = a%10;
dziesiatki = a/10;
dziesiatki = dziesiatki << 4;
wynik = jednosci | dziesiatki;
return (wynik);
}
ISR(ADC_vect)
{
volatile unsigned char liczba;
liczba = ADCL;
PORTD = bin8toBCD (liczba);
}
int main(void)
{
DDRD=0xff;
PORTD=0xff;
ADMUX = 0x40;
ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV(ADFR)|_BV(ADSC)|_BV(ADPS0)|_BV(ADPS1);
sei();
while(1)
{
_delay_ms(100);
}
}zmieniłem może 2 sprawy, ale nie maja one żadnego wpływu na pracę ADC.
Ogólnie dzieje się tak: po resecie proca jest nowy (zalezny od napięcia) wynik konwersji. Jak zmieniam napięcie w dalszej pracy nie ma efektu, natomiast po kolejnym resecie znowu odczytuje poprawną wartosć i cisza.
Proc: mega8
kompilator: avr-gcc
konfiguracja ADC na "free run"
aaa, jeszcze, wcześniej samodzielnie napisałem kod do obsługi ADC, ale wynik miałem ten sam :/
