sobota, 28 kwietnia 2018

Programowanie Atmega1284P programatorem USBasp

Ostatnio opisałem jak zaprogramować Atmegę 1284P dla SD2IEC poprzez port LPT w komputerze, jednak nowsze komputery nie posiadają tego portu.

Możemy jednak zaprogramować Atmegę 1284P poprzez programator USB USBasp.

Kosz zakupu nie jest zbyt wielki, można go kupić za około 10 zł.

Programator jest według projektu Thomasa Fischla i opis oraz sterowniki jest dostępny na stronie -> Link



Programator posiada zworki JP1, gdzie ustawiamy napięcie pracy, ustawiamy na 5V oraz JP2, która po zwarciu pozwala zaprogramować układ w samym programatorze.

Czasem po zakupie programator nie jest poprawnie wykrywany w systemie Windows i musimy mu wgrać firmware czyli oprogramowanie Thomasa Fischla.

Możemy do tego celu użyć Arduino Uno.

Ściągamy plik usbasp.2011-05-28.tar.gz ze strony Thomasa Fischla -> Link

Po rozpakowaniu w folderze bin będzie firmware i sterowniki pod Windowsa.

Najpierw wgramy firmware do programatora.

Ściągamy program Arduino i instalujemy -> Link

Sygnały w gnieździe programatora USBasp są jak na zdjęciu niżej, dla mojego egzemplarza ustaliłem, że masa jest na pinie numer 8.


Łączymy piny USBasp według schematu:

VCC - 5V Arduino
GND - GND Arduino
RST - 10 Arduino
MOSI - 11 Arduino
MISO - 12 Arduino
SCK - 13 Arduino

Łączymy piny JP2 zworką, jeżeli nie ma goldpinów, to musimy je dolutować.

Tak przygotowane Arduino Uno podłączamy do komputera.

Uruchamiamy program Arduino wybieramy Uno i odpowiedni port Com


Teraz w Plik -> Przykłady wybieramy ArduinoISP


Programujemy Arduino klikając w strzałkę u góry po lewej stronie.

Zamykamy program Arduino.

We wcześniejszym wpisie -> Link podałem link do programu WinAVR, jeżeli go mamy nie musimy go ściągać. Folder z programem to Winavr.

Wcześniej programowałem na komputerze z Windowsem XP i portem LPT, teraz robię to na Windows 10.

Uruchamiamy wiersz poleceń -> prawy klawisz myszy na okienku po prawej w Windows 10 i wybieramy Uruchom i wpisujemy cmd i klikamy OK.

W wierszu poleceń wpisujemy:

cd C:\winavr\bin

Teraz z wcześniej ściągniętego pliku ze strony Thomasa Fischla kopiujemy plik usbasp.atmega8.2011-05-28.hex z bin\firmware na dysk C do winavr\bin

W wierszu poleceń wpisujemy:

avrdude –C avrdude.conf –c avrisp –P COM9 –b 19200 –p m8 –v

COM9 - jest port na jakim pracuje Arduino UNO.

Jeżeli wszystko będzie dobrze to zobaczymy.


Teraz programujemy Atmegę8 w programatorze poleceniem:

avrdude –C avrdude.conf –c avrisp –P COM9 –b 19200 –p m8 –U flash:w:usbasp.atmega8.2011-05-28.hex



Na końcu zobaczymy.


Odłączamy Arduino Uno, rozłączamy przewody i ściągamy zworkę z JP2.

Teraz możemy programator USBasp podłaczyć do komputera.

Programator powinien zostać wykryty jako USBasp.

Wchodzimy w menadżer urządzeń -> prawy klawisz myszy na okienku na dole po lewej stronie.

Zobaczymy na liście USBasp.


Klikamy prawym klawiszem i wybieramy Aktualizuj sterownik.

Wybieramy Przeglądaj mój komputer...


Podajemy ścieżkę do folderu z wcześniej ściągniętego pliku do bin/win-driver/libusb_0.1.12.1


Klikamy OK i Dalej.

