Krak! Boem! USB doormidden!

Door sebastius op woensdag 25 juni 2014 21:41 - Reacties (36)
Categorie: Knutselen, Views: 15.789

En we hebben er weer één! Met enige regelmaat krijg ik een mailtje, DM of doorverwijzing van een andere tweaker dat een USB-stick op onfortuinlijke wijze aan zijn eind is gekomen. Laptops met uitstekende sticks zijn echt niet handig! En als dan ook weer eens je halve leven er op staat, zonder backup, dan mail je Sebastius :P

Zo ook deze:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6915_zps32c8b90a.jpg

Die is wel stuk... Even wat demonteren:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6916_zps5bcd7fa0.jpg

De schade valt mee en tegen. Ik zie dat de 5v lijn nog op de print zit, dat is 1 van de 4 die ik nodig heb. GND is afgebroken (die zit helemaal aan het andere uiteinde), maar die kan ik aftappen van de twee eilandjes op de hoeken.

De enige lastige zijn natuurlijk de datalijntjes. Kwetsbaar, want dunne lijntjes en die scheuren goed af bij een breukje. Laat ik je even zien:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6919_zps869515c4.jpg

Wat je hier ziet is de plek waar normaal 2 eilandjes liggen, maar die zijn helemaal losgescheurd van de print. Niks meer van over, niks meer mee te beginnen.

Dan ga je zoeken. Op de controller kan ik in theorie zo solderen maar dat is wel erg klein en dan breekt alles weer snel af. Ik heb er voor gekozen de baantjes naar de controller een beetje af te strippen tot het koper en daar mijn datalijntjes aan vast te zetten:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6921_zps5103b905.jpg

http://i166.photobucket.com/albums/u91/sjieto/IMG_6922_zps437e0787.jpg

http://i166.photobucket.com/albums/u91/sjieto/IMG_6926_zpsc0e2666d.jpg

En dan krijg je dus dit:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6923_zpsa90b1c9e.jpg

Heeeeeel voorzichtig aansluiten en de data kan zo er af en terug via WeTransfer of Dropbox naar de opdrachtgever.

Voor de knutselaars thuis: ik gebruik een soldeerstation met een soldeerpunt van 0,8 mm, een stereo-microscoop (beste beste beste aankoop ooit als je wilt repareren) en fijn soldeertin. Zorg voor goede polssteun en voor goed gereedschap. Oh en zorg voor oefenmateriaal als je babyfoto's of weet ik het je lief zijn :P

De invasie is begonnen!

Door sebastius op zaterdag 21 juni 2014 22:09 - Reacties (20)
Categorie: Knutselen, Views: 8.091

http://i166.photobucket.com/albums/u91/sjieto/SpaceInvaders_zps075851bd.gif


Pakkende titel, vind je ook niet? ;) Had je iets anders verwacht? Ik garandeer je dat dit leuker is :P

Dit is de vierde post over mijn Space Invaders project.

Vorige posts:Deze periode ben ik op school druk bezig met de afronding van het schooljaar. Rapporten schrijven en verbeteren, zaken regelen om over te dragen zodat de volgende leerkracht goed kan starten met mijn kinderen etc. Drukte op het werk betekent voor mij dat ik juist moet gaan knutselen om mijn hoofd leeg te maken en ik ben in de meivakantie ook flink aan het bouwen geweest.

Vorige keer heb ik je hier achtergelaten:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6760_zpse949c481.jpg

Waarbij de RAM net aangesloten zat op de switches die er voor zorgen dat de CPU en GPU (nou ja GPU... het is een veredelde telmachine :P ) elkaar niet in de weg zitten.

En deze periode ben ik bezig geweest om de CPU, RAM en ROM met aanverwante zaken aan te sluiten. Ik ben een beetje lui geweest, en ik heb kabeltjes gebruikt van OpenCircuit zodat ik niet alles zelf uit hoefde te meten, strippen en solderen. Nadeel is wel dat het er wat chaotisch uitziet:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6909_zps9e5cdd7c.jpg

Links zie je het CPUboard met van onder de rom, CPU, logica en bovenin links de RAM chip. Tussen de twee boards zie je een flink aantal verbindingen, die zorgen er voor dat de videokaart het goede stukje ram tevoorschijn kan toveren op het beeld. Ook zijn er wat lijnen voor wat ik de 'lijm' noem, de circuits die zorgen dat alles werkt.

