Witam
Napisałem wsad, w którym ma zostać obsłużony pilot (w systemie - prawdopodobnie JVC, nie wiem na pewno - przebiegi sprawdziłem na oscyloskopie). Ale mniejsza z tym. Po długotrwałych bojach okazało się, że PINB, jak również PIND nie działa.
Do D0 podłączyłem switch, mam możliwość ustawienia tam określonego stanu.
Sprawdzam stan na porcie B2 i B3, niestety, bez względu na to, co zadane jest na D0 to mam odpowiedzi tylko na B3. I bez względu na to, czy na D0 jest jedynka, czy zero, mam ZAWSZE odpowiedź na B3. Ktoś spotkał się z czymś takim?
Część kodu:
Jak dla mnie - wszystko ok, połączenia sprawdziłem, stany wysokie/niskie na D0 są jak sobie ustawię.
Nie wiem, czy nie mąci wszystkiego sprawa taka, że ten warunek sprawdzany jest podczas realizacji przerwania - ale jak zaczynam obsługę przerwania, to je wyłączam (cli).
Sprawdzałem też sprawdzanie stanu na innych portach, tj na B0, oraz B1. Reakcje takie same, więc raczej to nie wina padniętego wejścia.
Napisałem wsad, w którym ma zostać obsłużony pilot (w systemie - prawdopodobnie JVC, nie wiem na pewno - przebiegi sprawdziłem na oscyloskopie). Ale mniejsza z tym. Po długotrwałych bojach okazało się, że PINB, jak również PIND nie działa.
Do D0 podłączyłem switch, mam możliwość ustawienia tam określonego stanu.
Sprawdzam stan na porcie B2 i B3, niestety, bez względu na to, co zadane jest na D0 to mam odpowiedzi tylko na B3. I bez względu na to, czy na D0 jest jedynka, czy zero, mam ZAWSZE odpowiedź na B3. Ktoś spotkał się z czymś takim?
Część kodu:
DDRB=0x0C; // B jako WE, tylko B3 i B2 wy 0000 1100
DDRD=0x78; // D ma 0111 1000, czyli tylko D3,D4iD5 i D6 Wy.
PORTB=0x0C; // B2 i B3 jedynki
PORTD=0x00; // D bez podc.
//--- sprawdzanie stanu pinu--
if (PIND0)
PORTB^=0x04; //0000 0100 B2
else
PORTB^=0x08; //0000 1000 B3Jak dla mnie - wszystko ok, połączenia sprawdziłem, stany wysokie/niskie na D0 są jak sobie ustawię.
Nie wiem, czy nie mąci wszystkiego sprawa taka, że ten warunek sprawdzany jest podczas realizacji przerwania - ale jak zaczynam obsługę przerwania, to je wyłączam (cli).
Sprawdzałem też sprawdzanie stanu na innych portach, tj na B0, oraz B1. Reakcje takie same, więc raczej to nie wina padniętego wejścia.