Skocz do zawartości

Przełączanie diody LED problem


m471

Pomocna odpowiedź

Witam, napisałem prosty program na atmege88pa i nie działa on poprawnie. Od kilku godzin nie mogę znaleść błędu, kompilowałem na eclipse oraz atmel studio i próbowałem kod na dwóch procesorach, dioda cały czas świeci, załączam kod i z góry dziękuję za pomoc.

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

volatile int z = 0;


void LED()
{
	int l = z;

	while(l==z){PORTD|=1;}

}

void LED2()
{
	int l = z;

	while(l==z){PORTD=0;}

}

ISR(PCINT0_vect)
{
	uint8_t pin = PINB;

	if((pin ^ 0x1F))
	{
		z^=1;

	}
}



int main()
{
	DDRB=0;
	PORTB|=0x1F;
	DDRD |= 2;
	PORTD = 0;
	PCICR|= _BV(PCIE0);
	PCMSK0 |= ( _BV(PCINT0) | _BV(PCINT1) | _BV(PCINT2) | _BV(PCINT3) | _BV(PCINT4) );

	while(1)
	{
		LED();
		LED2();
	}
}

 

Link do komentarza
Share on other sites

Żeby się dowiedzieć, w czym jest problem musisz rozbić sprawdzanie na etapy:

1. Sprawdź, czy funkcja LED() zapala diodę.

2. Sprawdź, czy funkcja LED2() gasi diodę.

3. Sprawdź, czy przerwanie się wywołuje i robi to co chcesz.

Jak każda część działa poprawnie, program w całości też raczej będzie działać. Zakładam, że nie masz do AVRa debuggera i musisz po prostu wykomentowywać części kodu, kompilować i sprawdzać świeceniem leda. Jak chcesz się nauczyć programować to musisz się hartować od początku 😄 Zawsze na początku coś nie działa i im szybciej się nauczyć drążyć temat, tym lepiej.

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.