logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kasownik HV ATtiny13, urządzenie ustawia fusebity.

sq6ade 29 Lis 2009 17:56 8638 12
  • #1 7324188
    sq6ade
    Poziom 40  
    Do szału doprowadziły mnie dziś cyrki z pinem RESET który chciałem wykorzystać jako PB5. A wcześniej miałem jazdę z nisko ustawionym oscylatorem RC (setki kHz).
    Zmontowałem więc coś takiego i wyleczyłem z problemów wszystkie moje poblokowane TINY13.
    Urządzenie ustawia fusebity tak jak fabryka wypuszcza z fabryki.
    W załączniku HEX do atmelka.

    Kasownik HV ATtiny13, urządzenie ustawia fusebity.
  • #2 7358529
    morph13
    Poziom 25  
    Myślę, że bardziej uniwersalnym rozwiązaniem byłby HVProg jako programator równoległy (ISP też obsługuje) większości AVR-ów a do tego zgodny z STK500 i obsługiwany w AVRStudio.

    fotka tego programatora
    Kasownik HV ATtiny13, urządzenie ustawia fusebity.
    można pokusić się o wykonanie większej ilości PCB
    projekt w Eagle.
  • #3 7360577
    sq6ade
    Poziom 40  
    Owszem morph13
    Ja jednak miałem 2 godziny na wykasowanie moich tinych - dlatego stwierdziłem że szybciej wyklepię coś nowego niż zgromadzę elementy i uruchomię coś z neta.

    A teraz tylko wstawiam scalaka w podstawkę - PYK i jest jak nowy.
    Bardzo szybka operacja - co istotne przy uruchamianiu programów z użyciem pinu RESET jako port.
  • #4 7360736
    michalko12
    Specjalista - Mikrokontrolery
    sq6ade napisał:
    Owszem morph13
    Ja jednak miałem 2 godziny na wykasowanie moich tinych - dlatego stwierdziłem że szybciej wyklepię coś nowego niż zgromadzę elementy i uruchomię coś z neta.

    A teraz tylko wstawiam scalaka w podstawkę - PYK i jest jak nowy.
    Bardzo szybka operacja - co istotne przy uruchamianiu programów z użyciem pinu RESET jako port.


    Minusem akurat tego rozwiązania jest zastosowanie 51 zamiast AVR. Jak ktoś blokuje sobie ATtiny to znaczy, że ma programator do AVR, a tak trzeba kombinować programator do 2051.
  • #5 7360747
    sq6ade
    Poziom 40  
    W AVR dopiero się wdrażam a 51 mam opanowane - stąd taki konfig ;)

    Taki sprzętowy (bez PC) kasownik małych tinych rozszerzony o inne modele to chyba niezły pomysł - może ktoś się pokusi i zrobi coś bardziej uniwersalnego np. używając AVR.
    Chętnie sobie zbuduje coś takiego.
  • #6 7425397
    manekinen
    Poziom 29  
    sq6ade - tak się składa że się pokusiłem i zacząłem robić takie urządzenie, już jakiś czas temu... Działanie bardzo proste, odczytuje sygnaturke, pobiera z tablicy low fuse, high fuse, i extended fuse (jeśli jest), wrzuca, weryfikuje, i zapala ledka. I nawet to działało, testowałem na M8, M16, M32, M88. Ale brak czasu i jakieś anomalie w działaniu przeszkodziły mi w dokończeniu. Postaram się za to zabrać i ogarnąć żeby nadawało się do jakiejkolwiek publikacji, na pewno dam Ci znać :)

    A wracając do tematu, słuchaj, czy mógłbyś skompilować to pod jakiś bardziej ludzki uC, np atmega8? Właśnie robie coś na attiny13 wykorzystując portb.5 i nie masz pojęcia jak bardzo byś mi pomógł :)

    Dodano po 2 [minuty]:

    O, żeby nie było, znalazłem nawet fotkę z pierwszych testów - atmega8 odczytuje sygnaturkę atmegi32 równoległym HV :) https://obrazki.elektroda.pl/32_1261531404.jpg
  • #7 7425954
    sq6ade
    Poziom 40  
    Co prawda już pewne osiągnięcia z AVR ASM posiadam ale nie czuję się na sile szybko przenieść kod ASM z '51 na AVR ! ;)

    p.s.
    sympatyczny dziadek '51 nieludzki ??
  • #8 7427318
    manekinen
    Poziom 29  
    Ahh że się nie domyśliłem po podpisie że to w asm... Znajdę trochę czasu to wczytam się w te szeregowe HV bo jak narazie robiłem tylko równoległe. Widze że trzeba tylko 4 linie + po jednej do załączania resetu i zasilania - więc taki kasownik można śmiało zrobić na tiny13 który odblokowywałby swoich braci :)
  • #9 7463632
    manekinen
    Poziom 29  
    Kolego czy mógłbyś rozwiać moje wątpliwości, strasznie skromnie opisano te szeregowe HV w nocie...

    Program mam prawie napisany, i wygląda to tak: inicjacja trybu programowania, odczyt sygnatury, porównanie, odczyt fusebitów, zapis fusebitów, weryfikacja.

    Problem jest taki że zawsze dostaje złe wartości, na ten przykład sygnaturkę odczytuje, ni jak odczytane bajty mają się do stanu faktycznego, ale przynajmniej zawsze są takie same.

    W tabelce 55 strona 118, są dane które trzeba wysyłać. I na ten przykład dla sygnaturki, komenda to:

    SDI 0_0000_1000_00
    SII 0_0100_1100_00

    Te zera na początku i na końcu traktuje po prostu jako "puste" takty zegara, ustawiam piny w dół i cykam. Nie jestem pewien też czy między kolejnymi danymi z tabelki robić jakieś odstępy, czy cokolwiek, po prostu ładuje jedne za drugimi. Na końcu w instr.4 jednocześnie wysyłam i odbieram, oczywiście uwzględniłem te przesunięcie o jeden bit przy odczycie, ale mimo tego nie dostaje właściwej sygnaturki. Nie jestem też pewien pod jakim adresem jest który bajt sygnatury, czy są to 1 2 3 czy też może 0 1 2. Opóźnienie na linii zegarowej daje ok 1us, jest to 10 razy więcej niż minimalne.
  • #10 7470809
    sq6ade
    Poziom 40  
    manekinen napisał:

    W tabelce 55 strona 118, są dane które trzeba wysyłać. I na ten przykład dla sygnaturki, komenda to:

    SDI 0_0000_1000_00
    SII 0_0100_1100_00

    Te zera na początku i na końcu traktuje po prostu jako "puste" takty zegara, ustawiam piny w dół i cykam. Nie jestem pewien też czy między kolejnymi danymi z tabelki robić jakieś odstępy, czy cokolwiek, po prostu ładuje jedne za drugimi.


    Ładujesz ciurkiem te 10 bitów pierwszy i dwa ostatnie to zera oczywiście.
    Odczytu sygnatury nie robiłem więc nie mam z tym doświadczenia.

    :idea:
    Może wypróbuj poprawność ogólnych procedur jakie sporządziłeś wczytując np. jeden bajt do pamięci EEPROM a następnie sprawdź klasycznym ISP czy zapisuje się poprawnie w kostce.

    Moja procedurka inicjacji w asm:
    
    
    
    go:
    	mov P3,#10000111b	; zeruje linie 
    
    	jb start,$		; czeka na przycisk
    	
    	; inicjacja programowania
    
    	clr on_5		; włącza VCC
    	acall delay50		; czeka 50us
    	
    	setb on_12		; włącza 12V na reset
    	acall delay50		; czeka 5ums
    
    	setb sdo		; ustawia bit wejścia danych
    
    	acall delay500		; czeka 500us
    
    	; gotowe do programowania
    
    	mov dptr,#tabela
    	mov r5,#4		; r5 jako licznik bajtów
    	acall nxtb
    	mov r5,#4
    	acall nxtb
    	clr on_12
    	setb on_5
    	sjmp go
    
  • #11 7570280
    manekinen
    Poziom 29  
    Postanowiłem zagonić do pracy analizator stanów. Mógłby ktoś rzucić okiem na to co wysyłam? To są kolejno instr 1,2,3,4,2,4 tabela 55 strona 177 noty tiny13. Ja nie widzę błędu a nadal odbieram głupoty od procka (teraz to już nic nie odbieram bo po wyciągnięciu całości po miesiącu procek w ogóle nie odpowiada)

    1-SDI
    2-SII
    3-SDO (odłączony)
    4-SCI

    Kasownik HV ATtiny13, urządzenie ustawia fusebity.

    Zegar zwiększyłem do 2ms (1ms L i 1ms H). Na przebieg naniosłem dane z tabelki, niby jest ok. Wydaje mi się że leci w zgodzie z:

    Kasownik HV ATtiny13, urządzenie ustawia fusebity.

    Powiedzcie chociaż czy dobrze próbuję odczytać sygnaturkę, będe spał spokojnie :)

    Tutaj jeszcze wprowadzanie procka w stan programowania HV:
    
    _init:
    'Set Prog_enable pins listed in Table ## to “000”, RESET pin to “0” and Vcc to 0V
    Reset Sdi
    Reset Sii
    Reset Sdo_o
    'Set Sci
    'Set Pow
    'Reset Res
    
    'Apply 4.5 - 5.5V between VCC and GND. Ensure that Vcc reaches at least 1.8V within the next 20µs.
    Reset Pow                                                   'włączany stanem L
    
    'Wait 20 - 60µs, and apply 11.5 - 12.5V to RESET
    Waitus 40
    Set Res                                                     'włączany stanem H
    
    'Keep the Prog_enable pins unchanged for at least 10µs after the High-voltage has been applied to ensure the Prog_enable Signature has been latched.
    Waitus 100
    
    'Release the Prog_enable[2] pin to avoid drive contention on the Prog_enable[2]/SDO pin.
    Ddrb = &B111011                                             'SDO jako wejście, podciągnięte
    Set Sdo
    Reset Sci                                                   'zegar domyślnie L
    
    'Wait at least 300µs before giving any serial instructions on SDI/SII.
    Waitms 1
    

    Zgadza się z przebiegiem, czasy ok, spełniam też warunek "Ensure that Vcc reaches at least 1.8V within the next 20µs."



    EDIT



    Błąd znaleziony, przy odczycie kolejnych bajtów sygnatury nie powtarza się instr 2 i 4 ale instr OD 2 DO 4 - czli 2,3,4 pomijając jedynie 1 czyli komendę.


    EDIT

    Moje wypociny można znaleźć TUTAJ, układ skasuje fuski w każdym procku z HVSP ;)
  • #12 7933471
    IjeSJot
    Poziom 27  
    Manekinen, odnośnie Twojego Fusebit doktora, działa rewelacyjnie z Tiny13 :)
  • #13 7940414
    manekinen
    Poziom 29  
    Dzięki za info, z tego co wiem to są problemy z tiny15, zajrzyj za jakiś czas to będzie poprawka :) ... jak tylko troszke czasu znajdę żeby nad tym posiedzieć

    Jest już płytka dla kasownika atmeg, jak znajde trochę czasu to niedługo pojawi się w diy :)

    Kasownik HV ATtiny13, urządzenie ustawia fusebity.
REKLAMA