Manekinen pisze:Też widziałem te projekty, ale były to dedykowane dla konkretnego modelu, np t13 czy t12. Układ taki nie odczytywał nic, nic nie sprawdzał, po prostu wysyłał dane i tyle.
Zgadza się, choć do większości zastosowań był on wystarczający.
Znalazłem linki do tych projektów - oto one:
http://cappels.org/dproj/t12fp/t12f.htm
http://home.ict.nl/~fredkrom/pe0fko/Fus ... -ATtiny45/
http://www.microcontrollerprog.com/
Autorzy tych projektów udostępnili źródła, które pomagają zrozumieć jak to działa oraz mogą stanowić jakąś tam bazę pomysłów do podobnych rozwiązań.
Manekinen pisze:Ten mój odczytuje sygnature i sam wie w jaki procek co ładować
Ale przecież sekwencje te nie różnią się między 8-pinowymi ATtiny, no może poza ATtiny15, który ma SCI na pin.3, a nie pin.2 jak reszta w rodzinie.
Czy są jakieś jeszcze inne przesłanki wymagające znajomości sygnatury układu?
Manekinen pisze:A pomysł takiego "tłumacza" SPI>HVSP (bo chyba o tym piszesz) też mi się w głowie zrodził, jest to możliwe do wykonania, czemu nie
Mój pomysł opiera się na wspólnym sterowaniu programatora na LPT, który w zależności od trybu pracy (sterowanego programowo z komputera) działałby w standardzie STK-200 (ISP) oraz HVSP i tu niestety standardu na LPT nie ma, a przynajmniej ja nie znalazłem, więc tworzę własne rozwiązanie. Pierwszym pomysłem było "podłączenie" się z własnym rozwiązaniem sprzętowym pod standard dostępnego oprogramowania, tak by zaoszczędzić czasu na pisaniu softu na PC, choć i taką ewentualność brałem pod uwagę. Znalazłem STK-500 z opcją HVSP, ale z uwagi na złożoność i koszt tego rozwiązania odstąpiłem od tego poszukując prostszych rozwiązań, bo przecież HVSP nie różni się zbytnio od ISP. Przeanalizowałem możliwości konfiguracyjne avrdude - w szczególności arvdude.conf i sekcji programmers, ale niestety nie znalazłem tam możliwości zamapowania na port równoległy sygnałów dla protokołu HVSP, a szkoda, bo oprogramowanie to wspiera HVSP.
Manekinen pisze:Wiem że tiny15 ma portb.3 na innym pinie niż reszta 8 nóżkowców, uzwględniłem to i jest osobna ścieżka dla niego. Jeszcze nie wiem jak to oprogramuje, nie wiem czy jednocześnie na dwie moge podawać zegar, czy w razie niepowodzenia przełączać te nóżki i próbować ponownie z nadzieją że to t15 a nie 13.
Możesz podawać na raz na pin 2 i 3 przez rezystory, tak jak zrobiłeś - SCI jest sygnałem wejściowym idącym do programowanego układu, więc stan logiczny na drugim pinie nie będzie na niego wpływać - nawet zaryzykowałbym twierdzeniem, że SCI może wychodzić z Twojego doktora na jednym porcie i rozdwajać się przez 2 rezystory na pin 2 i 3 leczonego.
Drugie rozwiązanie to 2 próby inicjalizacji - jedna na SCI na pinie 2 i jak się ona nie powiedzie, to przejście z SCI na pin 3 i ponowienie sekwencji inicjalizacyjnej.
Manekinen pisze:Co do inicjalizacji HV - czytałem na zagraniczncyh forach że niby jest jakaś różnica, że trzeba kilka razy machnąć zegarem przed dawaniem jakichś komend. Otóż wszystkie noty 8-nóżkowców jakie przeglądałem nie mają takiego czegoś napisane - i inicjuje bez machania zegarem. Ponadto - na próbę sprawdzałem jak się zachowa pacjent jeśli dma mu kilka taktów zegara na początku... przy dalszej komunikacji wysyła spowrotem błędne dane.
Ja podaję te 6 cykli na SCI, choć w PDF-ie są podane 2 sposoby z i bez tego.
Wydaje mi się, że mogą być one istotne gdy port resetu jest przełączony na I/O (RSTDISBL), chyba że MCU robi detekcję +12V na !Res i to dla niego jest wystarczającym wyznacznikiem razem z 0/0/0 na SDI/SDO/SII w fazie startu MCU. Ale tu niestety pewności nie mam - producent podaje 2 algorytmy i jak dla mnie nie podaje przekonujących danych, który jest wystarczający i w jakich przypadkach lub nie oraz dlaczego.
Manekinen pisze:Prawdopodobnie traktuje on te takty jako początek transmisji, bo każdy bajt zaczyna się jednym pustym taktem a kończy się dwoma. Natomiast wzmiankę o machaniu zegarem przy inicjacji posiada każda nota procków z interfejsem równoległym - i przy zabawach takie coś stosowałem i to działało.
Może nie robisz za mało lub za dużo tych machań, albo zaczynasz nie tym zboczem, co trzeba? Zawsze można spróbować po tej sekwencji wysłać komendę NOP i badając SDO wykryć, gdy kontroler potwierdzi instrukcję. Pamiętam, że w ATtiny12 był błąd, który po instrukcji erase`a odbiegał od specyfikacji i trzeba było tam wstawiać sztuczne nop`y.
Manekinen pisze:Możesz dac przykłąd w której nocie znalazłeś taką wzmiankę?
Oczywiście - np. dla ATtiny13a
http://atmel.com/dyn/resources/prod_doc ... oc8126.pdf
Pkt. 17.7.1
"To program and verify the ATtiny13A in the High-voltage Serial Programming mode, the following sequence is recommended"
a następnie
"If the rise time of the Vcc is unable to fulfill the requirements listed above, the following alternative algorithm can be used."
Manekinen pisze:Hmm nie bardzo rozumiem ostatniego pytania... nie można od razu podawać resetu, należy to zrobić w ściśle określonym czasie (20 - 60us) - wprawdzie nie próbowałem inaczej, ale robie wszystko wg noty, bo jeden procek może wejść w tryb programowania a inny będzie kapryśny.
Właśnie w tym drugim algorytmie nie ma słowa o czekaniu 20-60us, tylko od razu podaje się 12V jak tylko napięcie na Vcc osiągnie podaną wartość - cyt.
"3. Monitor Vcc, and as soon as Vcc reaches 0.9 - 1.1V, apply 11.5 - 12.5V to RESET."
Stąd też moje wątpliwości.
Manekinen pisze:Co do timingów, tak wygląda u mnie cała sekwencja odczytania sygnatury (linia odbioru była tutaj odłączona) - zarejestrowane analizatorem stanów logicznych, dane naniosłem ręcznie.
[url=http://www.swiatelka.pl/upload_img/miniaturki/IMG_4b5c6eaab1c70490.jpg]Obrazek[/url]
Czyli najpierw wystawiam dane na linie, zegar w górę, a wraz z wyłączeniem zegara zmieniam dane. Przy odczycie dane dostajemy z lekkim przesunięciem. Do tego odczytując dane nie ma pierwszego pustego taktu, ale w tym miejscu jest już najstarszy bit bajtu. Jeśli masz długą taśmę to to może być przyczyna, producent pisze o 220ns każdego taktu, ile ty stosujesz? U mnie lata to na 1us góra i 1us dół, czyli 2us cały takt. Równie dobrze chodzi przy zegarze 2ms czy większych, możesz zwiększyć to pozbędziesz się problemu.
Skrócę testowo połączenie lub/i poblokuje linie pojemnościami.
Manekinen pisze:I jeszcze chciałbym poruszyć temat sygnatur, bo widzę że jesteś w temacie. Można znaleźć w internecie szczątkowe informacje na temat wymazanej, usuniętej sygnatury. Sygnatura wraz z bajtami kalibracji i innymi nie jest na stałe zapisana we wnętrzu struktury, ale w specjalnej części flasha. Mi się już dwukrotnie przydażyło że usunąłem sobie sygnaturkę, objaw jest taki że procek przedstawia się jako FF FF FF ale funkcjonuje w pełni normalnie, fusebity, flash, eeprom działają, program się wykonuje. Właśnie przy zabawie z tym HVSP kilka dni temu wymazałem sobie sygnaturkę z t13, po wykonaniu polecenia chip_erase sygnatury już nie było. Co jest dziwne a nigdzie nie można znaleźć info na ten temat, dokumenty atmela milczą
avrdude ma opcję odczytu i zapisu sygnatury - spróbuj ją w ten sposób ustawić, a jak masz analizator, to może podpatrzysz jak on to robi