AVR - jak skopiowac bit

Mar 25, 2006 22 Replies

Przerwania przeciez musza zachowac rejestr stanu i odtworzyc go przed powrotem z przerwania. Nie programowalem duzo w assemblerze AVR, ale wydaje mi sie ze bez jednego skoku sie nie da. Kod ktory proponuje to:

rejest Rr zawiera tu wartosc w ktorej jest interesujacy nas bit SET ; ustaw bit T SBRS Rr, numer_bitu_zrodlowego ; bit = 1 -> omin nastepny rozkaz CLT ; wyzeruj bit T CLI ; atomowa zmiana zawartosci portu - zablokuj przerwania IN Rd, port_wyjsciowy ; stan portu BLD Rd, numer_bitu_docelowego ; ustaw odpowiedni bit na rowny T OUT port_wyjsciowy, Rd ; wpisz nowa zawartosc portu SEI ; przywrocenie stanu przerwan

przy czym w oznaczeniach Rd i Rr d i r to numery z odpowiednich zakresów (np r <0, 31>, a d <0, 15> - musisz sprawdzić w dokumentacji procesora)

Jak w przerwaniach nie modyfikujesz port_wyjsciowy mozesz zrezygnowac z instrukcji CLI oraz SEI

Mariusz

AT91SAM7S64 te¿.

Mam wra¿enie ¿e w ¶rodku s± gotowe interfejst TWI (I2C) czy SPI, a przynajmniej w wiêkszo¶ci modeli.

Ano dzielenia nie ma, ale mo¿na je sobie zrealizowaæ na piechotê. Zreszt± mikrokontroler AVR przewidziany jest do prostych zadañ (podobnie '51), sytuacje gdzie trzeba dzieliæ mo¿na pewnie zliczyæ na palcach jednej nogi.

PLL tu nie ma. Po prostu jest to architektura potokowa w przeciwieñstwie do '51. W przypadku AVR i instrukcji wykonuj±cych siê naprawdê w 2 cyklach zegara jest tak, ¿e podczas wykonania jednej instrukcji jednocze¶nie czytany jest op-kod nastêpnej z przestrzeni kodu. Zatem efektywna szybko¶æ wykonania takich instrukcji wynosi 1 MIPS/MHz.

SJ przemówił ludzkim głosem:

Jak masz takie wymagania co do kontrolera to przesiądź się na ciscowe procki renesasa. Znajdziesz tam instrukcje do manipulowania pojedynczymi bitami w _całej_ przestrzeni adresowej, operacje logiczne (and, or, xor, także z negacją jednego z argumentów) na pojedynczych bitach, warunkowe kopiowanie jednej z _dwóch_ wartości do bitów, rejestrów, ramu itd.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required