Skocz do zawartości

ADC działa tylko dla 2 pomiarów


matt90

Pomocna odpowiedź

Witajcie, mam problem z odczytem ADC. Jak podepnę 2 czujniki to wszystko działa, jak podłączę trzeci to wszystko przestaje działać. Nie działają zarówno silniki jak i pozostałe elementy. Czujnik jest sprawny, ADC raczej dobrze skonfigurowane bo dla 2 czujników działa. Co może być powodem takich problemów? Procesor to Atmega8, odczyty z ADC realizuje w funkcji która cały czas odczytuje wartości

Link do komentarza
Share on other sites

Pytanie czy tylko chodzi o podpięcie czy zaprogramowanie?

Jak podpięcie to wiadomo - czujnik źle podpięty lub uszkodzony.

Jak zaprogramowanie to też jasne - błąd w kodzie.

No ale nie dałeś schematu, kodu itd. to jak mamy pomóc?

Link do komentarza
Share on other sites

Chodzi o zaprogramowanie 🙂

Oczywiście cała inicjalizacja, kasowanie MUX-ów jest. Problem pojawia się gdy wprowadzę linię

adc3= odczyt(3); 

jak jest zakomentowana wszystko działa. Próbowałem pod inne porty podłączyć, ale za każdym razem taki sam efekt

Link do komentarza
Share on other sites

1. Przecież to nie jest cały kod funkcji odczyt ( gdzie czytanie danych z ADC, return itd.?)

2. Brak reszty programu (chociażby szczątkowego). Z tego co dałeś nie widać co się dzieje w innym miejscu.

PS. Zrób tylko odczyt 1 i 3 - bez odczytu 2 - i zobacz czy wtedy działa...🙂

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nadal nie działa jak wyłącze odczyt z drugiego lub pierwszego kanału to nie działa ten czujnik podłączony do tego wejścia.

I do póki ustawiony mam odczyt z dwóch kanałów (obojętnie które) wszystko działa, jak włącze odczyt z trzeciego kanału nic się nie dzieje, silniki stoją

Link do komentarza
Share on other sites

Trochę masz pogmatwane to ustawianie bitów w ADMUX. Moim zdaniem bardziej naturalne byłoby zdefiniowanie gdzieś na początku stałej odpowiadającej za wybór referencji, np:

#define VREF_VCC _BV(REFS0)

a potem, przed startem przetwornika wpisywanie po prostu numeru kanału:

ADMUX = VREF_VCC + 2;

i masz wybrany kanał nr. 2.

Przecież nie zmieniasz zawartości ADMUX w wielu miejscach w programie, więc operatory |= nie są potrzebne. Panujesz nad zawartością tego rejestru i nie używasz pojedynczych bitów w różnych funkcjach.

Po zrobieniu pomiaru nie musisz też zerować numeru kanału i program trochę się upraszcza.

Mi w "case 1" brakuje instrukcji break co powoduje (w połączeniu z operatorami |=), że wybierając ten przypadek de facto mierzysz kanał 3, wybierając case 2 mierzysz drugi a case 3 - trzeci.

Czy możesz dokładniej opisać objawy? Czy jest to totalny crash programu i nic nie działa (coś jakby problemy ze stosem czy z przepełnieniami jakichś buforów) czy tylko nie załączają się silniki, które jedynie pokazują (jak np. diodki LED) wynik pomiaru ADC?

Link do komentarza
Share on other sites

Nie za bardzo rozumiem gdzie miałbym wywoływać tą instrukcję . W case1 jest break, nie wiem dlaczego się nie przekopiował 🙂 Kanał musi być zerowany, jak to wyłączę silniki cały czas działają. Program uruchamia silniki jak zadziałają czujniki, i jak włączę odczyt z trzeciego czujnika to nic się nie dzieje, żaden silnik się nie załącza 🙁

[ Dodano: 09-11-2014, 21:53 ]

Problem został rozwiązany, można zamknąć, dziękuje wszystkim za pomoc 🙂 błąd był w zmiennej, chyba nie mieściło się w int 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.