Skocz do zawartości
Zaloguj się, aby obserwować  
polopoiu

Problem z ADC. Problem z kanałami.

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.

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

No właśnie. Dzieki.

Zaraz sprawdzę.

[ Dodano: 12-07-2013, 10:53 ]

Dobra. Działa. Dzięki.

Udostępnij ten post


Link to post
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.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...