programator rownolegly - na ile to skomplikowac?

Jul 26, 2008 15 Replies

Właśnie myślę nad zrobieniem sobie takiego bardziej uniwersalnego programatora. W układach, które w życiu programowałem (a nie było tego wiele) wystarczały stany H, L, masa, napięcie zasilania, napięcie programujące - czyli robię np. podstawkę ilośtam pinową, każdy pin mogę ustawić zworką na: masę, wejście-wyjście, napięcie zasilania i dodatkowo jeden z pinów (to już kabelkiem) na takie coś, co mi ustawi programowo: stan niski, stan wysoki, napięcie zasilania lub napięcie programujące. Tu oczywiście pytanie, czy jest potrzebne coś więcej? - jeśli tak, to do jakiego (przydatnego) układu. Konstrukcja wejścia-wyjścia jak w prockach '51, czyli L wymuszamy H podciągamy (10k?) i w przypadku wejścia sprawdzamy co tam mamy. Czy jest potrzebny stan wysokiej impedancji?



Mirek.


Witam,

Dnia 26.07.08 (sobota), 'Mirek' napisał(a):

Weź jakiś a miarę nowoczesny procek (np. byle AVR), gdzie piny są dowolnie konfigurowalne i typu push-pull - możesz wtedy zadać (prawie) wszystkie wymagane stany - masę (pull, stan L), zasilanie (push, stan H - wydajność kilkadziesiąt mA, więc do zaprogramowania spokojnie wystarczy), wyjście (H/L), wejście (w razie potrzeby możesz włączyć wewnętrzne rezystory podciągające do Vcc/GND), oraz stan wysokiej impedancji. Z drugiej strony jakieś USB, albo RS-232 do komputera, czy coś tym stylu... Oprogramowanie w uC na tyle elastyczne, że wszystkie poziomy i stany zadawane z PC.

Problem może być inny - programator równoległy kojarzy mi się z możliwością programowania procka z wykorzystaniem wyższego napięcia niż napięcie zasilania (np. '51, AVR) - np. dla Vcc=5V potrzeba często na wejście RESET podać +12V. I tu należało by albo rozważyć, jakie procki będą programowane i odpowiednie piny wyposażyć w możliwość generowania wysokiego napięcia, lub przemyśleć/rozbudować układ tak, by każdy pin to potrafił...

Bo tak poza tym to chyba wszystkie "dzisiejsze" procki programuje się szeregowo z wykorzystaniem tylko i wyłącznie napięcia zasilania. A programator równoległy nie powinien mieć żadnych ograniczeń w programowaniu, chyba, że zależy nam tylko na szybkości.

Zasilanie i masę wolę jednak podawać zworkami.

No właśnie raczej nie ma takiej potrzeby - takie wielostanowe wejście jest zwykle tylko jedno - zdejmuję zworkę i wpinam kabelkiem ten układ, który będzie podawał GND, Vcc, Vp.

Mirek.

Pan Mirek napisał:

Ma realizować parallel programming? Ciekawe zagadnienie, choć w sumie dość skomplikowane.

Witam,

Dnia 26.07.08 (sobota), 'Mirek' napisał(a):

Dlaczego? Obawa, że przez przypadek (?!) nieprawidłowo zostanie podane napięcie zasilania (np. odwrotna polaryzacja)? Zworkami też się możesz machnąć i niewykluczone, że prawdopodobieństwo jest większe... :)

Jak widać mamy odmienne podejście do programatorów. Dla mnie programator ma być możliwie automatyczny - żadnych zworek, przełączników, przycisków. Ty jak widzę kochasz zworki. ;) Nienawidzę, gdy przed jakimś programowaniem muszę za każdym razem wcisnąć jakiś knefel. Gdybym robił programator pod różne układy, to chciałbym, aby jedyny wybór układu następował z poziomu komputera. Programator sam może wykryć włożenie układu i może sprawdzić, czy właściwej wielkości układ został podłączony (przetworniki ADC), oraz może spróbować odczytać sygnaturę. Jeśli coś się nie zgadza, to odłączamy układ. Trwa to ileś tam milisekund i możemy wszystko spokojnie zasilać ze stabilizatora z ograniczeniem prądowym (np. 20mA) - mniejsze ryzyko uszkodzenia.