Pojawi się błąd, że brak jest podpisu cyfrowego sterownika.

Na stronie Thomasa Fischla jest link do programu Zadig -> Link

Ściągamy go i uruchamiamy

Wybieramy jak niżej


Klikamy Install driver.

Teraz sterownik powinien być poprawnie zainstalowany.

Ściągamy program SinaProg -> Link

Odłaczamy programator USBasp z komputera.
Podłączamy Atmegę1284P do odpowiednich pinów programatora USBasp, opisane jest we wcześniejszym poście na blogu, czyli MOSI do MOSI itd..
Atmega1284P musi mieć wlutowany kwarc i kondensatory.



Uruchamiamy program Sinaprog, wybieramy Atmega1284P i klikamy Search, strzałką w prawo rozwijamy okienko.


Jak widać wszystko jest dobrze.

Najpierw programujemy FUSE bity, przy Fuses klikamy Advanced.

Ustawiamy jak niżej.


Klikamy write i close.

Teraz programujemy Atmegę 1284P plikiem sd2iec.hex do pobrania tu -> Link

Wybieramy plik i przy Flash klikamy Program.
Rozpocznie się programowanie.


Po zakończeniu odłączamy USBasp i przewody od SD2IEC i mamy gotowy zaprogramowany moduł do Commodore 64.







Opis budowy SD2IEC

SD2IEC to interfejs, który emuluje stację dysków 1541 i umożliwia odczyt plików d64, prg i p00 z karty SD.

Obsługuje się go jak standardową stację dysków.

Do budowy będą nam potrzebne:

1. Atmega 1284P
2. Podstawka DIP 40
3. Kwarc 8 MHz
3. Kondensatory 33 pF - 2 szt.
4. Kondensator 100 nF
5. Wtyk DIN 6 pin
7. Czytnik kart SD Arduino
8. Dioda led zielona i czerwona
9. Rezystor 560 ohm - 2 szt.
10. Rezystor 10K
11. Przycisk chwilowy 3 szt.
12. Płytka uniwersalna i przewody połaczeniowe

Schemat podłączenia


Na schemacie widać Atmegę od góry i gniazdo serial od przodu.

Inny schemat, gdzie widać, że dodatkowo są podłączone piny 37 i 38 do przełączania numeru stacji dysków na 9, 10 i 11.


Wyprowadzenia Atmega 1284P takie jak na pierwszym schemacie.


Mój SD2IEC wykonałem na płytce uniwersalnej, do zasilania wykorzystałem wtyk USB, ponieważ ciężko dostać wtyk do gniazda magnetofonu.
Atmega wymaga zasilania 5V i zasilanie z USB doskonale nadaje się do tego.



Na płytce dolutowałem golpiny do przełączania numeru stacji i do programowania Atmegi.

Moduł czytnika karty SD.


Moduł karty SD ma opisane piny i podłączamy do pinów 5,6,7 i 8 Atmegi oraz +5V do Vcc i masę GND.

Do zaprogramowania Atmegi użyłem starego komputera na Windowsie XP z portem LPT.

Wykonałem programator LPT według schematu.


Piny 18 do 25 w gnieździe LPT łączymy razem do masy.


Atmega na czas programowania wymaga zasilania 5V, wykorzystałem do tego zasilanie z portu USB.


Programator musi posiadać wlutowany kwarc 8 MHz i kondensatory 33 pF i 100 nF, bez nich Atmega nie chciała się zaprogramować.

Można oczywiście podlutować przewody do pinów Atmegi na czas programowania do gotowego modułu SD2IEC.

Do zaprogramowania poprzez port LPT użyłem programu WinAVR, do pobrania stąd -> Link

Po zainstalowaniu program będzie na dysku C w katalogu WinAVR-20100110, dla ułatwienia zmieniłem nazwę katalogu na Winavr.

Najnowsze oprogramowanie SD2IEC znajdziemy na stronie -> Link

Teraz uruchamiamy wiersz poleceń -> Start -> Uruchom i wpisujemy CMD


