ATNEL tech-forum https://forum.atnel.pl/ |
|
SKC500v2 - resuscytacja staruszka https://forum.atnel.pl/topic18370.html |
Strona 1 z 1 |
Autor: | APAP75 [ 9 maja 2017, o 09:51 ] |
Tytuł: | SKC500v2 - resuscytacja staruszka |
Witam Chciałbym przedstawić Wam moją wersję programatora STK500v2. Przy jej wykonaniu bazowałem na projekcie ze strony: http://we.easyelectronics.ru/Asticon/stk500v2---new-edition.html Wspomagałem się także materiałami z tej strony: http://tuxgraphics.org/electronics/200705/article07052.shtml#07052lfindex0 W porównaniu z pierwowzorem - zrezygnowałem z bootloadera - interfejs ISP oparty jest na sofcie (nie używam wbudowanego SPI). Dlatego też wyższe częstotliwości programowania (1,8MHz i 460kHz) nie są dostępne. Maksymalna częstotliwość linii SCK wynosi ok 375kHz (zmierzona). - zastosowałem CH340G – jest tani Co zmieniłem: - poprawiłem niektóre linie w kodzie, tak aby mi było lepiej go analizować. - zmieniłem bufory na 74LVC125A i 74AHC1G126 - dodałem przycisk do ręcznego włączania generatora wyjściowego. Dodatkowo jego wciśnięcie powoduje zmianę częstotliwości linii SCK na 115kHz. Ponowne przyciśnięcie wyłącza generator i ustawia częstotliwość SCK na max. - dorobiłem automatyczną zmianę częstotliwości programowania pod avrdude (pod atmel studio działa zmiana częstotliwości bez tej protezy). Po „autoustawieniu” częstotliwość ta jest pamiętana do momentu restartu programatora (wyjęcie i włożenie do portu USB) lub do momentu wciśnięcia przycisku (zapalenie się czerwonej diody) – ustawiane jest 115kHz, ponowne przyciśnięcie ustawia częstotliwość maksymalną. - zmieniłem rozmiar płytki – jest wielkości pendrive’a. Pociąga to za sobą pewne konsekwencję – rozmiary elementów SMD w większości to 805 dodatkowo umieszczone bardzo blisko siebie i przelotki są na polach lutowniczych elementów – cóż – coś za coś. Zależało mi na miniaturyzacji. Co mi się nie udało - nie wyłapałem wszystkich chochlików z kodu – tzn. programator działa, ale np. gdzieś autor projektu włączył jakiś timer, który nie wiadomo co robi i tak zostało – a ja to przeoczyłem. - pod avrdude przy „dziwnych” częstotliwościach procesora jest problem z odczytaniem jego sygnatury. Częstotliwość SCK się nie zmienia – bo poprawnie procesor wchodzi w stan programowania (błąd przy wejściu w stan programowania wymusza zmianę częstotliwości SCK), ale przy odczycie sygnatury pojawiają się błędy. Problem do pewnego stopnia udało się wyeliminować – Doszedłem do wniosku, że stan wysoki i niski linii SCK musi trwać tyle samo (w miarę możliwości) Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods for the Serial Clock (SCK) input are defined as follows: Low:> 2 CPU clock cycles for fck <12MHz, 3 CPU clock cycles for fck >=12MHz High:> 2 CPU clock cycles for fck <12MHz, 3 CPU clock cycles for fck >=12MHz Nie mam oscyloskopu – kartka papieru, plik .lss i na piechotkę liczyłem takty…… Tam, gdzie uznałem to za stosowne dodałem NOP’y i metodą prób doszedłem do wartości optymalnej. Czasem zdarzy się błąd przy odczycie, ale za każdym razem udawało i się zmienić fusebity w procku. Nie jest to rozwiązanie, nie potrafię sobie jednak z tym poradzić. Nie wiem jak wymusić, aby avrdude wysyłało w przypadku błędu komendę do STK500 przetaktowującą linię SCK (tak jak robi to atmel studio). Zawsze można spróbować wciskając przycisk uruchamiający generator i przetaktowujący linię SCK na 115kHz. Ale są to naprawdę rzadkie przypadki – tam, gdzie częstotliwość linii SCK jest sporo mniejsza od czterokrotnie większą częstotliwością taktowania procesora, a mimo to udaje się wejść w tryb programowania (np.. attiny85 z częstotliwością 800kHz - 6,4/8 – za każdym razem wchodził w tryb programowania przy SCK 375kHz – chodź nie powinien, ale w czasie programowania wywalał błędy z sygnaturą. Dziwna sprawa, bo za każdym razem udawało mi się mimo to zmienić fusebity). - minimalna częstotliwość pracy pod avrdude to ok 4,1 kHz. Niżej nie udało mi się zejść – wywalają się timeouty w avrdude. Ale bez problemu zaprogramowałem (wielokrotnie) procka taktowanego zegarem wewnętrznym 16kHz. W atmel studio można zejść do ok. 1,6kHz – taką częstotliwość zmierzyłem. Jakie są zalety: - sterownik do CH340G instaluje się łatwo (jakiś czas temu były z nim problemy – to ten sam sterownik jak przy klonach arduino) - działa w miarę szybko - małe wymiary - współpracuje z avrdude i atmel studio (w tym drugim można sprawdzić napięcie zasilające procek, zmienić częstotliwość taktowania SCK, wałczyć i przeprogramować częstotliwość generatora zewnętrznego) Schematu nie mam – robiłem na podstawie pierwowzoru gotową płytkę nanosząc zmiany w trakcie pracy. Za ewentualne błędy w kodzie (zwłaszcza ortograficzne) – przepraszam. Niektóre komentarze są niegramatyczne – kopiuj wklej z translatora gogle – projekt wyjściowy tworzony był w cyrylicy – autor jest Rosjaninem. Autor projektu zamieścił kod, ja zrobię to samo – podając jednocześnie jego adres WWW. Reasumując – wiem, że jest to stara konstrukcja, ale bawiłem się nią w celach poznawczych. Może kiedyś wezmę na tapetę MK2 z projektu LUFA. Zobaczymy. UWAGA – na schemacie wkradł się błąd – użyty procesor to ATMEGA328 (nie ATMEGA8) !!! Można zastosować inne taktowanie (przyjazne dla USART) np. fosc = 11.0592MHz lub fosc = 18.4320MHz, tracimy jednak wówczas wartości generatora wyjściowego zbliżone do tych podawanych przez atmel studio. Prototyp robiłem dla fosc = 18.4320MHz. |
Autor: | APAP75 [ 10 maja 2017, o 10:29 ] |
Tytuł: | Re: SKC500v2 - resuscytacja staruszka |
Przez pomyłkę umieściłem "roboczą" i niedokończoną wersję pliku źródłowego. Już zostało to poprawione..... PRZEPRASZAM |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |