Mam problem z odczytaniem wartości całego portu co wydawać mogło by sie śmieszne ale po całej nocy spędzonej nad tym zdecydowałem się zadać to pytanie na elektrodzie. W czym rzecz : Chcę próbkować cały port D i ten wynik porównywać z wcześniejszym stanem PORTU D jeżeli coś się zmieni (XOR) to załączany jest timer itp itd . Jednocześnie wykorzystuję przerwanie której jest na porcie D - INT0 (myślę ze to sie nie kłóci zeby odczytywać stan portu ). W próbie desperacji sprawdzałem if'em czy PIND jest różny od zera i nawet gdy cały PORTD był wolny dioda sie zapalała czyli warunek się wykonywał. Inaczej było gdy tego if'a robiłem dla całego portu D wtedy dioda się nie paliła również gdy wymuszałem na którymś pinie stan wysoki poprzez dołączenie go do VCC .Jedynie poprawnie dioda sie zapała w warunku kiedy w programie wymusiłem stan wysoki poprzez przypisanie PORTD=0xFF wtedy działało tak jak należy ale mi zależy na zaczytaniu wartości z portu i reagowanie na zmiany na nim .
Ustawienia portu mam takie :
Ustawienia portu mam takie :
LEDDDR= 1<<LED ; //Dioda na porcieB
DDRD=0x00 ;//PORTD jako wyjście
//PORTD=0xFF; //wtedy działa ale jak 0x00 i wymuszanie poprzez dołaczenie któregoś z PIND do VCC nie dziala :(
if(PORTD)
LEDPORT=_BV(LED);