Jump to content
IGNORED

Programming the Lynx for a living - blank carts


karri

Recommended Posts

I just sent in the updated batch to Tinysine. Here is a picture of the design.

 

post-2099-0-49386200-1434559160_thumb.png

 

post-2099-0-68335500-1434559170_thumb.png

 

Note: much longer pads for the cart now :)

 

The 65k EEPROM uses one extra byte for addressing so all transfers are slightly slower than the 2k chip.

Edited by karri
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Thanks for the info Karri, I'll try those programs out.

I got the quote back for 10 pieces it was £136!!!!!! I might be able to get a cheap flight to Finland for less! I'll keep searching.......

Rgds

BadPricey

 

Sorry to resurrect a very early post about 3D printing the cart cases.

 

I've been looking into this in the UK too. There's a company here: http://www.3dprint-uk.co.uk/the-basic-rules-for-stl-files/

 

They offer very helpful tips on 3D printing things, just click the "Tutorials" menu at the top of their page. Start with the link I've added above and work through the advice. The best advice is to use "sprues" to connect each part as it brings the cost down in many cases. There is advice on using a 1mm minimum thickness for the walls and they offer a free polishing facility to make the printed items look great.

 

A lot of their advice may only apply to their pricing structure, their type of 3D printer or the plastic type they use but it's worth reading and they seem to be cheaper than £136 for 10 pieces!

 

I've tried Blender and just can't get used to it. It has a learning curve like the White Cliffs of Dover! 3DS Max 4 was so easy back in the day but wasn't/isn't free of course.

Edited by aminor00
Link to comment
Share on other sites

Hi amonor00,

 

I managed to tame Blender and have no problems with knowing how to optimize 3D printing anymore. For Lynx carts it is actually best to print them standing up and not lying flat.

 

Today I received the final pcb carts and during the weekend I plan to test them out.

 

My vacations start now. If the weather is as rainy as it appears to be now I can easily spend a day at the library and print out a dozed of cart covers. For free!!!

 

I would like to emboss a glass of Martini on the 3D cart cover or perhaps a gun instead of the text LYNX. This is for "Shaken, not stirred" of course.

  • Like 1
Link to comment
Share on other sites

The software bugs are now sorted out and the cart works as it should.

 

What does not work is the 3D cover. It did not fit perfectly.

 

So it is time to re-design the stl file.

 

The poll in another thread shown a clear sign that cost is no issue. The 65536 byte eeprom seems to be a winner. I try to order a few chips today to test them out. So it looks that this mini-kickstarter will contain the cart equipped with a 65535 byte eeprom and a 512k flash. A cool combination imho.

 

Edit: I just ordered 10 chips from UK. (AT24C512C-SSHD-B, EEPROM Memory 512kbit,, 65536 x, 8bit, Serial-2 Wire, 550ns 2.5 → 5.5 V, 8-Pin SOIC). They had them in stock. The actual price was 1.38€ so a bit cheaper than me assumption of 2€.

 

This chip has a few operating modes.

 

Write a byte = 16-bit adress plus data byte

Write up to N bytes = 16-bit address plus bytes (only the low address byte increments so you need a little intelligence here). Unfortunately N depends on the manufacturer. It can be 16 - 128.

Dummy write = 16-bit address

Read next byte = data byte

Read many bytes = data bytes (just read as many as you want)

 

So what should the API look like?

 

unsigned short eeseek(unsigned short pos);

unsigned short eewrite(unsigned char *buf, unsigned short size);

unsigned short eeread(unsigned char *buf, unsigned short size);

 

or

 

void eeput(unsigned short addr, unsigned char byte);

unsigned char eeget(unsigned short addr);

Edited by karri
Link to comment
Share on other sites

Hi guys,

 

I know I am changing things around too much... The 2k chip is dropped from the design. As there was a bit space I put in a 93C86 (or 66, 46). This is to allow me to create some old carts I done in the past as well. Solitaire, Mega Pak I, Lynx Reloaded comes to mind.

 

Another thing was how to clock the EEPROM chip. The old designs needed a separate CS and CLK. In the new 2-wire chip we could actually simplify things even further. So instead of wasting A17 for CLK I changed it to use A1 just as in the old EEPROM design.

 

The benefit here is that all the block select pins are now unused (A11 - A18). Or lets say that using the A11-A18 pins should not affect the eeprom. In the current design there was a potential clash that bothered me.

 

Fortunately I need to cut just one trace and add one wire to test this in the current design. So no new pcb's are required.

 

