2,951

(24 odpowiedzi, napisanych Sprzęt - 8bit)

No tak, z tego wynika, że układ jest zasilany bezpośrednio z programatora, więc nic więcej do tego nie podłączaj. Musisz zainstalować jakiś sterownik do tego programatora, a następnie odpalić program, który wybrałeś do programatora i powinien zobaczyć/wykryć atmegę. Jak dojdziesz do tego stanu, to następnie bierzesz się za programowanie.Najpierw odczytujesz fusebity, żeby sprawdzić jak były ustawione i jeśli inaczej niż pisano tutaj w wątku, to ustawiasz je/zaprogramowujesz tak jak mają być. Na koniec zaprogramowujesz nowy wsad, odłączasz wszystko od kompa, podłączasz do Atarynki i grasz w River Raida:-)

Edit: aha, zawsze programuj wszystko z weryfikacją, lub rób weryfikację zawartości układu z zawartością bufora. Może się zdarzyć i zdarza się czasem, że wszystko przebiegnie pomyślnie, ale gdzieś tam coś się nie zgadza, jest mały błąd, którego nie zauważysz na początku, a który wyjdzie przy jakiejś tam okazji w przyszłości i się zdziwisz.

2,952

(130 odpowiedzi, napisanych Fabryka - 8bit)

Nie chcę się wtrącać, ale moim excelem wychodzi jak w mordę strzelił 0.7% :-)

2,953

(2 odpowiedzi, napisanych Bałagan)

Przyłączam się do pytania, bo jak ktoś poleci coś godnego uwagi, to również był bym chętny na taką maszynkę.

Jednak od siebie powiem, że jakiś rok temu przeryłem w tym temacie cały internet próbując znaleźć coś godnego uwagi przez jakieś 2 tygodnie i konkluzja była taka, że wszelkie tanie rzeczy (w sensie, żeby było taniej niż urządzenie dedykowane) były raczej zabawkami niż przyrządami pomiarowymi. Dobre oscyloskopy podłączane do kompa to był wydatek tego samego rzędu co dedykowane urządzenie (w sensie oscyloskopu cyfrowego). Ostatecznie stwierdziłem, że nie warto, a do analizowania magistrali itp. kupiłem sobie analizator logiczny Saleae, który całkiem fajnie się spisuje, chociaż używałem go od tego czasu niewiele.

Do analizowania sygnałów cyfrowych, timingów itd. lepszy jest taki analizator, bo ma np. 8 czy 16 kanałów i można te przebiegi względem siebie podglądać. Oczywiście nie pokaże analizator logiczny kształtów przebiegów, kształtów zboczy itd, czy zakłóceń - do tego już potrzebny jest oscyloskop oczywiście. Ja myślałem o oscyloskopie, bo bawiłem się też urządzeniami audio i bardziej pod ich kątem by mi się przydał, ale jak już myślałem o oscyloskopie, to chciałbym coś co będzie do wszystkiego i na zawsze. Tak że ceny mnie zabiły stąd dałem sobie spokój i poszedłem w stronę analizatora logicznego na razie.

Oscyloskopów tradycyjnych lampowych trochę w życiu używałem i od takowego oczekuję pokazania dokładnych przebiegów z ich kształtami, no a do tego jednak jest potrzebny porządny oscyloskop, a nie zabawka. Jeśli chodzi o cenę i dlatego miałby być podpinany do kompa, to już lepiej kupić jakąś porządną używkę lampową. No ale to klocek, miejsce trzeba na to mieć:-)

To takie moje przemyślenia, czyli przede wszystkim odpowiedz sobie na pytanie co tym chcesz robić i czy rzeczywiście potrzebujesz oscyloskop czy może jednak analizator logiczny.

Silna pastylka neodymowa w okolicach stacji dyskietek nie zaburzy jej pracy, lub też nie uszkodzi dyskietki? Nie wiem, tak pytam, nie wiem jak mocne są te pastylki w sensie "zasięgu" silnego pola magnetycznego, ale drzwi od ikeowej szafy trzymają tak, że ciężko je otworzyć.
W kwestii umieszczania przełączników, to miejsce przy kartridżu bardzo fajne, pod spodem przy portach myszy/joya też. Ale to wszystko zależy od tego jak często coś tam przełączamy, trzeba dobrać indywidualnie. Ja np. mam w Amidze bootselector, którego wcale nie przełączam, więc mam zworkę w środku obudowy w ogóle bez dostępu i też mi się świetnie sprawdza:-)

