Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STK500v2 - moja wersja - choć być może zbyt hucznie to brzmi

apilat75 10 Maj 2017 11:46 7758 11
  • STK500v2 - moja wersja - choć być może zbyt hucznie to brzmi

    Witam

    Na początku pragnę się ze wszystkimi przywitać - jest to mój pierwszy artykuł na tym forum, więc jak coś zmaściłem, to proszę o litość :)

    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).
    ALE TAK DZIEJE SIĘ TYLKO POD AVRDUDE.

    - 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), a na ty mi najbardziej zależało.

    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.

    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.
    Jednak „optymalizowany” jest dla fosc = 14.7456MHz - przy tym kwarcu zachowane są prędkości programowania i zbliżone prędkości generatora z tym co pokazuje atmel studio.
    STK500v2 - moja wersja - choć być może zbyt hucznie to brzmi

    gotowy.zip Download (736.15 kB)


    Fajne!
  • #3 10 Maj 2017 17:49
    leonow32

    Poziom 29  

    mkII jest mega dobry i nawet cegłę by zaprogramował :) w necie jest tzw. "projekt LUFA" i bardzo dużo osób go powiela. Znajdziesz dużo schematów i gotowych płytek, a większość klonów mkII na allegro to mniej lub bardziej udane implementacje LUFY.

    I co najważniejsze - integruje się z Atmel Studio, czyli nigdy więcej żadnych AVRDUDE ani innych tego typu wynalazków. Wciskasz F5, program leci do procka i nic nie musisz klikać.

  • #4 10 Maj 2017 17:50
    apilat75
    Poziom 8  

    Wiem, że to jet staruszek, ale działa pod najnowszą wersją atmel studio i pod avrdude. Dodatkowo nie ma problemu ze sterownikiem. A, że konstrukcja sprzed dekady - czy to ważne - programuje (a raczej wgrywa soft) - do tego został stworzony.
    Z klonem MK2 mam problem - atmel studio wywala, że mam za stary firmware.... i nie mogę sobie z tym poradzić.
    Wiem, że MK2 jest o klasę lepszy. STK500 ma tylko jeden interfejs, MK2 3.
    Ale marzy mi się programator z funkcją debugowania po debugWIRE..... Taki zrobić. Ech...

  • #5 10 Maj 2017 18:17
    piotrva
    Moderator Mikrokontrolery

    apilat75 napisał:
    Z klonem MK2 mam problem - atmel studio wywala, że mam za stary firmware.... i nie mogę sobie z tym poradzić.

    Wystarczy pobrać najnowszą wersję LUFA ze strony (lub przez Atmel Studio - razem z biblioteką LUFA) i jeśli trzeba podmienić w jednym pliku definicję z wersją FW na wymaganą ;)

  • #6 10 Maj 2017 18:31
    Christophorus
    Poziom 40  

    Nie obawia się Kolega, że zbyt ciasno poprowadzone ścieżki w obrębie rezonatora kwarcowego mogą zostać zwarte przez jego metalową obudowę?

    STK500v2 - moja wersja - choć być może zbyt hucznie to brzmi

  • #7 10 Maj 2017 23:37
    apilat75
    Poziom 8  

    Christophorus napisał:
    Nie obawia się Kolega, że zbyt ciasno poprowadzone ścieżki w obrębie rezonatora kwarcowego mogą zostać zwarte przez jego metalową obudowę?

    Babol początkującego - zbyt szerokie pady zrobiłem przy CH340 no i wyszło jak wyszło. Pod kwarc dałem podkładkę. Po prostu, ściskałem, ściskałem i ... przesadziłem w niektórych miejscach.


    piotrva napisał:
    Wystarczy pobrać najnowszą wersję LUFA ze strony (lub przez Atmel Studio - razem z biblioteką LUFA) i jeśli trzeba podmienić w jednym pliku definicję z wersją FW na wymaganą

    Mógłbyś rozwinąć... będę dozgonnie wdzięczny. Programator zrobiony mam według projektu mdiy http://mdiy.pl/programator-usbtiny-mkii-slim/ soft mam z 2013-03-03. Muszę poczytać jak skompilować nowy ze strony LUFA.

  • #9 11 Maj 2017 14:58
    apilat75
    Poziom 8  

    Wiem, wiem. Siedzę i próbuję skompilować nowy, ale jak krew w piach.....
    Próbowałem z tego wątku:
    https://www.elektroda.pl/rtvforum/topic2379069.html
    U mnie wyskakują inne błędy - tak jakby kompilator nie miał praw zapisu pliku, jakieś błedne linki do katalogów itp itd, a cmd uruchamiam jako admin....

    Kod: text
    Zaloguj się, aby zobaczyć kod


    próbowałem też przenieść do eclipse
    http://www.jarlath.net/2015/07/eclipse-dla-avr-biblioteki-lufa/

    bez powodzenia.

    Muszę się nauczyć atmel studia (dlatego też zrobiłem sobie STK500).... ciężko jednak się przesiąść z eclipse - źle powiedziane - nie chcę się przesiadać, chcę poznać drugie narzędzie. Na razie nad tym pracuję.....

    Dodano po 23 [minuty]:

    POSZŁO !!!!

    Nie mógł utworzyć:
    Fatal error: can't create obj/AVRISP-MKII.o: No such file or directory
    to mu pomogłem - stworzyłem katalog OBJ i mam hex'a :)

  • #10 12 Maj 2017 13:10
    Karol966
    Poziom 30  

    leonow32 napisał:
    mkII jest mega dobry i nawet cegłę by zaprogramował


    A ja mam ich kilka różnych klonów i zwykle mam jakieś proglemy z AS, nie wspomnę o tym, że przełaczanie trybów całkiem nie działa.
    Mam np takie komedie, że jeśli używam krótkiego przedłużacza USb to czasami nie idzie wcale programować procków a bywają też takie problemy, że przy którymś tam razie włączenia (lub programowania) prograamtor umiera i trzeba mu ładować nowy flash flipem. Ogólnie już tyle razy miałem jakieś problemy na różnych płytkach z tym programatorem, że co raz bardziej przymierzam się do kupna jakiejś firmówki dragona lub ICE (pcb)

  • #11 12 Maj 2017 13:29
    yogi009
    Poziom 41  

    Osobiście postrzegam ten projekt jako niezłe doświadczenie elektronicznie i muszę Ci pogratulować. Pomimo kilku niedociągnięć uważam, że wykonałeś niezłą technicznie płytkę o sporym stopniu złożoności wynikającym z miniaturyzacji. Na pewno doskonałe ćwiczenie pozwalające w przyszłości wyciągnąć wnioski i wykonać projekt o mniejszej liczbie błędów. Projekty bezbłędne nie istnieją :-)

  • #12 12 Maj 2017 18:30
    apilat75
    Poziom 8  

    Przy każdym projekcie tak mam (i u innych jest chyba podobnie), że w czasie montażu okazuje się, że tu bym inaczej ścieżkę poprowadził, tu bym zmienił itp itd. Na szczęście z płytki na płytkę tych błędów jest mniej -ale nadal są.
    Ta płytka wyszła jak wyszła, nie będę już jej poprawiał - potrzebowałem programatora pod as, już go mam. Idę dalej.
    Dziękuję za ciepłe słowa, bo pracy w to trochę włożyłem. :)

 
Black Friday do -15%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
Ferguson