No w ostateczności jakiś przełącznik przy samym programatorze, ale to wtedy musiałby być jakiś problem skomplikowany... :)

Dla formalności - programator równoległy to dla mnie układ, do którego wkładamy programowaną kość. Podłączanie programatora do jakiegoś gotowego układu jest nieco bardziej skomplikowane i wtedy rzeczywiście zworki mogą być potrzebne... Zakładam, że rozmawiamy o tym pierwszym.

Nie. Raczej obawa, że będę kiedyś chciał zaprogramować, albo przetestować jakiś "cięższy" układ (ttl?), poza tym możliwe będzie wykorzystanie tego programatora do przetestowania jakiegoś nowego projektu (zadajemy stany z komputera) i konieczność dołączenia gotowych już układów wykonawczych - takie niepewne zasilanie może powodować różne problemy, a przestawienie zworek raz na jakiś czas (nie bawię się przecież jednocześnie kilkoma mikrokontrolerami) to żaden problem.

I będzie automatyczny, Robienie 40-tu programowanych źródeł napięcia po to tylko żeby raz na parę dni móc kliknąć myszką zamiast przestawić zworkę?

Układ musi być możliwie prosty, bo inaczej nigdy go nie ukończę ;) i znowu za jakiś czas będę lutował na kolanie kolejny programator albo układ testujący.

Mirek.

Czemu nie? Jeśli tylko zajdzie taka potrzeba, to będzie kwestia napisania odpowiedniego skryptu, a na razie założenia są takie żeby programować układy, których się nie da szeregowo.

Mirek.

Polecam zrobienie lub kupienie programatora Willem. Schematy i PCB na sieci. K.

Mirek pisze:

Poleciłbym Ci zrobić zworkę, która zwiera dany pin układu do portu jakiegoś uC i do tego kabelki, którymi możesz na taki pin zamiast we/wy podpiąć np. zasilanie. I gdzieś z brzegu płytki umieścisz takie "jeże" - po kilka pinów z VCC, z GND i może z jakimś sterowanym 12V :)... . To wystarczy :)... Co do uC - ważne, żeby miał stan wysokiej impedancji!! Często nogi do programowania są wykorzystywane przez mikrokontroler jako We/Wy i gdy wyjdziesz z trybu programowania (czasem jest to konieczne) ten program zacznie działać i poda Ci np. zewrze Ci taki pin do masy, a Ty w tym czasie podawać będziesz tam zasilanie ;)...

Pozdrawiam Konop

Znam to z AVT - za mało uniwersalny - tzn. lista obsługiwanych kości jest ogromna i pewnie w życiu nie będzie tyle potrzeba, ale ja chcę mieć możliwość ustawienia KAŻDEGO pinu na wejście lub wyjście, bo inaczej będę chciał przetestować jakiś układ i znowu lutownica do ręki.

Mirek.

Widzę, że myślisz podobnie, tylko co do tego czy będzie to uC czy układ logiczny (prosty) sterowany z komputera to jeszcze się zastanawiam.

Proszę o konkretny przykład - który układ tak robi? tzn. któremu pin zasilania albo Vp zamienia się w wyjście? Bo jeśli poda mi stan niski podczas gdy ja podaję wysoki (logiczny) to nie ma problemu jeśli mam wyjścia OC.

Mirek.

Praktyka dowodzi, że dążysz do wyspecjalizowanego programatora dla kilku kości. Willem ma bardzo elastyczną budowę, można napisac program dla swojej wybranej pamięci. K.

"John Smith" snipped-for-privacy@buziaczek.pl schrieb

Pod warunkiem ze ma sie adapter (ten jeden z wielu oidp).

hej

Wychodzi mi około 30 kości 40xx, więc chyba najlepiej będzie zastosować dwie atmegi16 i sterować wprost z wyprowadzeń.

Mirek.

Mirek pisze:

To już lepiej po prostu jedną ATmegę 3250.

Nie ma szans. ATmega16 jest w zwykłej obudowie DIL40 - w razie draki wyciągnę ją z podstawki i wsadzę nową. Do tego dwie 16-ki to dopiero połowa ceny 3250. W każdym razie dzięki za zainteresowanie.

Mirek.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required