No ale jak to? Cuda? Przecież jak dobrze zaprogramowane kości i poukładane adresy, to musi działać taki przełącznik TOS-ów i jakoś nie chce mi się wierzyć, żeby ktoś wynalazł powód dla którego jakaś jedna konkretna wersja w takiej sytuacji miała by nie działać.

W kwestii tematu kontaktronu, to zadziałać - zadziała na pewno, ale widzę praktyczny problem wykorzystania tego rozwiązania przy np. przełączaniu TOS-ów. Ktoś już gdzieś proponował, żeby nawet magnesik wsadzić w jakiś gadżet Atarowy, że niby sobie stoi jakaś figurka czy coś w okolicy kompa:-) Ale problem praktyczny z tym jest taki, że wystarczy lekko przesunąć przypadkiem ten magnesik (co zdarzy się na 100% prędzej czy później) i przełączą nam się TOS-y w najważniejszym momencie pokonania trudnego fragmentu gry, z którym się nie mogliśmy uporać od kilku ładnych dni:-) Nie wiem czy nie przeklniesz wtedy tego magnesiku oglądając na ekranie krzaki zamiast napisu congratulations:-)

2,956

(24 odpowiedzi, napisanych Sprzęt - 8bit)

@pajero są dwa "standardowe standardy":-) złącz programowania do Atmela. Kanda IDC10 i drugi mniejszy IDC6. Kanda jest bez sensu o tyle, że zajmuje więcej miejsca na płytkach, a nie ma nic dodatkowo, tylko powielone masy na pinach. Dlatego najczęściej dziś stosuje się ten standard 6-pin. W SIO2SD został zastosowany właśnie taki standard.

Natomiast druga sprawa, to programatory ISP - to skrót od In System Programming - czyli programowanie mikrokontrolera w systemie, w układzie. Krótko mówiąc o to właśnie w tych programatorach chodziło, żeby można było bez wyciągania, bez wylutowywania przeprogramowywać mikrokontroler bezpośrednio w działającym układzie. Dodatkowo na złączu programatora mamy zasilanie i masę, więc można w czasie programowania cały układ tędy zasilać.

Koncepcja taka bardzo się przydaje. Ja np. w moim projekcie (S)NESctrl tak zaprojektowałem układ, że złącze służące do podłączania pada jest jednocześnie złączem programatora:-) Do komunikacji z padem sprytnie wykorzystałem te same piny mikrokontrolera, które są wykorzystywane do jego programowania. Dzięki temu nie potrzebuję dodatkowego złącza programatora na płytce, a mogę łatwo zmieniać firmware:-) http://www.atari.org.pl/forum/viewtopic.php?id=14670

2,957

(24 odpowiedzi, napisanych Sprzęt - 8bit)

A po co Ci 2.5? Załaduj mu od razu najnowszy 3.1RC2. Tam wszystko w nim działa elegancko.

Zajrzałem teraz do swoich archiwów, bo kiedyś miałem wersję 2.x w swoim SIO2SD i podobnie mi się wywaliło jak u Ciebie. I wtedy to naprawiałem. Teraz w moich archiwach znalazłem notatki swoje z tamtego czasu. W pliku tekstowym miałem zapisane, że właśnie te fusebity, o których pisałem wcześniej ktoś w tym moim egzemplarzu źle poustawiał. Jest też zapisek, że ustawiłem HI na C3, i LO na 3F, więc tak jak pisał x_angel.

W archiwach mam też wsad, którym programowałem Atmegę 3.1RC2 oraz configurator 3.5. Jak by co, to gdyby tam linki nie działały, albo był nie taki jak trzeba, to wyślij mi swój adres mailowy na PM, wtedy podeślę Ci mailem te dwa pliki.

Co do programowania, to również w zapiskach sprawdziłem, że złącze na SIO2SD sześciopinowe ma taką samą kolejność pinów jak ta przejściówka, którą zamówiłeś, więc podłączasz przez tą przejściówkę do programatora i programujesz.
Musisz doczytać czy ten Twój programator ma możliwość zasilania programowanego układu z siebie, wtedy nie podłączasz SIO2SD do Atarki, w przeciwnym razie musisz podać zasilanie, więc np. tak jak to napisano podłączyć do Atarki i włączyć.

2,958

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Kluczowe są najstarsze bity fusebitu L.
Tam jest ustawione 3F, więc te dwa najstarsze bity mamy mieć ustawione.

