Dzień dobry Miałem za zadanie stworzyć prosty, mały program, w którym wyjścia miały wysterowywać diody led. Teoretycznie banalna sprawa - miały się zapalać pierwsza, druga, trzecia, druga z trzecią na raz, pierwsza z trzecią.... piąta, piąta z szóstą jednocześnie... itp. Problem którego nie pojmuję, i nie wiem co jest na rzeczy, polega na tym, że port B(ten ostatni na liście wyjść), który jest jedynym z pośród innych portów D, zachowuje się następująco: Zapalają się porty D, pierwszy , drugi itp., natomiast gdy przychodzi pora na port B, ten również się zapala, ale już nie gaśnie - pali się cały czas, nie reagując na fakt że inne pracują poprawnie. Zapętlenie cyklu nie wpływa na to. Czy ustawię go jako pierwszy, środkowy, czy ostatni, zachowuje się tak samo - po przyjściu jego kolei, zapala się, ale już nie gaśnie. Pali się ciągle. Jak DDRB zdefiniuję na ten jedyny obsługiwany port B, to nic nie daje. Zostawiłem wszystkie - 'FF' Jeszcze jedno - jak zamiast jednego wyjścia portu B, zastosuję jedno portu C, to jest to samo. C wtedy zachowuje się tak jak opisałem powyżej. Gdzie tkwi błąd? Za ewentualną pomoc dziękuję.
#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h>
int main(void) { DDRD = 0xFF; DDRB = 0xFF;
for(;;) { _delay_ms(1000); PORTD = 0x08; _delay_ms(1000); PORTD = 0x04; _delay_ms(1000); PORTD = 0x18; _delay_ms(1000); PORTD = 0x0C; _delay_ms(1000); PORTD = 0x14; _delay_ms(1000); PORTB = 0x01; _delay_ms(1000); } }
|