Dzięki, Tomku SQ8MHI, że mnie wspomogłeś - ja dopiero mam czas na siedzenie przed kompem, córka mi żyć dzis nie dała i nie miałem czasu wyjaśniać Jarkowi.
(11-02-2012 23:11)SP9LAP napisał(a): No i jeszcze żebym miał pełny pogląd na sytuację: Jaki stan ustala się na na A0 i pozostałych pinach portu A po pierwszej linijce programu czyli po:
DDRA = 0b00000001;
bo wygląda że przypadkowy. Pasowałaby zaraz po niej instrukcja np.:
PORTA= 0b00000000;
Musiałbyś poczytac trochę o Atmedze. Istnieje takie zjawisko jak wartość domyślna ( początkowa ? ) rejestru(ów). Jeżeli nie ustawisz inaczej to wszystkie rejestry:
- DDRA, DDRB, C, D - nazwijmy je DDRx oraz rejestry PORTx mają wartoć 0 ( lub jak wolisz 0b00000000 ).
Zatem nie pisząc nic co dotyczy tych portów powodujesz że maja wpisane w rejestry zera ( bo nie zmieniasz tych zer na inne wartości ).
Ale jeżeli to ułatwi ci zrozumienie kodu lub czytelność dodawaj linijkę
PORTA= ....
Ja poprostu już pamiętam że domyślnie są zera
SP9LAP napisał(a):I jeszcze jedno. Instrukcja
if(bit_is_clear(PINB, 0)) sprawdza 0 na B0, a
if(bit_is_clear(PINB, 2)) sprawdza 0 na B2...itd.. ??
Zaraz to sprawdzę empirycznie
Tnx, Jarek sp9lap
Tak,
if(bit_is_clear(PINB, 2)) sprawdza czy jest 0 na B2, bo wyrażenie
bit_is_clear(PINB, 2) przyjmuje wartość
1 jesli na B2 jest stan niski.
Jeszcze jakieś pytania ?