SwinSID - moje boje

arek

SwinSID

Pisząc ten tekst chcę, aby z jednej strony był opowiadaniem, a z drugiej pełnił swego rodzaju instrukcję składania i uruchamiania SwinSIDa.

Cała historia (albo przynajmniej to, co mnie zmotywowało do dalszych działań) zaczyna się dokładnie 28 listopada 2014 roku w godzinach wieczornych. Zdecydowałem się wtedy (experymentalnie) podłączyć nowego SIDa z mojego głównego C64 do starej płyty, w której uszkodzony był 6581. Czułem, że to może się źle skończyć, ale zostałem (niestety) zapewniony przez pewną osobę (nie chcę już wymieniać jej z imienia i nazwiska, bo pewnie i tak naczelny dla dobra maga by to wywalił ;), że wystarczy zmienić kondensatory na wyjściach filtra i powinno wszystko śmigać. Włożyłem układ do podstawki, pobawiłem się kondensatorami i jakoś to grało. Minęło trochę czasu (coś koło godziny) i nagle SID zamilkł. Podejrzewałem, co się mogło stać, ale sprawdziłem, czy czasem coś się nie odłączyło. Diagnoza była jednoznaczna, nie ukrywam, że nie byłem tym faktem ucieszony - - planowałem wtedy, że na razie koniec z wydatkami na stare sprzęty, a tu takie coś. No ale cóż miałem wtedy już zrobić. Kilka dni później wpadłem na pomysł, aby kupić jakiegoś nowego C64 i przełożyć 8580 z niego do mojego głównego C64. Plan idealny, tylko nie przekonywało mnie to, że będę miał dwie nieme Komody. Myślałem, żeby wyposażyć je w SwinSIDy, jednak patrząc na ceny na eBayu oszacowałem, że nie opłaca mi się ta zabawa. Składanie tego od zera wydawało mi się czymś niemal niewykonalnym, chociaż coś tam lutować umiem. Tak chodziłem, myślałem nad tym i mimo wszystko zdecydowałem się na zmontowanie własnych egzemplarzy (wychodziło jakoś o połowę taniej, niż kupno gotowego). W tym momencie popełniłem jeden błąd - zaplanowałem budowę na płytkach uniwersalnych (takich wierconych, w których się lutuje wszystko do pojedynczych otworów, łączenie kablami, więc wychodzi pająk), dlaczego? okaże się później, w każdym razie nie zależało mi na wyglądzie, a takie płytki są tanie. Jeśli chodzi o wersję, to zaplanowałem budowę Micro SwinSIDa wg schematu JargoV (do znalezienia na forum64.de w temacie tegoż SwinSIDa). Lista części i ile za to zapłaciłem prezentuje się tak (dla jednego egzemplarza):

  • ATMega88PA-PU - 8,50 zł (powinna pasować dowolna ATMega88)
  • Generator kwarcowy 32 MHz - 6 zł
  • Kondensator ceramiczny 100 nF - 0,07 zł (sprzedawane po 10 szt., czyli za 70 gr.; elektrolit też powinien pasować, chyba nawet taki jest w schemacie)
  • 2 oporniki 1k 0,25 W - 0,02 zł (kupiłem w taśmie 100 szt. za złotówkę)
  • Opornik 4,7 k 0,25 W - 0,01 zł (jak wyżej)
  • Opornik 2,2 k 0,25 W - 0,01 zł (jak wyżej)
  • Opornik 240 k 1 W - 0,10 zł (znalazłem tylko watowe, były sprzedawane w taśmie 20 szt/2 zł, 0,25 W na pewno będą pasować)
  • Listwa goldpin 1x40 - 0,36 zł (jedna listwa w zupełności wystarczy i jeszcze zostanie; posłuży do zrobienia zworek [o tym później] i przede wszystkim do nóżek dla układu [chociaż tutaj poleciłbym przedłużacz DIP czy jakoś tak, nie wiem, jak to się dokładnie nazywa i ile kosztuje, dostałem w gratisie; w każdym razie, goldpiny lubią rozpychać podstawkę]

Dodatkowo można kupić:

  • 2 zworki-jumper - 0,08 zł (nie są konieczne, jeśli nie chcesz zmieniać rodzaju SIDa - można pominąć)
  • Podstawka DIP28 wąska (nie wiem, ile może kosztować, miałem swoje, ale w przypadku zwykłej są to groszowe sprawy, a precyzyjnej - około złotówki)

! ! ! Do ceny należy oczywiście doliczyć płytkę drukowaną, ja początkowo kupiłem uniwersalną 9x15 cm za 3,30 zł, ale ostatecznie musiałem kupić normalną, 10 zł po znajomości ;) . Sposobów ich zdobycia i różnorodność cen sprawia, że ciężko ocenić, ile zapłacisz.