The factory :)

 

It takes only USB power as input. The control is through the WiFi dongle. Raspberry Pi acts as a WiFi server at 192.168.42.1 so you can just log in with your laptop to burn carts.

 

post-2099-0-63451900-1437234202_thumb.png

 

The cable between the laptop and the Raspberry Pi is just to give 5V to the burner.

 

post-2099-0-24162200-1437234311_thumb.png

 

I already tried a 128k game (Blue Lightning), a 256k game (Lemmings) and a 512k game (Ninja Gaiden III). All worked ok.

 

The cart also fits my Lynx perfectly.

 

post-2099-0-42482700-1437234815_thumb.png

 

It also fits into Lynx I giving plenty of space to close the door. And it works as well. Easy to remove also thanks to Duraniks design.

 

post-2099-0-45976500-1437235349_thumb.png

 

 

Edited by karri
  • Like 4
Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Working on the fourth connector version...

 

post-2099-0-59766300-1439582492_thumb.jpg

 

The top right is copper wire around elastic rubber. Too hard. Not elastic enough.

 

Top left is braided wire around elastic rubber. Not enough movement.

 

Bottom right is the Lynx Connector. Works great.

 

Bottom left is safety pins. These should have enough movement and the spring is pretty good. I just need to make some 3d plastic guides in the library on Monday. I hope this works as it should.

 

post-2099-0-71840900-1439582707_thumb.jpg

 

Above is a closeup of the braided wire one.

 

post-2099-0-29807900-1439582743_thumb.jpg

 

A friend of mine called and asked if I want to go sailing. So I sneaked out of the office at noon and came back in the evening. The Lynx can wait...

 

  • Like 2
Link to comment
Share on other sites

Status update. I wrote some factory tests to check the carts before shipping. But as usually got stuck. The 64k eeprom stubbornly refuses to co-operate. The ACK bit is correctly received after the 1st control word. But no ACK bit after the high-address byte. Time to start reading datasheets ... again.

 

The device has correct markings. Works from DC up to 1MHz speeds. Voltage range 2.5V to 5.5V. Operating temperature -40°C to +85°C. Endurance: 1,000,000 Write Cycles. Data Retention: 40 Years. Looks good. Works bad.

 

A random read should take 38us at max speed. A random write takes 5ms. So writing the entire memory is 6 minutes. Making a screen dump would take 41 seconds. This is good to keep in mind when planning what you can use this chip for.

Link to comment
Share on other sites

Status update. I wrote some factory tests to check the carts before shipping. But as usually got stuck. The 64k eeprom stubbornly refuses to co-operate. The ACK bit is correctly received after the 1st control word. But no ACK bit after the high-address byte. Time to start reading datasheets ... again.

What value pull-up resistor have you got on SDA?

Link to comment
Share on other sites

At the factory tests I use internal pullup on Raspberry Pi 2. It appears to work ok as a byte read produces 0xff all the time.

 

Plus the first control byte gets ACK at LOW as it should and after that all bytes produce ACK HIGH which is an error indicator.

Edited by karri
Link to comment
Share on other sites

Ok. I will try that. The good thing is that we can still change the final PCB and add space for a SMD resistor.

 

Just checked the datasheet. They are talking about 1k3 pullup.

 

Thanks for the comment. This may be the reason.

 

What about the real Lynx AUDIN pin? It did not need a pullup I think. Perhaps I add it on the programmer board and not the Lynx cart?

Edited by karri
Link to comment
Share on other sites

Just checked the datasheet. They are talking about 1k3 pullup.

What supply Vcc is that for?

 

What about the real Lynx AUDIN pin? It did not need a pullup I think. Perhaps I add it on the programmer board and not the Lynx cart?

What is on the Lynx schematic? How are you driving SDA? Are you simulating an open drain drive stage? By that I mean to make the pin high you make SDA an input (at the programmer/Lynx side) and rely on the pull-up to make the line high. When you want SDA to be low (from the programmer/Lynx), make the pin an output and drive it low.

Link to comment
Share on other sites

If you don't have a scope get one of these Saleae compatible USB 8 channel logic analysers :-

 

eBay Auction -- Item Number: 2218361754831?ff3=2&pub=5574883395&toolid=10001&campid=5336500554&customid=&item=221836175483&mpt=[CACHEBUSTER]

 

Its cheap and they can do I2C packet forming e.g. decode SCL/SDA signals into something that is human readable.

 

They aren't as good as more expensive logic analysers but you'll probably get some good use out of it.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...