blog.jmp.no

Electronics, coding and hacking. And ADD.

ATputer revived, upgraded

2012
8
January

I previously mentioned the ATputer (aka "Joko Uno") computer earlier, and I felt it was time to brush some dust off it and give it a small software upgrade.

I also came across a BASIC interpreter called DK-BASIC, which looked promising. I decided to implement it into the ATputer, to see if it would fit, and how it worked out. This BASIC implementation is far more mature than what I had going earlier, so it was exciting to see how it would work out.

Implementing it into my project was surprisingly easy. I added a few commands needed for my system (ANSI support, buzzer and LED control, and a few more) in addition to cleaning up some old mess I left behind the last time I hacked on this thing.

DK-BASIC was surprisingly great, and everything turned out so exciting I'm still up (and I have to go to work tomorrow..!)

Here's the computer in real life. The cables attached are for ISP and power only, everything else is "on board". With only one hand available, I didn't really bother typing in a too long program, but as you can clearly see, it works just fine:

I'm quite pleased with this one. All it needs now is a case to live in.

Ninja edit: Here's a picture showing how it supports ANSI colors:


Joko Uno ANSI support
The text is actually purple, but it doesn't show here.


Breadboard 6502, with SID (WIP)

2012
6
January

As a part of creating the SwinSID chip, I need a working test environment up and running. Time to breadboard a 6502... again.

I've used the typical 32K RAM/32K ROM setup, and the ROM is personalized with start address $C000, which calls the player at $E000 (init) and $E003 (play). Since there's no VSYNC, I've added a 50ms delay with looped NOPs in the code. The address decoder shows most activity around $C008 (where the delay is).

Breadboard 6502

So the code runs and works, but there's no sound from the SID yet. I've skipped the caps on pins 1-4, I might have to go through the datasheet to see if they are required. I'll give it another go tonight.


New 2.4GHz wireless modules received

2012
3
January

Yesterday, two of these modules arrived in my mailbox:

NRF24L01

These are are low-power 2.4GHz wireless transceiver modules featuring the nRF24L01 chip from Nordic Semiconductor. They might be used for an exciting high-speed project, but it all depends on how reliable they are. I will post an update as soon as they have been tested and verified working...


Keypad interfaced, working

2012
1
January

The diet reverse engineering worked fine, and the device worked exactly as expected. I hooked it up to an ATmega128 board I happened to have on the breadboard after the bluetooth controlled relay project, and after a 15 minute coding job it was interfaced to the address decoder board (only one digit in use, the others are left floating). Excellent. Now, to figure out something useful it can do.

Keypad interfaced


Reverse engineering unbranded keypad

2011
29
December

I bought a couple of these 16-button alphanumeric keypads a while ago, to use for various projects. They were dirt cheap with free shipping so the lack of a fancy label on them didn't worry me too much. If they worked they worked, and if they didn't - well, hey, not a big loss.

What I didn't take into consideration, was the fact that they didn't come with any documentation. At all. I had no clue what the pinouts were. Searching was useless, and the few similarly looking datasheets I found didn't match at all.

Since I got a new pair of probes for my multimeter today, I had a excuse to investigate this case further.

New multimeter probes
Finally a proper pair of probes, rated up to 600V/10A.

"Reverse engineering" isn't the proper word for this job, I think. There's no engineering involved, it's more... figuring out how it works. Anyway, time to figure out how this thing works, which should be a very simple job. As expected, opening the keypad revealed a single-sided PCB - although with a strange design. I guess the jumpers are inevitable on one side, but traces leading nowhere (broken by drilled holes) made no sense to me. You should be able to see a few of them vaguely on the image below:



Strange design, but still simple to follow.

I'm guessing multiple boards are produced simultaneously, and e-testing is done on the entire panel before separating and traces are cut by drilling holes.



Two boards, similar - but different.

...but wait. The other PCB is mounted upside down. I don't know wether my recently acquired mapping is correct, or as incorrect as it gets. I opened the other one and confirmed that both PCB's are identical. Must've been one assembly worker in China having a bad day, I guess.

Either way, if you have one of these, you should be able to figure it out from this map:

      COL1  COL2  COL3  COL4
    ROW1  (1)   (2)   (3)   (A)
    ROW2  (4)   (5)   (6)   (B)
    ROW3  (7)   (8)   (9)   (C)
    ROW4  (*)   (0)   (#)   (D)
    
    Column 1 = pin 8
    Column 2 = pin 1
    Column 3 = pin 2
    Column 4 = pin 3
    Row 1 = pin 4
    Row 2 = pin 5
    Row 3 = pin 6
    Row 4 = pin 7
    

When you notice the numbering, it makes you go all "ahh, but why didn't.. since.. jumpers.. oh, fuck it."

Scanning each row and column sequentially reveals if one or more buttons are pushed. It's worth mentioning that I experienced the internal resistance of these devices to be up to 70-80 ohms, due to the rubber contact pad.


Add to Google