http://i166.photobucket.com/albums/u91/sjieto/IMG_6912_zpsa8e0782f.jpg
http://i166.photobucket.com/albums/u91/sjieto/IMG_6910_zpsa39a2bfe.jpg

Ooit word ik nog wel een artistieke fotograaf maar niet vandaag.

Na een week lang solderen was het zover, ik kon de boel aansluiten.

Uiteraard: Bupkis.

Na wat foutjes opgelost te hebben (je moet nooit ingangen op chipjes open laten, dan gaan ze raar doen) kwam ik uiteindelijk op een scherm met vreselijk veel storing in beeld, onherkenbaar en duidelijk niet wat het moet zijn.

Met de logic analyser aan de slag. Ik zag alleen maar bagger uit de ROM komen. Niet het begin van het programma! Ik ben gaan pluizen in de Mame sourcecode van Space Invaders


code:
1
2
3
4
5
6
7
3123  ROM_START( invaders )
 3124      ROM_REGION( 0x10000, "maincpu", 0 )
 3125      ROM_LOAD( "invaders.h", 0x0000, 0x0800, CRC(734f5ad8) SHA1(ff6200af4c9110d8181249cbcef1a8a40fa40b7f) )
 3126      ROM_LOAD( "invaders.g", 0x0800, 0x0800, CRC(6bfaca4a) SHA1(16f48649b531bdef8c2d1446c429b5f414524350) )
 3127      ROM_LOAD( "invaders.f", 0x1000, 0x0800, CRC(0ccead96) SHA1(537aef03468f63c5b9e11dd61e253f7ae17d9743) )
 3128      ROM_LOAD( "invaders.e", 0x1800, 0x0800, CRC(14e538b0) SHA1(1d6ca0c99f9df71e2990b610deb9d7da0125e2d8) )
 3129  ROM_END


Ja, nogal logisch dat het niet werkt! Mijn roms staan in alfabetische volgorde in de chip, dus E, F, G, H ipv de benodigde H, G, F, E...

Een uurtje later (20 minuten wissen, 40 minuten programmeren) kon ik weer testen.

Het leek goed te beginnen: 00, 00, 00, C3, D4, 18 (dit zijn de eerste 6 bytes van het Space Invaders programma in de ROM). Maar hierna kreeg ik bagger.

Iets meer uitleg (met behulp van deze onwijs toffe site):


code:
1
2
3
4
5
; Reset
0000: 00              NOP                         ; This provides a slot ...
0001: 00              NOP                         ; ... to put in a JP for ...
0002: 00              NOP                         ; ... development
0003: C3 D4 18        JP      $18D4               ;  Continue startup at 18D4



In dit blokje aan het begin van de ROM krijgt het spel de instructie om te springen naar adres 18D4. Daar zit het hoofdprogramma.


code:
1
2
3
18D4: 31 00 24        LD      SP,$2400            ;Set stack pointer just below screen
18D7: 06 00           LD      B,$00               ; Count 256 bytes
18D9: CD E6 01        CALL    $01E6               ; Copy ROM to RAM



Deze bytes zag ik niet! Ik zag FF, FF, FF (niks dus). Ik heb de ROM uitgelezen met mijn Eprom programmer en kon mezelf wel voor m'n kop slaan. Ik had slechts 25% van het spel in de chip gezet!

En weer een uurtje later... Kreeg ik ook de 31 00 24 06 00 CD E6 01 keurig in beeld. Succes!

Maar helaas kreeg ik nog steeds bagger in beeld. En zo ben ik een week lang aan het bug-hunten geweest. Signalen gecheckt gevolgd, logisch nagedacht. En op het moment dat ik het op wilde geven ontdekte ik een fout in mijn tekeningen.

http://i166.photobucket.com/albums/u91/sjieto/ba378dc1-55eb-49c7-a4e1-85dd36d089cc_zpscd8880e3.jpg

Hier onderaan zie je een lijntje RAM Write die ik na een inverter (driehoekje+bolletje) /RAM Write heb genoemd. Dat invertertje zat niet in het originele schema. Ik heb het toegevoegd omdat ik een streepje heb gemist.