Wszystkie części w technologii DIP (gdybym miał lutować SMD, to prędzej, czy później zamknęliby mnie w Tworkach ;).

Podliczając, wychodzi na to, że na jednego SwinSida potrzebujemy wydać ok. 16 zł+PCB (nie liczymy cyny, kalafonii, wysyłki itd., bo nie o to tu chodzi), w moim wypadku 26 zł. Biorąc pod uwagę ceny SwinSIDa na eBayu, które przekraczają nawet 100 zł, rodzi się pytanie, co jest warte te 70 zł? Ja - nie mam pojęcia.

Mój plan zakładał od razu budowę trzech (jedna chyba miała iść na sprzedaż) sztuk. Ostatecznie skończyło się na dwóch egzemplarzach.

Nadszedł dzień, w którym dostałem swoje części, a był to 22 grudzień. Właściwie bez większej (oprócz schematów i wsadu do kontrolera) wiedzy na temat składania urządzenia zabrałem się do roboty. Od początku miałem z czymś problem, m.in. z programatorem, który się rozdupcył. Teraz właśnie należy się kilka słów odnośnie programatora. Jeśli ktoś ma już jakiś dla AVR, to oczywiście niech programuje swoim, ale jeśli ktoś takiego nie posiada, a ma komputer z portem LPT (przelotka z USB jak zwykle nie działa) i Windowsem bądź linuxem (miałem linuxa) na pokładzie, to polecam złożenie sobie prostego programatora na port LPT (koszt ok. 3 zł). Potrzebujemy tylko wtyku DB25 męskiego i trzech oporników 330 ohm. Całość jest bardzo prosta w konstrukcji.

Schemat połączenia:

Pin DB25 Opornik? Nóżka AVR
2 * MOSI
4 * RST
5 * CLK (SCK)
11 MISO
18-25 GND

Jeśli dałem * przy oporniku, to między DB25, a AVR należy wlutować opornik (kiedyś miałem do zaprogramowania ATTiny i tego nie zrobiłem, kilka razy się udało, a za kolejnym kontroler przestał działać, nie wiem, czy na pewno od tego, ale teraz już robię jak należy i wszystko działa).

Mając wszystko podłączone (zasilanie również, buchnąłem 5V z portu USB), wgrałem wsad. W moim odczuciu było wszystko jak należy, toteż zacząłem składać całość do kupy na płytce jeszcze wtedy stykowej. Pokilku godzinach od rozpoczęcia prac (przygody z ATMegą duuużo zajęły, ale szkoda opisywać) miałem prototyp (chciałem, aby do świąt był on działający). Ładnie. Podjarany poszedłem toto wypróbować i oczywiście nie działało (pewnie znawcy wiedzą, jakie błędy były). Zacząłem szukać błędnych połączeń, nie znalazłem. Rozwaliłem cały układ i jeszcze tego samego dnia (nocy) zrobiłem kolejne próby, zawsze coś było nie tak. Kolejnego dnia jeszcze coś próbowałem, z wiadomym skutkiem. Nadeszły święta, więc moja zachcianka nie została spełniona. Nie składając broni, dnia 27 grudnia postanowiłem zaszaleć i zbudować nie prototyp, a działającą całość. Kilka (...) godzin z lutownicą uświadomiły mi, że mam bardzo poparzone palce :D. Dawno nic tak ciężko mi nie szło (2 miesiące wcześniej zdołałem przy użyciu tego samego sprzętu naprawić Elwro 800 Juniora, który ma okropnej jakości płytki drukowane, i było to łatwiejsze). ALE! Miałem już polutowany twór swinsidopodobny, więc nic, tylko sprawdzać. Włożyłem inną ATMegę (przewidując ewentualne uszkodzenie tamtych, swoją drogą upaliłem jeden generator i z planowanych trzech, zrobiły się dwa egzemplarze do budowy). Sprawdzam... "%$&"%&!$"% Tyle roboty i efekt (prawie) jak poprzednio. Przez chwilę zwątpiłem, pomyślałem, czy jest sens dalej się męczyć... ale jestem uparty, więc nie ma przebacz. Procedura jak z płytką stykową, ale nie budowałem od nowa, bo to byłaby katastrofa. Dnia następnego (czyli równo miesiąc po utracie nieodżałowanej kości CSG 8580R5 3790 25) nawiązała się między mną, a kolegą (który w przyszłości uratuje całą sprawę) na magiczny temat fusebitów. Nie wiedziałem co to, bo nie czytałem żadnych instrukcji, a moje doświadczenie z AVR to wspomniana Tiny, którą i tak uszkodziłem. Zastosowałem się do jego poleceń i zaprogramowałem scalak po raz 65536, sprawdzam i co? I nie działa (chociaż było słychać postęp). Gość wymiękł, ja też, ale walczymy, nie poddajemy się, walczymy. Wieczorem napisałem na stosownym forum (niemieckim) co i jak, dostałem odpowiedź, żeby sprawdzić bity odpowiadające za dzielenie i wybór sygnału zegarowego. Próby, próby, próby, skutek znany, chociaż prawdopodobnie wtedy już AVR był zaprogramowany dobrze, ale skąd miałem to wiedzieć. Napisałem kolejnego posta, ale na niego już nikt nie odpowiedział, musiałem działać sam. Nadszedł sylwester, ja przed 12 nie świętuję, więc mam czas na to, żeby się bawić. Szukałem po forach i znalazłem instrukcję programowania ATMeg tak, żeby działały jako SwinSID. Mając ATMegę88 PA-PU, programator BASCOM SAMPLE Programming Cable (tak się ten prosty twór nazywa) i program AVRDude, magiczną formułą jest (należy wklepać w linię poleceń):

