ISP w ATtiny2313

Jan 28, 2005 14 Replies

Witam,



w dejtaszicie w/w kości jest napisane że przy gdy programujemy ją w układzie, to na XTAL1 trzeba podać sygnał zegarowy. No i ja już nie wiem jak to jest. Mam ukłąd w którym uC jest pędzony z zewnętrznego kwarcu. No i programowanie działa OK. Działa również dobrze jeśli ustawię CKSEL[3:0] na wewnętrzny oscylator. Gdy podczas eksperymentów wyzerowałem w/w bity, czyli ustawiłem "external clock", to ISP przestało działać. Jak się domyślam, właśnie ze względu na brak zegara. Czyli tak naprawdę, podczas programowania, na XTAL1 trzeba podawać zewnętrzny zegar wtedy, gdy wymaga tego ustawienie CKSEL[3:0], a nie w każdym przypadku. Czy ktoś z AVRowców mógłby mnie oświecić jak to jest? W dejtaszicie jakoś nie zauważyłem jednoznacznej informacji na ten temat. No i jak ożywić taką kość bez używania programatora równoległego? Podać jej prostokąt (kilka MHz) z zewnętrznego generatora?


Regards, /J.D.


Jan Dubiec napisal(a):

No tak. Musi miec tylko nie za niska czestotliwosc. W przypadku 51 od Atmela to jest 3MHz i pewnie w przypadku AVR jest podobnie.

Nawiasem mowiac, glupota projektantow interfejsu ISP w Atmelach jest zadziwiajaca.

Aha, mysmy zaliczyli kiedys inne 'uszkodzenie' kosci: przypadkiem zostal przeprogramowany pin resetu na I/O. Kosc do kosza poszla.

Zasada jest bardzo prosta: do programowania przez ISP procesor musi dzialac z odpowiednia czestotliwoscia, w przypadku ATtiny2313 patrz do dataszita poczawszy od strony 171. Jak sobie ten procesor popedzisz to juz twoja sprawa - jezeli sa ustawione fusebity wewnetrznego taktowania to tyle wystarczy, jezeli fusebitami wybierzesz zewn. zegar - taki musisz dostarczyc, jezeli wybierzesz taktowanie kwarcem - musisz dac kwarc. Nie ma dolnego ograniczenia czestotliwosci taktowania (patrz tabela 79 na stronie 175 PDFa).

BTW: Poza tym popatrz na podpis pod rys 77: "If the device is clocked by the internal Oscillator, it is no need to connect a clock source to the XTAL1 pin". Chyba jasne.

nie prosciej bylo ja przeprogramowac na programatorze rownoleglym??

Bardzo czesto taniej kupic nowy proc za 20 zl, niz programator rownolegly za 200 zl (lub wiecej). U nas w firmie lezy kilka prockow ATmega128 (z wylaczonymi ISP i JTAGiem) czekajac na lepsze czasy.

Adam Dybkowski napisal(a):

W tym konkretnym przypadku to ATMEGA8 w TQFP. Kosztowala 7 czy 8PLN. Programator rownolegly mam, bo uzywam do programowania sepromow Altery, ale trzeba by kupic przejsciowke do programowania SMD. A to kosztuje bardzo duzo. No i oczywiscie trzeba czyscic kosc, itd.

Adam Dybkowski napisal(a):

Ze co? Mozesz dowolnie maly zegar podlaczyc do procka i on sie zaprogramuje?

BYRRT! napisal(a):

? Sadzisz, ze przeprogramowanie jest latwiejsze niz wyrzucenie do kosza???? Zapraszam zatem na prezentacje ;--). Kosc 8 PLN, a podstawka pewnie przynjamniej 300.

A dlaczego by nie? Podaj, w którym miejscu PDFa Atmel pisze inaczej. Oczywiscie z czestotliwoscia taktowania proca musi byc zwiazane taktowanie transmisji ISP. BTW: Widzialem programatory low-cost ISP, w ktorych pecet wytwarzal takze zegar uC. Oczywiscie w dzisiejszych czasach to jest zbedne, bo chyba kazdy AVR ma standardowo wlaczony wewnetrzny generator RC.

bywały takie, które składały się ze złącza DB25 i podstawki. zegar i zasilanie z portu.

w.

Dokładnie o to mi chodziło.

On Fri, 28 Jan 2005 23:36:48 +0100, Adam Dybkowski snipped-for-privacy@amwaw.edu.pl> wrote: [.....]

Dzięki. Trochę sobie doczytałem, podpiąłem generator kwarcowy i układ ruszył z kopyta. No ale znalazłem buga w Twoim ISP programmerze. :-) Dosyć subtelnego. Układ resetu w urządzeniu mam klasyczny: oporek 10k do zasilania, kondensator kilka(naście) uF od oporka do masy, węzeł "RC" jest połączony przez oporek 1k do nogi uC i do gniazda ISP. No i wszystko działa miodnie dopóki gdzieś w programie nie wpisze się do DDR-a portu B wartości np. 0xff, czyli takiej która ustawia nogi używane do programowania ISP jako wyjścia. Wtedy, przy następnej próbie programowania, Twój soft nie może odczytać sygnatury kości. Gdy wpisze się do DDRB np. 0x0f to wszysto działa OK. Gdy wywalę z układu resetu kondensator (22u lub 4.7u)[*], to też wszystko jest OK, niezależnie od ustawień DDRB. :-) Niewątpliwie coś jest schrzanione w obsłudze resetu - przetestowałem w identyczny sposób avrdude i przeszedł on pomyślnie wszystkie testy. Mój programator to "STK200 compatible dongle".

[*] Nie miałem pod ręką mniejszych elektrolitów aby się jeszcze trochę pobawić.

BTW. Po "zużyciu" w ten sposób czwartej kości zacząłem mocniej zastanawiać się co jest nie tak. :-)

Regards, /J.D.

Kto wie? Układ: tiny2313 taktowany z zewnętrznego generatora kwarcowego, trochę drobnicy, w tym 3 ledy podpięte pod nogi uC. Program klasy "hello world" - sekwencyjne zapalanie/gaszenie ledów co ok. 0.5 sek. Po odłączeniu generatora program się zatrzymuje, tzn. na stałe pali się jedna z diod; po ponownym podłaczeniu zegara program rusza od miejsca w którym się zatrzymał. Przynajmniej na oko tak to wygląda.

Regards, /J.D.

On Fri, 28 Jan 2005 14:45:19 +0100, Marcin E. Hamerla snipped-for-privacy@Xpoczta.Xonet.Xpl.removeX> wrote: [.....]

Ano. Nie mam pojęcia, po kiego jest im potrzebny drugi zegar do zwykłego programowania pamięci.

Regards, /J.D.

[...]

Dzięki za uwagi, przyjrzę się temu w wolnym czasie, którego niestety ostatnio mam niedobór. :|

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required