Skocz do zawartości

Problem z ADC. Problem z kanałami.


polopoiu

Pomocna odpowiedź

Mam dwa czujniki na portach ADC.

int LEFT_CZUJNIK()
{
ADMUX |= (ADMUX & 0xF8) | 4; //kanał w porcie C
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));

delay_us(5);

ADMUX |= (ADMUX & 0xF8);

if(ADCW > WARTOSC_L) return 1;
else return 0;
}
int RIGHT_CZUJNIK()
{
ADMUX |= (ADMUX & 0xF8) | 5; //kanał w porcie C
   ADCSRA |= (1<<ADSC);
   while(ADCSRA & (1<<ADSC));

   delay_us(5);

   ADMUX |= (ADMUX & 0xF8);

   if(ADCW > WARTOSC_R) return 1;
   else return 0;
}

Gdy w main sprawdzam np. jeden czujnik, to wszystko gra. Ale gdy wywołam je tak:

while
{
if(RIGHT_CZUJNIK())
	{
		BACK(150, 150);
		delay_ms(500);
		LEFT(150, 150);
		delay_ms(1000);
		MOTOR_STOP();

	}

 if(LEFT_CZUJNIK())
    {
	    BACK(150, 150);
	    delay_ms(500);
	    RIGHT(150, 150);
	    delay_ms(1000);
	    MOTOR_STOP();

       }
}

To pojawia się błąd, ponieważ program nie reaguje na lewy czujnik, ale tylko na prawy.

Problem jest jeszcze w tym, że akcja dla obu czujników są wykonywane losowo, choć łapie sygnał tylko z prawego czujnika.

Proszę o pomoc.

Link do komentarza
Share on other sites

Masz taki kod:

ADMUX |= (ADMUX & 0xF8) | 4; //kanał w porcie C

powinno być:

ADMUX = (ADMUX & 0xF8) | 4; 

czyli w tej operacji zamiast |= powinno być =

Pewnie masz biblioteki Mirka. Gdybyś sprawdzał uaktualnienia do kodów link to byś wiedział o tym błędzie 😉

  • Pomogłeś! 1
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.