logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][C] - Woltomierz na LCD. Dziwne działanie ADC.

dawidus 21 Paź 2012 19:12 2061 5
  • #1 11435532
    dawidus
    Poziom 20  
    Witam,
    problem polega na tym, że po przekroczeniu wartości 255 na ADC co u mnie odpowiada 8,6V wartości pobierane z ADC nie zmieniają się aż do osiągnięcia wartości ok 280.
    To samo ok 743 do 768.

    Napięcie na wejściu ADC zmienia się ale odczytywane wartości już nie.
    Być może problemem jest:
    return ADCW;  	

    które może zwraca 8 bitów zamiast 10?
    Wszędzie zalecają pobieranie osobno bitów z ADCL i ADCH.

    Podłączenie wygląda w ten sposób, że do ADC0 jest podłączone przez dzielnik napięcie z zasilacza. Jest też kondensator 47p do masy.

    To jest kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #3 11435711
    excray
    Poziom 41  
    dawidus napisał:
    return ADCW; - które może zwraca 8 bitów zamiast 10?

    Dziwne rzeczy piszesz. Jak u mnie ta komenda pobiera cały rejestr ADC, oba bajty.
    kozak_sc napisał:
    Odczyt z ADC : After the conversion is complete (ADIF is high), the conversion result can be found in the ADC Result Registers (ADCL, ADCH).
    Należy też pamiętać o odpowiedniej sekwencji odczytu rejestrów ADCH i ADCL.

    Masz rację ale tym się zajmuje kompilator. Jak on czyta cały rejestr (swoją drogą dawidus po co piszesz ADCW skoro wystarczy ADC) to kompilator sam dba o to aby w asemblerze najpierw odczytać ADCL a później ADCH.
  • #4 11435758
    dawidus
    Poziom 20  
    O kolejności odczytu już doczytałem wcześniej.
    Wartości do 1023 zwraca więc 10bitowa liczba to jest.

    W czym w takim razie problem z tymi "dziurami w odczycie"?
    Napięcie podawane na ADC zmieniam płynnie co niestety nie powoduje np po przekroczeniu wartości 255 dalszego jej wzrostu. Dopiero po zmianie napięcia mierzonego o ponad 0,7V wartość sczytana z ADC "wskakuje" na 280.

    Problem ten zauważyłem tylko po przekroczeniu ok 255 oraz ok 743.
  • Pomocny post
    #5 11440363
    sweter_007
    Poziom 14  
    Niech kolega poda schemat układu.
  • #6 11442115
    dawidus
    Poziom 20  
    Sprawa się rozwiązała.
    Zmniejszenie taktowania z 8MHz na 1MHz załatwiło sprawę.
    Dziękuję za zainteresowanie tematem.
    Pozdrawiam.
REKLAMA