Jeden z nich to BODEN, a drugi to BODLEVEL. BODEN włącza wewnętrzny układ kontroli napięcia zasilania w atmedze, który  powoduje, że jeżeli napięcie zasilania odbiegnie od wskazanego, to układ przejdzie w stan reset i nie będzie działał, więc na pewno nie zapisze nic błędnie do pamięci EEPROM. BODLEVEL ustawia poziom zadziałania.

Gdy nie mamy tego włączonego, to może nam się wywalać pamięć EEPROM w atmedze i zapewne tak się dzieje, bo w trakcie zapisu do tej pamięci jeśli nie mamy stabilnego napięcia, to zapisują się krzaki. Na oko w pamięci tej przechowywane są nasze ustawienia i ostatnio wybrany folder/plik/nr stacji czy co tam jeszcze da się zapisać w SIO2SD. Krzaki tam zapisane powodują, że soft nie umie z tym działać i jest "wysypany", bo po prostu wisi nie umiejąc nic zrobić z krzakami odczytanymi zamiast spodziewanych wartości.

Wg mnie niestabilne napięcie zasilania atmega dostaje w trakcie znaczącego chwilowego poboru prądu, kiedy następują "piki" na zasilaniu spowodowane jego znacznym spadkiem na ułamek sekundy. Swoją drogą konstruktor SIO2SD najwyraźniej olał podstawowe zalecenia producenta mikrokontrolera. Poza szeregiem innych zaleceń Atmel wyraźnie podaje dla wszystkich swoich mikrokontrolerów, że bezpośrednio przy zasilaniu mikrokontrolera należy zastosować dwa kondensatory: 100nF blokujący i minimum 100uF - który właśnie by te spadki napięcia nam pięknie wyeliminował, ale na schematach SIO2SD jakoś go nie widzę. Dziwię się temu trochę, bo całe urządzenie to dość zaawansowana konstrukcja, a tu takiej podstawowej pierdoły nie przestrzegł konstruktor?

2,959

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Widzę, że każdy programuje innym softem, jak komu wygodniej i co się komu sprawdza:-)
Dorzucę swoją metodę: ja z kolei używam do programowania wszelkich atmeli Bascom AVR.
Kiedyś dawno temu bawiłem się Bascomem, później przesiadłem się na język C i obecnie programuję wszystko na AVR-y w C w Atmel Studio. Ale Atmel studio wspiera tylko swoje programatory, zwykłego USBasp nie zobaczy, więc z przyzwyczajenia używam ciągle programowania z Bascoma.
W każdym razie mi ten Bascomowy wypalacz pasuje, nigdy nic mi nie uwalił i jest dość wygodny.

2,960

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Z tymi kilkoma atmelami, to nie przesadzaj, szkoda kasy. Możesz ćwiczyć na tym swoim, tylko przestrzegałem, żeby zachować ostrożność, bo za pomocą fusebitów ustawia się np. takie rzeczy jak zegar, taktowanie, no i jak tam coś nieumiejętnie ustawisz, to może Ci już procek po prostu nie wstać, więc trzeba to robić po prostu ostrożnie i 10x sprawdzić jak wszystko poustawiałeś zanim klikniesz, żeby to zapisać w procku. Poprawne ustawienia fusebitów były podawane dopiero w czasach ostatnich wersji 3.x więc jak miałeś 2.5, to bardzo prawdopodobne, że były źle poustawiane, bo kiedyś ktoś tam źle to podał i była to istna plaga, że się te atmegi wysypywały z tego powodu.
Jak będziesz miał programator, to po prostu odczytasz jak są ustawione fusebity i porównasz z tymi, które podał x_angel, bo on raczej dobre podaje:-) Na 90% okaże się, że są ustawione źle, więc przestawisz na takie jak podał, sprawdzisz 10x czy dobrze ustawiłeś i wtedy je zaprogramujesz. Następnie możesz sobie już nie ruszając nigdy tych fusebitów wrzucać dowolne wersje sio2sd ile razy chcesz i kombinować, tylko nie ruszać już bez potrzeby fusebitów. Samo reprogramowanie softu niczego Ci nie popsuje.

2,961

(24 odpowiedzi, napisanych Sprzęt - 8bit)