W wierszu poleceń wpisujemy:
cd C:\Winavr\bin


Instalujemy giveio, aby można było zaprogramować przez port LPT.

Wpisujemy:

install_giveio i wciskamy Enter.

Teraz plik do zaprogramowania Atmegi -> Link po rozpakowaniu kopiujemy do katalogu Winavr/bin.

Jest to najnowsza wersja oprogramowania SD2IEC wraz z bootloaderem, więc gdy pojawi się nowsze oprogramowanie, plik bin wystarczy wgrać na kartę SD i po uruchomieniu zaktualizuje się do najnowszej wersji.

Dalej do wiersza poleceń kopiujemy polecenie:
avrdude -p m1284p -P lpt1 -c pony-stk200 -U flash:w:sd2iec.bin -U lfuse:w:0xEF:m -U hfuse:w:0x99:m -U efuse:w:0xFF:m


Po wciśnięciu Enter powinno rozpocząć się programowanie Atmegi.


Po poprawnym zaprogramowaniu powinniśmy mieć.


Odłączamy zasilanie atmegi i wyciągamy przewód z portu LPT, przekładamy Atmegę do SD2IEC lub odlutowujemy przewody.

Po podłączeniu zasilania dioda zielona powinna mignąć krótko raz.

Na kartę SD możemy skopiować sobie program CBM FileBrowser -> Link , aby łatwo przeglądać i uruchamiać skopiowane programy i gry.

W pliku w katalogu program będzie plik fb64, proponuję skopiować go do głównego katalogu na karcie sd.

Teraz po podłączeniu SD2IEC do portu serial Commodore 64 i zasilania i włączeniu C64 wpisujemy:

Load"FB64",8

i

RUN

Uruchomi się program i łatwo za pomocą strzałek możemy przeglądać pliki i foldery.

Na stronie projektu SD2IEC jest folder Third-party tools -> Link

Jest tam program SD2IEC SNOOP za pomocą, którego możemy sprawdzić wersję oprogramowania SD2IEC.


Gdyby ktoś nie miał starego komputera z portem LPT, to dodałem opis jak zaprogramować Atmegę1284P do SD2IEC programatorem USBasp -> Link

środa, 25 kwietnia 2018

Wykonanie przewodu serial do stacji dysków 1541

Po zakupie stacji dysków, brakowało mi przewodu serial do podłączenia stacji dysków 1541 II, przewody są trudno osiągalne i postanowiłem zrobić taki przewód.

Schemat przewodu serial.


Będą nam potrzebne dwa wtyki DIN 6 pin, można je kupić na Allegro lub w sklepie elektronicznym.


Połączenia wtyków są jeden do jeden, czyli łączymy pin 1 z pinem 1, 2 z 2, itd...

Do połączenia wykorzystałem przewód sterowniczy w ekranie LIYCY 6x0,5.


Po zlutowaniu przewodów według schematu, po podłączeniu do stacji dysków wszystko działa prawidłowo.

Gotowy przewód serial.

wtorek, 24 kwietnia 2018

Wykonanie zasilacza do stacji dysków 1541 II

Ostatnim moim zakupem była stacja dysków 1541 II.

Niestety nie miałem do niego oryginalnego zasilacza, a zakup nie był zbyt prosty.
Jednak możemy wykorzystać zasilacz do dysków twardych 12V, ma on odpowiednie napięcia do zasilenia stacji dysków.

Zakupiłem zasilacz jak na zdjęciu niżej.


Zasilacz ma napięcia 12V DC - 1,5A i 5V DC - 1,5A, DC oznacza napięcie stałe.

Oryginalny zasilacz ma parametry jak niżej, 700mA przy 5V i 500mA przy 12V, więc mój jest wystarczający.


Po ściągnięciu izolacji przewodów, pomierzyłem napięcia i na białym przewodzie było napięcie +5V, na żółtym +12V, a czarny to zazwyczaj masa GND.


Będzie jeszcze potrzebny wtyk DIN 4 pin, można go kupić na Allegro lub w sklepie elektronicznym.