avrdude -c bascom -p m88p -e -U flash:w:XXXX -U lfuse:w:0xe0:m -U hfuse:w:0xdf:m

gdzie za XXXX należy wstawić ścieżkę/nazwę pliku ze wsadem. Jeśli ktoś ma inny programator, podstawia jego nazwę za "bascom", przy innym rodzaju kontrolera należy odpowiednio zmienić "m88p", ostatecznie można tam dać "m88 -F" i powinno działać (na linuxie, jakby nie poszło, trzeba sobie jako root ustawić prawa do portu LPT). W tym momencie, jeśli wszystko poszło bezbłędnie, powinniśmy mieć właściwie zaprogramowany kontroler. Miałem go i ja (a ile mnie to kosztowało nerwów...), ale co mi po nim, skoro całość nadal nie działała jak trzeba. Postanowiłem nie psuć sobie humoru przez następny czas i schowałem projekt do szafy. Przez te X tygodni kilka razy rozmawiałem z kolegą na temat zamienników scalaków dźwiękowych (tak się składało, że on jakoś w tym czasie miał na warsztacie zamiennik AY, też na AVR, który w przeciwieństwie do mojego działał). Wysnuwał różne teorie, sprawdzałem od biedy, czy to czasem nie to, i to nie to (to). Zaproponował w końcu, że mi wytrawi porządną płytkę do SwinSIDa. Ja jakoś średnio entuzjastycznie podchodziłem do tego pomysłu. Minął jakiś tam nieokreślony odcinek czasu i znów pojawiła się propozycja płytki. Okazało się, że opracował kawałek mniejszą wersję PCB i może mi po bardzo atrakcyjnej cenie opchnąć to razem z podstawką, porządnymi nóżkami (zamiast goldpinów) i innymi duperelami, które na tej płytce są nie wiadomo po co (jajco). Zgodziłem się i kilka dni później otrzymałem dwa zestawy.

Udało mi się to szybciutko polutować, próbujemy.

D Z I A Ł A!!!!!!!!!!!

A było to 17 marca 2015 roku.

SwinSID - widok od spodu

