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

[M32][BAS] ATmega32 przetwornik A/D trzy czujniki-dziwne zachowanie

arti1987rr 06 Cze 2012 00:18 1204 5
REKLAMA
  • #1 10972290
    arti1987rr
    Poziom 9  
    Witam
    Problem wygląda tak:
    Podłączając 3 sztuki LM35 odczytuje mi wartość tylko z jednego, tak samo gdy podpinam 2 sztuki LM35 ,zawsze tylko jeden jest widziany (są widziane ,ale maja wartość 0). Co może być tego przyczyną ? Dlaczego nie chce odczytać wszystkich wartości na raz ?

    Konfiguracja przetwornika wygląda następująco:

    "Config Adc = Single , Prescaler = Auto , Reference = Internal "
    "Start ADC"
    "zmianna1=Getadc(0)"
    "zmianna2=Getadc(1)"
    "zmianna3=Getadc(2)"

    I oczywiście odpowiednie obliczenia dla temperatury.
    Kod jest dość rozbudowany wiec zamieściłem tylko najważniejsze punkty pomijając np. konfiguracje LCD itd..
  • REKLAMA
  • #2 10972411
    LordBlick
    VIP Zasłużony dla elektroda
    Przetwornik jest jeden, potrzebuje określony w datasheet czas do namysłu-pomiaru, gotowość do pomiaru sygnalizuje flaga ADIF rejestru ADCSRA, a kanałów przełączanych na poszczególne wejścia jest więcej.
  • REKLAMA
  • REKLAMA
  • #4 10972837
    arti1987rr
    Poziom 9  
    Niestety każdorazowe załączanie przetwornika ze zwłoką czasową na pomiar nie pomogło. Gdy brak czujnika wyświetlają się zera ,gdy zaś czujniki są ,wtedy wyświetlają się puste miejsca i prawidłowo wyświetla się pomiar tylko z najstarszego przetwornika który jest wpięty na 3 możliwe.
  • REKLAMA
  • #5 10972930
    LordBlick
    VIP Zasłużony dla elektroda
    To nie ma być jakaś konkretna zwłoka czasowa, tylko czekasz na samodzielne ustawienie bitu ADIF rejestru ADCSRA. Poza tym jak o czymś dyskutujemy, to pokazuj kod po zmianie.
  • #6 10976428
    arti1987rr
    Poziom 9  
    Rozwiązałem problem . Przyczyną był zły zapis wyników do zmiennej zamiast napisać :
    "temp1 as string*6"
    "temp1 as string*6"
    "temp1 as string*6"

    napisałem :
    "temp1 as string*4"
    "temp1 as string*4"
    "temp1 as string*4"
REKLAMA