augustyn1 napisał(a):
Witam
A tak napisałem pierwszy programik który ma zapalać diody i wyszło że gasi zapalone diody.
Hmm no gasi zapalone diody bo trzeba spojrzeć jak są one dołączone do procesora
Schemat, schemat.
Jeśli podłączone są katodą do pinów portu natomiast anoda przez rezystor do VCC to chyba nie dziwne, że stan niski na wyjściu pinu powoduje zapalenie się diody. W tym przypadku wszystkich diod naraz po poleceniu:
Kod:
DDRA = 0xFF;
(przy okazji to całkiem poprawne polecenie bo za jednym zamachem ustawia wszystkie piny PORTA jako wyjścia, gdyż wpisujesz jedynki do rejestru kierunku DDRA)
Jednak po resecie, wszystkie bity w różnych rejestrach są wyzerowane, zatem także w rejestrze wyjściowym PORTA także są wyzerowane, dlatego bezpośrednio po tym rozkazie zapalają ci się wszystkie diody - ponieważ na pinach, które zostały ustawione jako wyjścia pojawiły się stany niskie z bitów rejestru PORTA
teraz jaśniej ???
A dalej twój program co realizuje ? Ano po kolei wystawia na kolejne piny stan wysoki:
Kod:
PORTA |= led1;
prawda ? czyli do bitu PA0 wpisuje wartość 1, czyli na tym pinie pojawia się stan wysoki a zarazem na katodzie diody LED tak ??? więc teraz to już chyba nie dziwne, że dioda gaśnie
i tak dalej robisz z kolejnymi.
Zatem jeśli chcesz aby po starcie programu wszystkie były najpierw zgaszone to po ustawienie pinów jako wyjścia, ustaw także od razu na wszystkich pinach stan wysoki:
Kod:
DDRA = 0xFF;
PORTA = 0xFF;
a później w tej swojej pętli zamiast wystawiać po kolei stany wysokie - wystawiaj stany niskie żeby zapalać diody czyli tak:
Kod:
PORTA &= ~led1;
i teraz zadziała tak jak chcesz
.... ale przypominam jeszcze raz - zawsze trzeba zacząć od spojrzenia na schemat jak są diody LED podłączone prawda ?
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]