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

atmega8 - ADC: Niezgodne wyniki przy pomiarze napięcia przez UART

Alexkun 14 Mar 2014 14:00 1152 3
  • #1 13402816
    Alexkun
    Poziom 9  
    Witam

    Mam mały problem z ADC podłączyłem do portu PC5 + zasilacza, - zasilacza wpiąłem do masy układu, ustawiłem ADC na rozdzielczość 8 bitową oraz napięcie odniesienia AREF. W pętli głównej ustawiłem, żeby co 1s robił pomiar ADC i wynik wysyłał przez UART po bluetooth do mojego laptopa i tam w realtermie wyświetla mi otrzymane wartości. I wszystko niby ładnie wysyła tylko, że wartości które otrzymuje są dziwne. Mam ustawione np. 1,44V i dostaje w realtermie takie coś
    Cytat:
    128 128 128 64 128 128 64 128 128 192 128 192 192 192 128 192 128 0 128 128 192
    192 128 128 192 192 128 128 128 192 128 128 192 192 192 128 128 192 128 192 192
    128 128 128 128 128 192 192 192 128 192 128 192 192 192 128 128 128 128 128 192
    192 128 128 128 128 192 128 128 128 128 128 192 192 128 128 128 128 128 192 128
    128 128 128 128 128 192 192 192 128 192 192 128 128 128 192 128 128 128 192 128


    Zmienię np. na 2.02V na zasilaczu i dostaję coś takiego
    Cytat:
    0 192 0 0 192 0 0 0 64 0 0 0 0 64 0 0 192 192 0 64 0 0 0 0 0 0 0 64 0 192 192 0
    0 0 64 0 192 192 192 192 0 0 64 0 192 192 64 0 0 0 0 64 0 0 192 0 0 0 0 0 0 0 0
    192 192 0 192 0 0 0 0 0 0 0 0 0 0 192 0 0 192 0 192 0 0 0 192 0 0 0 0 0 0 0 0 0
    64 0 0 0 192 192 0 0 192 0 0 0 0 0 0 0 192 192 0 0 0 0 0 192 192 0 0 0 0 0 0 0 0
    192 0 0 0 64 64 0 0 0 0 0 0 0 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 192
    0 0 0 192 192 192 192 0 0 0 0 64 0 0 192 0 0 0 0 0 0 0 0 192 0 0 0 192 0 0 0 0 0
    0 0 0 0 0 192 0 0 192 0 0 192 0 0 0 0 192 0 0 64 64 0 0 192 0 0 0 0 192 0 0 0 0


    Nie mogę dojść co robię źle.
    Mój kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #2 13402870
    dondu
    Moderator na urlopie...
    Witaj.

    Ustawiasz wyrównywanie wyniku do lewej a wysyłasz następująco.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Zastanów się ile bitów ma rejestr UDR, a ile ADC i jak to się ma do wyrównania wyników do lewej.
  • #3 13402913
    Alexkun
    Poziom 9  
    Kurde faktycznie, a już myślałem, że spaliłem port czy coś, ale debil ze mnie.
    Wielkie dzięki Dondu.
  • #4 13402931
    dondu
    Moderator na urlopie...
    Alexkun napisał:
    Kurde faktycznie, a już myślałem ze spaliłem port czy coś ale debil ze mnie.
    Wielkie dzięki Dondu.

    Tak faktycznie to błąd występuje już w trakcie przekazania parametru do funkcji.
    Sprawdź poniższ kod w CManiaku: http://mikrokontrolery.blogspot.com/p/cmaniak-kompilator-jezyka-c-online.html

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    a znajdziesz swój wynik równy 64 :)
REKLAMA