Jak już będziesz programował tą Atmegę, to koniecznie poszukaj jak tam ustawić fusebity. Pamiętam, że kiedyś było to opisane na stronie SIO2SD, ale dziś już chyba tej strony nie ma, bo nie mogę znaleźć... Pamiętam natomiast na pewno, że w starszych wersjach SIO2SD fusebity były źle ustawiane, co powodowało właśnie wysypywanie się od czasu do czasu Atmegi. Po aktualizacji oprogramowania do najświeższej wersji ważne było ustawienie tych fusebitów odpowiednio i dopiero wtedy można się cieszyć bezawaryjną pracą. Objaw który pokazałeś może wskazywać rzeczywiście na wysypany soft w Atmedze.
Aha, z tego co piszesz, to nie masz doświadczenia z mikrokontrolerami Atmela, więc bardzo uważaj co robisz programując fusebity, bo jak zrobisz to źle, to możesz sobie skutecznie zablokować mikrokontroler, którego już samodzielnie za pomocą tego samego programatora nie odblokujesz...

Ja używam YAART do testowania pamięci. Dobrze się sprawdza, leci wielokrotnie w kółko, więc można porządnie wygrzać i przetestować. Exxos poleca ten program i sam go używa do swoich rozszerzeń. Podobno jest najlepszym programem wszechczasów:-)
Tu wątek:
http://www.atari-forum.com/viewtopic.php?t=30110
Przewiń gdzieś tam w dół, aktualna najświeższa wersja to yaart021 chyba, w każdym razie ja takiej używałem.

@Jacques: mam taką stację. Ja z kolei mam sytuację odwrotną, bo potrzebowałem ją zamontować w STFM, więc delikatnie wymontowałem ten pryzmacik ukośny z wierzchu, bo w STFM przeszkadzał. Ale mam go, a zdemontowałem delikatnie, więc można go bez problemu z powrotem założyć i przywrócić całość do oryginału.
Jeżeli Twoja stacja jest w pełni sprawna (bo moja jest), i pokryjesz koszty wysyłek, to mogę się z Tobą zamienić 1:1. Jak chcesz, to zapraszam na PW.

Edit: zastanowiłem się i mogę również sprzedać tą stację jak byś wolał. Wysłałem ofertę na PW.

Myślę, że pamięci możesz dla pewności też sprawdzić. Nie zaszkodzi.
Nie jestem (jeszcze:-)) ekspertem w dziale 16-bit, ale miałem przypadłość taką, że jakaś stara gra wywalała mi właśnie dwie bomby na STFM z 2MB z nieobsadzonym drugim bankiem, a na drugim STFM z obsadzonymi dwoma bankami działała dobrze. Pamięci sprawdziłem i były sprawne, więc zinterpretowałem to sobie, że gra niepoprawnie widzi ilość RAM i próbuje adresować jakąś nieistniejącą pamięć. Jeśli dobrze to zinterpretowałem, to dedukuję, że taka sama sytuacja mogła by wystąpić gdyby się zamiast nieistniejącej pamięci próbowała adresować jakaś uszkodzona...

2,965

(5 odpowiedzi, napisanych Sprzęt - 8bit)

Ja się przyłączę do pytania: mnie z kolei interesuje walor użytkowy w stosunku do SIO2SD - czy SDRIVE jest wygodniejszy/mniej wygodny w wypadku chęci pogrania sobie po prostu w gierki? Pytam, bo u nas w kraju SIO2SD zdominował inne rozwiązania, ale mamy kombajn z milionem opcji, których nikt chcący sobie tylko pograć nie używa i one przeszkadzają trochę szczerze mówiąc. W wypadku SDRIVE (którego nie mam, ale chciałem kiedyś sobie zrobić) wydaje się, że jest dużo prościej, szybciej, wygodniej i poręczniej. Czy rzeczywiście tak jest?

2,966

(9 odpowiedzi, napisanych Fabryka - 8bit)

Wykończenie większym wiertłem, to wychodzi właśnie taka faza, trochę za duża jak na mój gust, a nożykiem chodzi o to, żeby tylko delikatnie usunąć, to co wystaje, a nie rzeźbić fazę. Wiesz, ja tak piszę jak ja to robię, można skorzystać z podpowiedzi, a można robić po swojemu - każdy ma jakieś techniki, które mu najlepiej wychodzą:-)

2,967

(9 odpowiedzi, napisanych Fabryka - 8bit)

