Adam Jurkiewicz
Guest
Wed Apr 19, 2006 2:23 pm
Radek wrote:
Quote:
To jest shift logiczny a ja chcę 8 bitowy "barrel shifter".
Więc trzeba najpierw bcf C/btfsc (skrajny bit)/bsf C i dopiero rlf/rrf.
4 instrukcję zamiast 1...

)
Przesuwanie bez Carry robi się w 2 cyklach a nie w 4 ;)
rlf ZMIENNA, W
rlf ZMIENNA, F
sword
--
e-mail: sword@wywalic.ajpic.zonk.pl
www:
http://ajpic.zonk.pl/
gg#: 1781804
Adam Jurkiewicz
Guest
Wed Apr 19, 2006 2:27 pm
A.Grodecki wrote:
Quote:
ICD2 też zresztą można rozwalić przy odrobinie pecha, programując w
warunkach bojowych
W starszych wersjach ICD2 ubijały się nagminnie bufory wyjściowe,
naprawiałem tego na kilogramy. Nawet nie trzeba się było zbytnio
starać ;)
Pozdrawiam,
sword
--
e-mail: sword@wywalic.ajpic.zonk.pl
www:
http://ajpic.zonk.pl/
gg#: 1781804
Adam Jurkiewicz
Guest
Wed Apr 19, 2006 2:45 pm
Radek wrote:
Quote:
Dlaczego to jest kłopot? Dlatego, że MCLR trzeba podciągnąć pod Vdd a
przy programowaniu na pin z MCLR jest podawane napięcie 12V kiedy układ
jest zasilany 5V. I teraz to komplikuje "ISP" ponieważ trzeba wstawić
zworkę lub przełącznik pomięczy MCLR oraz Vdd. A może nie przejmować się
i umieścić tylko mocniejszy rezystor (albo jeszcze lepiej diodę bo
efektywnie polaryzacja się odwróci)?
Nie chciałbym nic popalić choć jednego PICa mogę poświęcić.
Wątek przeczytałem i widzę, że nie do końca łapiecie dlaczego tak
się dzieje. Ostrzeżenia MPLABa są jak najbardziej poprawne i nie
ma to związku z bugami w krzemie. Wszystko rozchodzi się o warunki
wejścia w tryb programowania.
Wystawienie na MCLR napięcia Vpp wcale nie wystarcza do wejścia
w ten tryb, dodatkowym warunkiem jest utrzymywanie portów DATA
i CLOCK w stanie "0".
Jeśli procesor pracuje na wewnętrznym oscylatorze i ma dodatkowo
wyłączony zewnętrzny MCLR to programator nie jest w stanie zatrzymać
procesora. Poprawny sygnał powinien być ("H") -> "0" -> Vpp
Przy powyższym układzie sygnał "0" nie dotrze do układu resetu
bo jest odciety, a będzie to tylko "H" -> Vpp. Jeśli w tym
czasie procesor generuje jakieś sygnały na DATA i CLOCK i w danym
momencie pojawi się tam jakaś "1" to wystawienie sygnały Vpp
nic nie daje i procesor nie wchodzi w tryb programowania.
Procesor w takim stanie wcale się nie zatrzaskuje tylko wymaga
poprawnego wystawienia sygnałów. Najprostszym rozwiązaniem
w tej sytuacji jest podanie napięcia tylko podczas programowania.
Procesor nie zdąży wtedy wystartować i bez problemów wejdzie
w tryb programowania.
Dodatkowym warunkiem na wejście w tryb programowania jest
wystawienie stromego zbocza "0" -> Vpp na MCLR z tych samych
powodów - aby procesor przechodząc przez poziom "H" nie zdążył
wystartować. Szczególnie ważne jest to przy oscylatorach RC,
które bardzo szybko startują w porównaniu do kwarcu.
No i ostatnia rzecz związana z powyższym, jeśli na MCLR
"wisi" jakieś RC do opóźniania startu trzeba zastosować
diodę separującą, żeby kondensator nie "zepsuł" tego
zbocza. Alternatywnie zamiast diody można zastosować
układ rezystorowy opisany w pdfie o ICSP.
Samą sekwencją programującą nie da się ubić procesora jeśli nie
wystąpiły jakieś niezależne czynniki zewnętrzne.
Pozdrawiam,
sword
--
e-mail: sword@wywalic.ajpic.zonk.pl
www:
http://ajpic.zonk.pl/
gg#: 1781804
Radek
Guest
Wed Apr 19, 2006 3:44 pm
Quote:
Przesuwanie bez Carry robi się w 2 cyklach a nie w 4 ;)
rlf ZMIENNA, W
rlf ZMIENNA, F
Sprytne a ja jak zwykle przekombinowałem... ;)
Pozdrawiam,
Radek
A.Grodecki
Guest
Thu Apr 20, 2006 10:57 am
Adam Jurkiewicz napisał(a):
Quote:
Wystawienie na MCLR napięcia Vpp wcale nie wystarcza do wejścia
w ten tryb, dodatkowym warunkiem jest utrzymywanie portów DATA
i CLOCK w stanie "0".
Dzięki za informację, nigdzie tego nie doczytałem, że w tym samym
momencie muszą być zera. Podejrzewałem coś takiego, ale tylko tyle.
--
Pozdrawiam,
A. Grodecki
"Wszystkie zwierzęta sa równe.
Ale te, które mają futerko w trzykolorowe pasy, są równiejsze."