Skocz do zawartości

Światłolub - nie działa elektronika/program


m471

Pomocna odpowiedź

Witam,

Mam problem ze światłolubem, otóż układ na płytce nie działa. Nie wiem czy to problem w kodzie (wiadomo że czasem drobna "literówka" może zdyskwalifikować cały projekt, a moje początkujące oko niczego nie widzi), czy z płytką, czy w ogóle z elektroniką. Załączam kod (C) oraz schemat (nie widać zasilacza, napięcie jest stabilizowane do 5V).

Z góry dziękuję za pomoc 🙂

Pozdrawiam

Kod:

#include <avr/io.h>
#include <avr/interrupt.h>

volatile signed int tmp1, tmp2;   //tmp1 lewy czujnik



void timer_init()
{
	TCCR1A|= (_BV(COM1A1) | _BV(COM1B1));
	OCR1A= 0;
	OCR1B= 0;
	TCCR1B|= _BV(CS10);
	TCCR1B|= (_BV(WGM12) | _BV(WGM10));
	DDRB|= ( _BV(PB1) | _BV(PB2) );
} 

void ADC_init()
{
	ADCSRA|= ( _BV(ADEN) | _BV(ADIE) );
	ADMUX|= ( _BV(REFS0) | _BV(ADLAR) );

}

ISR(ADC_vect)
{
	if(ADMUX & 1)
	{
		tmp2=ADCH;
	}
	else
	{
		tmp1=ADCH;
	}
	ADMUX^= 1;
	ADCSRA|= _BV(ADSC);
}

int main(void)
{
	timer_init();
	ADC_init();
	DDRC=0x00;
	PORTC=0x00;
	DDRD=1;
	PORTD=0;
	sei();
	ADCSRA|= _BV(ADSC);
	while(1)
	{

		while(tmp1<=500 || tmp2<=500)   //swiatło świeci
		{

			while(tmp1-tmp2>10)   //światło na lewym mocniejsze
			{
				OCR1A=256;
				OCR1B=0;
			}
			while(tmp2-tmp1>10)   //na prawym
			{
				OCR1A=0;
				OCR1B=256;
			}
			while((tmp1-tmp2<=10) )		// nieduża różnica
			{
				OCR1A=128;
				OCR1B=128;
			}
			OCR1A= 0;
			OCR1B= 0;
		}
	}
}

Schemat:

forum.thumb.png.66740b435f2d044edee1085c997b8706.png

 

Link do komentarza
Share on other sites

(edytowany)

@Treker Okej rozumiem że to błąd, nie w tym problem. Póki co, do mikrokontrolera zamiast silników podłączyłem diody i okazało się że prąd nawet nie płynie. Stąd zastanawiam się, czy wina leży w kodzie, np błędna inicjacja, czy w płytce, przez co mikrokontroler nie może działać poprawnie

Edytowano przez m471
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.