Tak, trzeba wiercić od zewnątrz i nie cisnąć mocno, tylko z czuciem. Poza tym polecam wiercić najpierw cieniutkim wiertłem np. 1mm, wtedy można precyzyjnie bardzo równo kilka otworków w rzędzie zrobić. Później przy poszerzaniu grubsze wiertło idzie ładnie w tym samym miejscu, a też robiąc jeszcze kroki pośrednie coraz grubszym wiertłem można jeszcze delikatnie poprawić geometrię otworów względem siebie oraz samego otworu. Ostatnie wiertło powinno być dokładnie o takiej grubości jak potrzeba, żeby nic nie piłować. Na koniec na wierzchu zostaje delikatny jakby wiór dookoła, który ścinamy czubkiem noża do tapet, ale nie kroimy tego mocno, tylko też delikatnie wkoło zrównujemy z powierzchnią. Taki otwór jak się postaramy, to wygląda jak z fabryki. Piszę, bo sam tak robię, no i wypracowałem sobie taką technikę z czasem. Nie zawsze się uda, ale jak się cierpliwie podejdzie do tematu, to efekt końcowy jest warty tego całego zachodu.

Z kolei otwory prostokątne jak np. pod kartę SD robię tak, że wiercę kilka otworów obok siebie, środek wycinam nożykiem, a później dopiłowuję precyzyjnie otwór malutkimi iglakami. Jak już jest mniej-więcej dobry i równy kształt, to później jednak lepiej nożykiem do tapet niż pilnikiem. Po pilniku zostają rysy i powierzchnia nie jest idealnie gładka. Najładniejsza powierzchnia wychodzi jak się ją cieniutkimi wiórami skrawa takim właśnie nożykiem. Trzeba trochę wprawy, cierpliwości i precyzji, ale polecam wypróbować również taką technikę.

2,968

(9 odpowiedzi, napisanych Fabryka - 8bit)

Bardzo fajny projekt. Super mi się podoba. Jestem zboczony na punkcie dopasowywania wszystkiego w drobnych szczegółach, więc szczególnie podobają mi się te wszystkie wyfrezowania płytki i dopasowanie tego do obudowy w Atari. Oczywiście trochę szkoda, że tego nie zrobiłeś bezpośrednio w projekcie, bo bardzo łatwo to narysować skoro już robisz płytki w Eagle. Kształt płytki i wszelkie otwory oraz wycięcia rysuje się linią grubości 0 na warstwie dimensions. Jak już zrobisz w Eaglu, to sobie drukujesz, wycinasz i sprawdzasz czy na 100% wszystko idealnie pasuje, jak tak, to wysyłasz do płytkarni i już:-)
Przyczepię się też trochę do dziurawienia obudowy Atari. Nie mam nic przeciwko jeśli projekt jest ładnie przemyślany, a wykonanie estetyczne. Rozumiem, że robiłeś to na jakiejś zbędnej obudowie. W docelowym egzemplarzu postaraj się te wszystkie otwory zrobić estetyczniej i precyzyjnie:-) Wrzuć koniecznie zdjęcia ostateczne jak już zrobisz.

2,969

(7 odpowiedzi, napisanych Sprzęt - 8bit)

Jak do peceta, to pewnie to joystick analogowy, więc się do Atari nie nada.

2,970

(7 odpowiedzi, napisanych Sprzęt - 8bit)

Taniej niż kabel z mata wychodzi kupić u Chińczyków przedłużacz, uciąć z niego gniazdo i mamy kabel gotowy. Wejdź sobie np. na aliexpress i wpisz "przedłużacz sega". Sega wykorzystuje wszystkie 9 pinów, więc kabel jest 9-cio żyłowy, wszystkie piny są obsadzone i nadaje się do wykorzystania do każdego joysticka, czy myszy, czy tam czegokolwiek. Taki przedłużacz długości 1,8m kosztuje jakieś 2,5-3,5$ z przesyłką, a obecnie kurs dolara wychodzi około 3,5zł, więc gites:-)

@Pudens: ten link do złącza DB9 jest ok (w sensie, że takie dokładnie złącze potrzebujesz).
Gdybyś zdecydował się jednak na takie rozwiązanie, to nacinasz ucinaczkami albo obcęgami z boku lekko ten metal i łamiesz kombinerkami wyginając w jedną-drugą parę razy. Rozchylasz metal, wyciągasz plastik, metal wywalasz. Roboty 30 sekund. Jak już wyłuskasz plastikowy wtyk, to on się otwiera, więc trzeba go lekko rozłożyć, i kapnąć malutką kropelkę jakiegoś superglue, czy tam kropelki po bokach i ścisnąć z powrotem. Jak tego nie zrobisz, to wtyk będzie Ci się rozkładał przy wyciąganiu z kompa.
Wiem co piszę, bo używam takich złączy w moim projekcie (S)NESctrl (http://www.atari.org.pl/forum/viewtopic.php?id=14670).
Do wtyku oczywiście kabelki trzeba przylutować a nie "styknąć" jak napisałeś:-)