Het zal toch niet...

Inverter er tussen uit en de boel met ingehouden adem aangezet:

http://i166.photobucket.com/albums/u91/sjieto/IMG_5870_zps22169f09.jpg

M'n mond viel open. Beeld!

Natuurlijk nog niet fantastisch, links een balk met ongein en letters verkeerd maar BEELD!

Met wat rommelen aan de adreslijnen (paar foutjes) kwam ik hier uit:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6906_zps2db2ad9d.jpg

Hmm, we komen in de buurt! Twee dingen die nog fout zijn: alles is gespiegeld vertikaal en ik heb een paar lijnen in de letters die omgewisseld zijn. Met een herschikking van de datakabel kom ik bij het eindpunt van mijn verhaal van vandaag:

http://i166.photobucket.com/albums/u91/sjieto/IMG_5295_zps1241f495.jpeg

In de volgende delen ga ik verder bouwen, ik mis nog een belangrijk stuk hardware voordat het spel gaat werken: de shifter. Ook zijn inputs en geluidseffecten wenselijk, dus die moeten nog. Ik ben op de helft, maar mijn hemel, wat een toffe helft!

Magische rook (Arduino repair)

Door sebastius op zondag 1 juni 2014 21:25 - Reacties (20)
Categorie: -, Views: 8.623

Ik ben al een tijdje bezig een leerling uit groep 7 wat basisbeginselen van elektronica te leren. Hij wil graag robots bouwen en ik vind het leuk om er over te vertellen. Win-Win dus. Deze 'cursus' doen we op twee sporen: basisbeginselen en programmeren/bouwen met Arduino.

Hij had (jongens willen spullen) zelf met hulp van zijn moeder bij DealExtreme een Arduino Nano kloon gekocht voor een tientje. Helaas was het dingetje geen lang leven beschoren, na aansluiten thuis kwam er meteen rook uit.

Voor mij een prima aanleiding om de belangrijkste elektronica-les te geven:

Alle elektronica werkt op rook. Magische rook. En als de rook er uit komt, dan werkt het niet meer.

Maar goed, voor een knul uit groep 7 is het wel sneu. Dus met de belofte dat ik er naar zou kijken sloten wij af.

Zoals met alle diagnoses doe ik twee dingen: Ik sluit het apparaat aan om te kijken wat ie doet, en ik voer een visuele check uit op de componenten/baantjes.

Arduino Nano's kunnen met twee voedingsspanningen werken. Op de normale ingangen via de pennetjes, of via de USB. Via de USB deed de Arduino helemaal niks, maar als ik de 5volt direct aansluit dan lijkt alles te werken (een knipperend ledje en een power-led).

http://i166.photobucket.com/albums/u91/sjieto/IMG_6825_zps2186222a.jpg
De voorkant ziet er prima uit.

http://i166.photobucket.com/albums/u91/sjieto/IMG_6824_zps334796b7.jpg
Bij de achterkant zag ik wat geks. Iets rechts/onder de gele condensator zit een zwarte diode. En die leek me verdacht.

Onder de microscoop (ik ben intens gelukkig met een nette stereo-microscoop) zag ik dit. Vergeef me de matige kwaliteit, maar ik schiet uit de hand met mijn iPhone door het lenzen-gebeuren heen. Ik vind het nog erg netjes gezien omstandigheden ;)

http://i166.photobucket.com/albums/u91/sjieto/IMG_6820_zpsba3a48c8.jpg

Die is wel stuk :P

In het schema zie ik dat deze diode de USB 5volt verbind met de interne 5volt. Dit trucje zorgt ervoor dat de Arduino de beste voedingsbron kiest en niet iets raars doet op de USBpoort.

Ik heb geen flauw idee wat die knul heeft gedaan (ik denk aan een verkeerde voeding, zo'n usb-power-charger oid of gewoon kortsluiting), maar goed. De diode was er snel af, een stukje koperdraad tijdelijk in zijn plaats en we kunnen testen:

http://i166.photobucket.com/albums/u91/sjieto/IMG_6826_zps34f543de.jpg

Arduino werkt weer zoals hij moet. Het onderdeeltje kost ¤ 2,27 voor 100 stuks inclusief verzenden, dat gaat zijn leergeld zijn.