Cztery miesiące trwała moja walka, krew lała się strumieniami, były poważne chwile zwątpienia, to był bardzo ciężki czas, ale wróg okazał się słabszy i zwyciężyliśmy ;). W końcu mogłem nasłuchać się, jak mój pierwszy najpierwsiejszy komputer wydaje z siebie (legalne) odgłosy (dostałem go i z tego, co pamiętam, od zawsze miał uwalonego SIDa, później kupiłem obecnie głównego C64). Został drugi zestaw, złożyłem go dwa dni później, przywracając mowę egzemplarzowi, któremu zarąbałem SIDa. Tutaj miałem małe komplikacje, bo mój egzemplarz rozepchał goldpinami podstawkę i czasem to niedomagało, obczaiłem to jakoś ostatecznie. Po drodze, między pierwszym, a drugim porządnym zamiennikiem pojawił się pomysł: skoro tak łatwo to idzie, to może zacząć to produkować i sprzedawać? Szybko z tego zrezygnowaliśmy, bo coś i tak dalej. Tego drugiego C64 (i niepotrzebnymi mi już akcesoriami) wymieniłem z innym kolegą za PS2 (piekielna maszyna, chociaż pewnie mnie zlinczujecie za kolaborację z konsolami i to nie takimi starymi ;). SwinSID w starym C64 służy sobie w spokoju, odpalany raz na jakiś czas. A tym artykułem chciałbym symbolicznie i ostatecznie zamknąć okres w którym uwaliłem 8580, a później budowałem zamienniki. Z jednej strony ciężki, z drugiej bardzo fajny, nie tylko licząc C64 i tym podobne, ale to temat na inny artykuł, którego nie napiszę, bo nie ma takich magazynów :D. Będę mimo wszystko miło wspominał, jak będę stary (już wspominam, jestem stary widać :D). To taka chwila refleksji i innych takich, poniżej krótkie podsumowanie, czy warto kupować/budować itd.

SwinSID w miejscu SIDa

Na sam początek podsumowanie, generalnie: Nie budować na jakichś prowizorycznych płytkach, niezależnie od tego, jakie to by miało "zady i walety". NIE! Prawdopodobnie to się nie uda (niekoniecznie złe połączenia czy coś, ale zbyt duże odległości między elementami-ważna rzecz przy przetaktowywaniu). Widziałem, jak komuś na stykówce działało, ale to była chyba inna wersja, z niższymi częstotliwościami. U nas nie przejdzie. Jak zaprogramujesz dobrze mikrokloca i nie walniesz błędu przy robieniu płytki, to nie może nie działać.

A czy warto? Niezależnie od tego, czy kupisz, czy zrobisz samemu, (cytat) C64 ze SwinSIDem jest nieporównywalnie lepszy od C64 bez dźwięku. Ma on swoje wady np. generowany dźwięk pewnie nieznacznie róźni się od oryginalnego (ja nie zauważyłem), ale przede wszystkim przy niektórych melodiach potrafi się zaksztusić (nie jest to nagminne). Mimo wszystko warto. Budować, czy kupić? Nie napisałbym tego arta, gdyby nie moje zdanie, że opłaca się bardziej zbudować samemu, niż kupić gotowca. Oczywiście, jeśli ktoś ma jakieś doświadczenie z elektroniką bo powiedzmy sobie szczerze: kompletny laik może sobie nie poradzić (po to w sumie jest ten artykuł: żeby przybliżyć tajniki budowy tego sprzętu). Wybór należy do Ciebie, choć ja zachęcam... Wiadomo :).

SwinSID po złożeniu. Do operacji nadaje się m.in. Atmega88PA-PU.

Dotarliśmy prawie do samego końca, pozwolę sobie jeszcze wrzucić jakieś pozdrowienia. Przede wszystkim należą się one osobie, od której to wszystko się zaczęło - kuzynowi Tomkowi, od którego dostałem pierwsze C64 bez dźwięku ;).
Nie możemy zapomnieć o osobie, która podała mi swego czasu złe info i upaliłem SID-a. Niech pozostanie anonimowa.
Karol - za PCB półdarmo.
Ela - utrzymywała mnie w krytycznych chwilach jako tako przy normalności ;).
Paweł (V-12) - zmotywował do pisania arta gdzieś w połowie mojej męki :D.
Bartek - za wymianę na piekielne PS2, które nie daje mi czasu na nudę.

Uwaga!!! Przed programowaniem należy sprawdzić dwa razy, albo i więcej, czy parametry są poprawne, bo następnym razem uda Ci się zaprogramować TYLKO z podłączonym generatorem (chyba, że któryś fusebit został źle zapisany, to może wyjść albo lepiej, albo gorzej, albo kloca zablokujesz. albo zaprogramujesz bez generatora).

Powodzenia!

arek, 26 czerwca 2015 r.

Na deser coś dla ludzi o mocnych nerwach. Tak wyglądał SwinSID na płytce stykowej:

Pierwsza wersja SwinSIDa