Wg mnie to jest normalne zachowanie z tą kontrolką. W moim rozwiązaniu podpięcia Goteka razem z FDD na wewnętrznej taśmie mam dokładnie taki sam efekt po przełączeniu AB/BA. Przejrzałem schematy i sygnał BD0SEL to jest właśnie sygnał który służy tylko i wyłącznie do sterowania diodą FDD w klawiaturze. I tak jak zauważyłeś jest to zbuforowany sygnał SEL0, więc jak najbardziej poprawnie świeci ta dioda po zamianie AB/BA.

2,972

(37 odpowiedzi, napisanych Sprzęt - 16/32bit)

Nikt nie pisał o żadnej modulacji. Jak działa sam enkoder, to wiemy, ja się tylko zastanawiałem nad tym jak przetwarza sobie te dane Atari: czy czeka na zbocza i wywołuje jakieś przerwanie, czy próbkuje stan wejść z określoną częstotliwością żeby odczytywać to co nadchodzi z enkoderów myszy. Ja z obserwacji tego co widzę wnioskowałem, że raczej jest realizowana ta druga opcja, ale mogę się mylić, bo tego nie wiem, tylko sobie gdybam.

2,973

(37 odpowiedzi, napisanych Sprzęt - 16/32bit)

Racja, że na wyjściu transoptora jest ten sygnał daleki od prostokąta - napisałem to trochę innymi słowami, może trochę potocznie - dla ludzi niekoniecznie będących elektronikami:-)

Zwróć jeszcze uwagę, że sam początek naszej transmisji (bo jest to bardzo prosta transmisja w gruncie rzeczy) zaczyna się od razu cyfrowo. W sumie można by przyjąć, że ruch myszy po blacie biurka jest analogowy, a naszym przetwornikiem analogowo-cyfrowym są tarcze na rolkach. Mysz przesuwamy o odległość "analogowo". Analogowa jest wartość odległości i prędkości przesuwu myszy. Czyli  w transmisji przesyłamy dwie wartości analogowe: odległość i prędkość. Ten analogowy sygnał zamieniamy na cyfrowy tarczami na rolkach, które przesłaniają i odsłaniają fototranzystor oświetlony diodą led - dzięki temu generujemy już nasze zera i jedynki. Sygnał ten jest nieładny, więc go później obrabiamy jeszcze, ale już w tym miejscu wiemy jaki ciąg zer i jedynek otrzymamy na końcu. Jest to już więc dla nas informacja cyfrowa. Zawiera odległość w postaci ilości impulsów oraz prędkość w postaci częstotliwości naszego sygnału. Kierunek jak napisałeś jest ustalany za pomocą par sygnałów.

Nie wiem czy Atari liczy tylko zbocza. Możliwe, że Atari po prostu próbkuje z określoną częstotliwością te linie i robi sobie z tego ciągi zer i jedynek, które już łatwo przekształcić na ruch. Co więcej robi to raczej sterownikiem programowo, bo przecież to zwykłe wejścia cyfrowe jak do joysticka (z resztą te same) i nie ma tam specjalizowanego układu jak np. w myszy PS2. W transmisjach z ramkami jak w PS2 musi być przesłana odległość, prędkość ruchu i kierunek, ale w Atari można przecież bezpośrednio po wystąpieniu każdej pary ruchu w określonym kierunku przesunąć po prostu kursor od razu. Nie potrzeba obliczać o ile i z jaką prędkością. Wystarczy reakcja od razu. W sumie też ciekawi mnie to w jaki sposób Atari to robi, może ktoś napisze. Ja się skłaniam do wersji z próbkowaniem, ponieważ wiem z testów które przeprowadzałem, że jak za szybko się przesyła dane z myszy, to Atari nie nadąża i się gubi. Gdyby był jakiś kawałek elektroniki liczącej wszystkie zbocza, generującej przerwanie i zbierającej dane w jakimś buforze (jak przy PS2), to Atari by się nie gubiło tylko najwyżej robiło by opóźnienia.