Na zasilaczu są opisane napięcia na pinach, ale jest to widok wtyczki od przodu.

Lutujemy więc przewody jak pokazano niżej.


Gotowy zasilacz.


Po podłączeniu do stacji dysków, stacja działa prawidłowo.

poniedziałek, 23 kwietnia 2018

Commodore 64G

Commodore 64G, popularnie zwany chlebakiem, pojawił się w Niemczech w 1987 roku i w przeciwieństwie do pierwszej wersji posiadał jasne klawisze, tak jak w wersji 64C, zamontowana została zielona dioda. Wersja ta posiadała procesor MOS 8500.

Kilka zdjęć mojego egzemplarza, po czyszczeniu i wybielaniu.














niedziela, 22 kwietnia 2018

UNO2IEC, czyli emulator stacji dysków 1541

UNO2IEC to emulator stacji dysków 1541 na Arduino UNO lub Nano.

Komunikacja odbywa poprzez port serial Commodore 64, a z komputerem poprzez port USB.
Komputer stanowi rodzaj hosta z którego poprzez specjalny program montujemy obrazy programów lub gier i ładujemy do Commodore 64.

Do budowy wystarczy wtyk DIN 6 pin, przewody połączeniowe i Arduino UNO lub Nano z przewodem USB.

Gotowy projekt UNO2IEC


Projekt nie wymaga specjalnych układów, czy elektroniki i jest prosty w wykonaniu, jedyne co musimy zrobić, to przylutować przewody połączeniowe do wtyku DIN 6 pin.

Wtyk DIN 6 pin.


Gniazdo serial ma takie sygnały.


Podłączenie wtyku do Arduino.


Po wykonaniu połączeń należy ściągnąć i zainstalować program Arduino -> Link

Po zainstalowaniu uruchamiamy raz i zamykamy program, w folderze Moje dokumenty zostanie utworzony folder Arduino, a w nim libraries.
Do tego folderu kopiujemy potrzebne biblioteki.

Do działania wymagana jest ta biblioteka -> Link
Po rozpakowaniu folder arduino_max7219-master kopiujemy do libraries.

Program do wgrania do Arduino -> Link

Po rozpakowaniu w folderze uno2iec jest program uno2iec.ino, klikamy w niego 2 razy, uruchomi się program Arduino, wybieramy odpowiedni rodzaj Arduino i odpowiedni port COM w menu Narzędzia.



Teraz wystarczy wgrać program do Arduino klikając w strzałkę u góry po lewej stronie.


Po wgraniu powinien pokazać się nap[is na dole ładowanie zakończone.

Możemy zamknąć program Arduino.

Do ładowania obrazów dyskietek d64 i programów z komputera służy ten program -> Link

Po rozpakowaniu uruchamiamy go klikając 2 razy w uno2iec.exe.

Po uruchomieniu wchodzimy w górne menu Main -> Settings i ustawiamy jak pokazano niżej.


COM port - wybieramy port com na jakim pracuje Arduino.
Serial Speed ustawiamy na 57600
Device number - ustawiany numer stacji
Piny ustawiamy kolejno 6, 5, 4, 3 jak na obrazku wyżej.
Folder D64 wybieramy folder z obrazami d64 lub programami.

Po poprawnym połączeniu powinno być tak.


Teraz wybieramy obraz d64 lub program i klikamy Mount Selected Image.


Teraz mamy emulowaną stację dysków i możemy wpisać w Commodore:

LOAD"$",8


Teraz wpisujemy LIST ,aby wyświetlić listę plików.


Teraz wpisujemy LOAD"nazwa_programu",8


W programie na komputerze zacznie się ładować program.


Teraz wpisujemy RUN , aby uruchomić program.


Program powinien zacząć się uruchamiać.


Aby uruchomić inny program w programie na komputerze wybieramy Unmount i montujemy nowy program.

To tyle, jest to dosyć dobre i proste rozwiązanie, jeżeli nie chcemy ładować gier z magnetofonu lub stacji dyskietek.