No a z tą prędkością atmegi to na prawdę nie przesadzajmy, przecież ona nie ma nie wiadomo jakiej roboty przy przetworzeniu ruchu myszy. Atmega umie poważniejsze rzeczy robić. No i poza tym tak jak wcześniej pisałem na PIC-u było to samo, na niektórych programach działało mizernie, a na tym, który zalinkowałem działa wszystko bez problemu.

Ja z kolei podobny interfejs zrobiłem do pada NES/SNES. Opisałem w tym wątku:
http://www.atari.org.pl/forum/viewtopic.php?id=14670
I mam tam transmisję odczytującą pady NES/SNES - przy czym zachowałem częstotliwość transmisji taką jaka była w specyfikacji, później przetwarzam sobie zebrane dane dokładając różne własne funkcje i na koniec wystawiam odpowiednie stany joysticka. W zasadzie bardzo podobna robota jak przy interfejsie myszy. U mnie czas jaki upływa od momentu odczytu danych do wystawienia sygnałów joysticka liczy się w co najwyżej mikrosekundach, stosuję celowe opóźnienia około 10 milisekund co ramkę w transmisji, żeby zachować zgodność z protokołem NES/SNES, żeby mieć pewność że interfejs zadziała z każdym wynalazkiem (np. pady bezprzewodowe itp.). Reakcja na ruch pada w grach jest natychmiastowa, bez najmniejszego opóźnienia. Okres próbkowania i podawania sygnału joysticka wynosi u mnie właśnie tych 10 milisekund. Czyli jak dasz radę, to w ciągu sekundy możesz wykonać 100 różnych ruchów padem i wszystkie zostaną kolejno w ciągu tej jednej sekundy przesłane do portu joysticka. Przy czym każdy z tych 100 ruchów może się składać z kombinacji kilku różnych przycisków.

Edit: @_tzok_: Tak w ogóle zrobiliśmy straszny offtop, proponuję wrócić do tematu scandoublerów, który też czytam z zaciekawieniem:-)

2,974

(37 odpowiedzi, napisanych Sprzęt - 16/32bit)

Hej, luz, nie chodzi o sprzeczanie, ja też jestem od tego daleki:-)

Tutaj użyto analogowych komparatorów, ale w zastosowaniu cyfrowym:-) i układ jest cyfrowy, bo przetwarza sygnały cyfrowe składające się z zer i jedynek, a reszta nas nie interesuje. Idąc Twoim tokiem rozumowania, że komparator nazywa się "analogowym", to można by powiedzieć, że procesor jest też analogowy, bo składa się przecież z tranzystorów, które to potrafią wzmacniać sygnały analogowe:-) - no ale tak nie jest. O tym czy układ jest cyfrowy czy analogowy w uproszczeniu decydują przetwarzane w nim sygnały i sposób ich przetwarzania.

W tym konkretnym układzie z transoptorów otrzymujemy sygnał cyfrowy, który jednak jest "nieładny". Fototranzystory w zależności od tego jak są wygięte w tej myszce (nie ustawisz ich idealnie) oraz swojego rozstrzału parametrów dają nierówne napięcia, a w dodatku posiadając pewną "bezwładność" i pojemności w efekcie nie otrzymujemy idealnego prostokąta, tylko wydłużone zbocza narastające i opadające oraz "falujące" zera i jedynki. Atari oczekuje zer i jedynek a nie takiego bałaganu i dlatego, żeby ten sygnał wyrównać, to zastosowano komparatory analogowe, na wyjściu których mamy już ładny prostokąt o maksymalnie krótkich zboczach, który na porcie joya może Atari sobie odczytać i przetworzyć dalej cyfrowo na ruch myszy.
Aha, i chyba najważniejsze, od czego powinienem zacząć, to komparatory dopasowują też poziomy tych zer i jedynek do takich, które można dalej przetwarzać za pomocą układów TTL, bo z fototranzystorów dostajemy napięcia o innych poziomach niż potrzebujemy.

Słusznie zauważyłeś że impulsy mają różną szerokość (czyli tym samym częstotliwość), która jest zależna od ruchu myszy, ale tak jak napisałem wcześniej częstotliwość ta jest rzędu kilkudziesięciu herców, co można wygenerować i przetwarzać na wielokrotnie wolniejszym mikrokontrolerze niż atmega8 i na prawdę nie stanowi to żadnego problemu. A Atari próbkuje ten sygnał też z bardzo małą częstotliwością i nasz odczyt, przetworzenie i wystawienie sygnału za pomocą mikrokontrolera dla Atari jest zbyt szybki i trzeba go spowalniać, bo Atari nie nadąża tego czytać. Dlatego jeśli są jakieś opóźnienia i coś nie działa jak należy w takim interfejsie, to jest to wina źle napisanego firmware, a nie tego, że coś tam musi trwać, bo musi zostać przetworzone i musi być opóźnienie.

2,975

(37 odpowiedzi, napisanych Sprzęt - 16/32bit)

@_tzok_: nie zrozum mnie źle, bo mam trochę wyrzuty, że akurat ostatnio się spotykamy w prawie każdym wątku - to zbieg okoliczności, bo akurat w tym samym czasie mamy nasilenie zainteresowania ST:-) Stąd cenię sobie pozytywnie to, że się spotykamy, i też czerpię trochę z Twoich postów ciekawej wiedzy, ale w tym konkretnym przypadku nie zgodzę się z Tobą:-)

Atmega w tym projekcie jest taktowana zegarem 4MHz, więc dobrze napisany program jest bez problemu w stanie przetworzyć dane PS2 i wysłać je do Atari szybciej i częściej niż Atari jest w stanie je przetwarzać. Oryginalna mysz od Atari nie jest analogowa, jak z resztą żadna mysz kulkowa. Wszystkie myszy działają w ten sam sposób: ruch kulki przekładają na rolki, a rolki obracają tarczami na których otwory zasłaniając i odsłaniając transoptor szczelinowy generują ciąg impulsów. Pomyśl: jaką częstotliwość jesteś w stanie wygenerować w ten sposób ręcznie przesuwając mysz? Bardzo małą w stosunku do częstotliwości o których mówimy. Na oko może maksymalnie kilkadziesiąt Hz?

W tym aspekcie akurat problem jest dokładnie odwrotny: trzeba specjalnie mocno spowalniać częstotliwość impulsów podawanych do Atari, bo nie nadąża on ich sczytywać i następują błędy spowodowane gubieniem tych impulsów przez Atari. Dlatego pisałem o tym, że szukałem takiego wsadu do PIC-a, który będzie działał przyzwoicie na Atari i Amidze, bo Amiga wielokrotnie szybciej potrafi sczytywać impulsy niż Atari i duża część interfejsów działających poprawnie na Amidze nie działa poprawnie na Atari po odpowiedniej zamianie pinów portu myszy. Problem ten opisał dokładnie w jakimś wątku na AOL Kuba Husak (można poszukać). Pierwotnie żeby użyć na Atari interfejsu, który działał mi na Amidze spowalniałem nieco zegar PIC-a do wartości, przy której Atari potrafiło sobie poradzić z impulsami, a zarazem transmisja w protokole PS2 pozostawała w zakresie częstotliwości podawanych przez specyfikację.

Programuję atmele i znam się na tym, ale nie chciało mi się robić kolejnego interfejsu do myszy, skoro jest ileś tam gotowców. Niemniej zgłębiłem temat i wiem, że błędy jakie popełniają programiści dotyczą niewłaściwego taktowania obu transmisji. Trzeba po drodze z odpowiednią częstotliwością komunikować się z PS2, zapisywać dane w jakiś tymczasowy bufor, przetworzyć je i wysłać z inną częstotliwością do Atari. Nie pamiętam częstotliwości, ale rzędy wielkości są takie, że komunikacja PS2 to jakieś kilkoherce, komunikacja z Atari to dziesiątki herców, a przetwarzać na atmedze możemy to wszystko w megahercach, więc wszystko powinno się bez problemu "zmieścić pomiędzy transmisjami" i być niezauważalne. Tak jak pisałem:  testowałem kilka wsadów adapterów i nie ma kompletnie żadnych lagów w dobrze napisanych programach.

A o źródło tego interfejsu na atmedze zapytałem, bo tak jak mówię wolę atmela, bo go dużo programuję, a PIC już dziś jest przestarzały i trudniej dostępny. Ogólnie fajny projekt, a z tego co piszesz o tych lagach, to pewnie wymagał by dopracowania sam program.
Ja mam interfejs wg tych opisów:
http://eab.abime.net/showthread.php?t=66443
Wersja firmware 1.3 jest odpowiednia i działa zarówno z Atari jak i z Amigą. Nie ma żadnych lagów ani innych przypadłości. Działa idealnie.

Przepraszam za odbiegnięcie od tematu wątku...