Press "Enter" to skip to content

Category: making things

Ivan’s P3 is Finally Done

Screenshot of MIDI-OX displaying sync data from Ivan's P3 sent via the SYNC port.

That right there is a screenshot of MIDI-OX displaying data coming into a MIDI port, including a START and STOP message. This wouldn’t be anything too special, except for that it’s coming out of the SYNC port of Ivan’s P3, which means that the MIDI Sync issue which I’d previously mentioned is now resolved.

It turns out the problem was related to some changes which Colin had made in order to eliminate unintended triggering of the PICs inputs. It appears that this new code was mostly a backport of the firmware for the v1.6 boards (these are v1.5) which included the function for DIN SYNC passthrough, but doesn’t seem to default to having MIDI sync on.

The solution is to boot the P3 while holding down the 1 key. It will then tell the PIC to flip into MIDI mode, the PIC will write 00 to the first byte of its EEPROM (so it always goes into MIDI mode in the future), and then as soon as it first receives a RUN command it’ll start spraying out the clock / start / stop commands seen above.

I guess if I had been better (or more thorough) at reading disassembled PIC code I could have seen it doing all of this, but I’m not really that familiar with it yet, and I didn’t want to spend six hours looking up opcodes I didn’t understand and what each register written to was. Ah well, at least it’s working and I know what happened. Now I just have to pack it up and get it back to Ivan.

Leave a Comment

Playing with the PIC12F629

Tonight I did some more digging into the problems I’ve been having getting the MIDI sync working in Ivan’s P3. I had been sent some new firmware to try, and while that (in the disassembler) appears to deal with the right pins (GP0 as output, GP5:GP4 as input), it didn’t work. Tonight I did a good bit more digging and eventually ended up writing this program as a test.

Based on my understanding of how the PIC in the P3 with v1.5 PCB works, this program does the following: GP0 is set to low, then whenever GP4 changes state GP0 is changed as well, but only if GP5 is high. The end result is that on the output pin of the PIC, which connects through to the SYNC output, I basically see a mirror of the inputted sync signal whenever the sequencer is running.

I don’t think that it would be a huge stretch to write my own version of the software that is supposed to be in this PIC, but I haven’t gone that far. As far as I’m aware all I’d need to do is have each sync pulse received cause a MIDI Clock message to be sent out of GP0, and whenever GP5 goes high or low send a respective MIDI Start or Stop. That said, this P3 should really be running its official software, not my replacement stuff.

Hopefully I’ll receive some new firmware for it soon, and hopefully that firmware will do what it needs to. If I’m bored enough tonight maybe I’ll try and follow the flow through the entire program in the disassembler and figure out where it’s going wrong.

Leave a Comment

P3 v1.5 MIDI Sync Issue

Looking inside of Ivan's P3 while the micro grabbers are connected to ground, sync in (to the PIC on GP4), and what should be MIDI out (from the PIC on GP0).

So, in wrapping up the testing of Ivan’s P3 I found one more problem: MIDI Sync output isn’t working. I think I’ve narrowed the issue down to the software running on the PIC which handles this. Here’s what I know as of last night:

· U1, the main CPU on the P3, has two lines coming out of it which either connect directly to the DIN sync port or to U19 used for conversion to MIDI sync.
· I am seeing nice square waves on the PIC’s GP4, and these pulses change width with tempo change.
· The line running from U1 to the PIC’s GP5 goes high when the sequencer is running, then low when it isn’t.
· I don’t see any data coming out of the PIC on GP0, which is what connects through a 220Ω resistor eventually through to the MIDI port.
· There are no shorts on any of the lines.

In troubleshooting the PIC itself I have:
· Read out the firmware from the PIC, and received new firmware from Colin (the designer) for the PIC. These did not match, and the new firmware did not resolve the issue.
· Tried a spare PIC which I had sitting around in my parts pile.
· Wrote a test program to blink all GPIO lines on and off and successfully ran it on both PICs.
· Confirmed that the PIC is connected to power and ground and other lines, as expected.

After this, I pretty much have run out of ideas. This morning I threw the firmware Colin had sent me into a disassembler, and while I’m not very good at reading assembly, I think I’m that GP0 and GP1 are used as inputs and GP2, GP4, and GP5 are outputs, confirming that the firmware I was sent is for the v1.6 PCB. There is lots of BTFSS GPIO,0 and BTFSC GPIO,1 which are used for reading pins, and lots of BCF and BSF on GPIO,2, GPIO,4, and GPIO,5. GP2 (GPIO,2) seems to be used the most in the program, so I think it’s the MIDI port, and this would match what I see in my old photos of the v1.6 board, as GP2 connects through a 220Ω resistor to the pin header. GP4 and GP5 probably mirror the input received on GP0 and GP1, but I’m having difficulties confirming which pins are sync and which are enable.

I just pulled apart the older file which I had read out of the PIC previously and it seems to read from GP4 and GP5, with MIDI data going out of GP0. These port uses match my observations of the pinning of the v1.5 board, so I think that the older firmware looks somewhat right. That said, it clearly wasn’t working, otherwise I wouldn’t be posting this.

I think tonight I’ll try to write the originally-read firmware back into one of my new PICs, then I’ll drop it back in the P3, just to see what happens.

Oh, and for what it’s worth, this is my understanding of what the PIC12F629 on the P3, U19, does (or is supposed to do) on the the v1.5 boards: It watches for when GP5 goes high (an indication that the sequencer is running) and when it does, it sends out a MIDI clock message with each pulse it sees on GP4 (not sure if this is done at the rising or falling edge). It then stops sending these clock messages when GP5 goes low. On the v1.6 boards it seems to do something similar, but since it has three outputs I believe it also sends the DIN sync output as well.

There are also more photos of last night’s work at the bottom of this page in the last two rows.

UPDATE: One thing I didn’t test was input on the pins and the internal oscillator. I make a quick change to the blinky LED program to run from the internal oscillator and another version which I can use to test if all the inputs work. I’ll try that tonight. At this point it’s almost not enough for me to fix the problem, I want to know what wasn’t right.

Leave a Comment

Colin Fraser Saves The Day

R20 replaced with a 10K part, per Colin Fraser's suggestion, in an attempt to alleviate the issues with the LCD.

When I woke this morning I had received a response from Colin Fraser in regards to the problem mentioned in this post. He mentioned two things: the issue isn’t likely to be caused by timing because he specifically checks for the LCD to be available before writing to it, and that he has seen an issue where the transistor which enables the R/W line of the LCD doesn’t have enough gain. To increase this gain he suggested replacing the 22K resistor at R20 with a 10K part.

I did so as can be seen above and this is the result: a P3 displaying things properly. Thanks, Colin!

Now I just have to do a little bit more testing (I’m paranoid about these things), then I can pack up the P3 and send it back to Ivan. Of course, that will come after dinner. Danielle is in the kitchen with where they are making making naan and Mattar Paneer with this recipe from Manjula’s Kitchen. I’m looking forward to a very tasty dinner.

Leave a Comment

Odd LCD Problems in Ivan’s P3

For some reason, when booting the P3, it drops the first two letters of the 'Firmware check..' message. I'm not sure if this is the P3 mainboard booting faster than the LCD, or what.

Upon arriving home from work today I found a white box in the mail from Scotland indicating that the new LCD for Ivan’s P3 had arrived. This is the replacement that Colin (the Sequentix guy) offered to people as a replacement for PLEDs which had failed. After eating a bit of dinner I set to installing it.

Because of the spacing of the LCD and function switch board I had to file away a bit of the PCB in order to make it fit nicely. Thankfully Sequentix’s page on the replacement LCDs had mentioned this, so I was expecting to do it.

All in all, it went well. After getting the LCD working I installed the v4 firmware and MemX board, getting the machine wholly up to date.

I’m running into a bit of weirdness with the LCD, though. As can be seen on this page of photos, the display seems to be cutting off some characters during boot, corrupting others, and occasionally causing weirdness. I’ve tried making a new cable and replacing the IC directly connected to the LCD, but that hasn’t been successful. I’m really afraid that the controller on the LCD may be messed up. Hopefully tomorrow I’ll be able to use one of Ivan’s spare LCDs which he was sent (by way of me) by Crystalfontz as replacements for his failed PLEDs.

UPDATE: I just emailed Colin, the Sequentix guy, and asked for suggestions. After talking with a few people I’m starting to feel certain that the problem may simply be that the LCD doesn’t start up fast enough for the P3. It seems that with the HD44780 protocol the LCD talks the user can set up custom characters in the CGRAM (character generator RAM). While I may be way off base, I’m thinking that the P3 sets up the special characters it needs on boot, then tries to display stuff. I think that if the LCD isn’t running stable yet then these characters, along with data written to the display controller itself, could become corrupt or lost, displaying the symptoms like what I’m seeing. Hopefully I’ll find out for sure soon. If this is the problem then a fix would simply require the P3 to wait for another 250ms (or so) at power-on.

Leave a Comment

Southern Tier’s Back Burner

Souther Tier's Back Burner Barley Wine poured into a glass.

Things have been a bit boring around here lately, with me working at my job, working on the new server, riding my bike, and trying to relax a bit, so I just thought I’d post this photo of Souther Tier‘s Back Burner, a decent (and quite hoppy) barleywine which I drank while watching The Life Aquatic with Steve Zissou with Danielle on Sunday night.

Today I got GEOM-based disk mirroring working on banstyle.nuxx.net, but in doing so I realized that the on-board SiI3114 controller only supports SATA/150 (aka SATA I) and thusly no NCQ, which disappointed me. To remedy this I ordered part number N82E16816104007 from Newegg.com, a Koutech PSA421 4-Channel Serial ATA & Serial ATA II 64-bit PCI Host Controller which appears to be a reference (or very standard) implementation of the SiI3124 PCI/PCI-X to 4 Port SATA300 chipset. This should fit in the one usable slot in the case and provide the SATA interface that I really want. I just wish it’d arrive sooner.

Leave a Comment

Loud and Fast

The two Opterons 885 CPUs, seated nicely in the sockets.

Yesterday I received very kindly sent FedEx package containing some spare computer hardware a friend of mine had, a pair of Opteron 885 dual-core 2.6GHz CPUs and 8GB of registered RAM, to be used in my new server.

I’ve been having some problems with it all, but I’m not quite sure what the cause is yet. With all 8 DIMMs fitted the machine kept hanging while installing FreeBSD 7.0. Per my friend’s suggestion I’m trying the install again with only one DIMM per CPU installed, as he said he’s seen problems with a fully kitted out machine installing some OS’, for som reason. For the first half of the memory things have gone just fine, so I’ll finish running through the pieces two at a time. After those tests I’ll run Memtest86+ on discreet pairs of DIMMs, then on the full 8GB.

I might also install XP on it so that I can run SiSoftware Sandra on it for a while, as it’s really good at eating a machine alive.

Unfortunately I can only run these tests during the day because the server is simply too loud to do otherwise. I measured it at 74dB while standing next to it at the keyboard, and the noise seems to be three distinct tones (low, mid, and high) caused by the different fans in the box. It’s really not much different from a siren. The noise is enough to bother me a bit while just sitting around the house doing other things, so trying to sleep while it is running would be just awful.

Oh, and some quick testing last night showed that it ran most things in openssl speed faster than my Mac Pro. Hopefully I’ll be able to run the whole DB from RAM.

Hmm, I just dropped the full 8GB back in there, turned on PowerNow! and ACPI 2.0 and I’m building ImageMagick to see how things go. While that runs I think I’m going to go for a bike ride.

Leave a Comment

/mode +w #beer

Victory's Hop Wallop poured into a glass. It's a somewhat syrupy, very hoppy beer. I like it.

Tonight I ended up staying at work until about 8:20pm helping a coworker out with something. It’s not set and he’s on vacation tomorrow, so I’ll end up working on it too. Ah well.

Since I got home too late to go ride my bike I ended up boxing up Ivan’s P3, making a frozen pizza, then watching some TiVo’d stuff and WTVS-HD before wandering back up here to my computer. So, why did I box up the P3? Well, remember the failing PLED post? Yep, it’s bad. While the first one didn’t display very well, the second doesn’t display at all.

I had actually emailed the pictures of the questionable display (1, 2) to the tech support people at Crystalfontz to see if what I was seeing really is indicative of a failing PLED. One of the tech support people replied, confirming that it is what I thought, and suggesting a replacement display. If you’d like to read the whole thread between the tech support person and I, it’s archived as a PNG here.

So, now Ivan is sorting out grabbing a new LCD and then I’ll get back to work on his P3. For now I’ve boxed it up and it’s sitting in a safe place, above ground level, not below any water pipes.

My next (current?) project is now a set of PCBs similar to the RS232 to Eaton Leonard Level Shifter boards which I did last year, but instead accepting ~7VDC – ~40VDC (or straight 5VDC) for the power, with the conversion being handled by a reference implementation of a switching supply. (This is the supply whose ripple is shown here.) The parts are ordered for the first run of them, I just need to wait until they arrive, confirm the footprints, order the PCBs, test, and build.

But for now? I rest.

Leave a Comment

Tyan Transport GX28 (B2882)

I just hit submit at Newegg.com to complete the purchase of a Tyan Transport GX28 server with a Tyan Thunder K8S Pro (S2882). As item number N82E16856152008 the barebones server was only $409.99, with $31.24 shipping. Thanks to a friend helping me out with some RAM and some disks which I’ll be able to make redundant I’ll likely end up with a 1U server with a pair of Opteron 800-series CPUs, 8GB of RAM, and mirrored 500GB SATA disks.

This all brings about an interesting question of where to host the new box. I’ve discussed this before, and the more I think about it the more I want to get my box out of Waveform. Things are working fine for now, but I question what will happen if or when the box does start to have problems. The provider I’m most seriously looking at would run $100/mo

So, now I just have to wait for things to be shipped and delivered and then I can start assembling it all. I imagine I’ll let it cook for a few weeks to a month before installing it. It’ll be running FreeBSD 7.0, likely with a custom kernel and world rebuilt specifically for the CPU. I think I’ll also want to give the new ULE scheduler a go, particularly after seeing this presentation (PDF) about where FreeBSD is going.

I’ll continue to stick with lighttpd, although I hope that the OpenSSL bug in 1.4.19 is fixed in ports soon. Disks will likely be mirrored with gmirror, although I will investigate the on-board hardware RAID. I’ll probably also stick with MySQL for the db and Postfix for mail. Basically, nothing will change in that regard.

I may opt to eliminate some individuals I currently host from the box, mostly because I never have contact with them. I don’t mind hosting people, but when the sites sit mostly unused and I have almost no contact with the individuals who use them (except when there are problems, of course), it’s a bit frustrating to keep up maintenance on apps running on the sites. Also, this new provider has stricter limits on bandwidth (1mb, 95th percentile), and I need to be a bit more careful about how it is used. Anyway, if I’m opting to remove your site from hosting I’ll contact you outside of here and provide you with a chance to get your data.

For now I wait, then build. This could be pretty nifty. Oh, and the colocation provider offers IPv6 at no extra charge, so that ought to be fun to play with as well.

Leave a Comment

Failing PLED?

Two lines of display on the failing PLED during bootloader update. Note that the second line is more faint than the first, pixels are smaller than expected, and there is distinct fading around the edges of the display.

Last night I made quite a bit of progress on Ivan’s P3, getting it up and running, but I did run into a few problems. First, as can be seen above, the PLED which came with the enclosure seems to be failing. It will either display no text, one line of text, or (rarely) both lines, and every time pixels seem small and dim, with the edges of the display fading to nothing. Only a power cycle of the P3 seems to (re-)activate non-working parts of the display. As the P3 still functions even when nothing appears on the display, I believe that it’s actually the display elements of the PLED which is failing.

Here is the PLED in my P3 from 2006, and when it is compared with these two images (1, 2) of the PLED from Ivan’s P3, it seems pretty obvious that something is wrong.

Thankfully there was a spare PLED in the package of parts I received, so tonight I’m going to try that one instead.

Second, I’m not happy with the cables I made for connecting the tempo and data pots to the mainboard, so I’m going to remake them. The tempo pot connection seems to be a bit flaky, so I’m not sure the pins are properly seated in the connector. The cables are also short enough that they are difficult to connect, so I’ll probably redo them with braided 24 gauge hookup wire or something like that.

Finally, the v1.5 mainboard construction notes indicate that when the P3 is being set up for MIDI sync, D2 and D3 should be replaced with 220pF caps in order to add a bit of extra capacitance to the lines to work around false triggers. I didn’t have any 220pF parts, and none came with the kit, so I instead used 330pF parts. I don’t believe this will be a problem, but I made a post to the analogue-sequencer group asking for confirmation.

Beyond those three problems, the build is going quite well. I’m very happy with how both the step board and keypad came out. The IDC ribbon cables, their connection, and power input stuff also worked out great.

I was also able to get the latest bootloader and v3 firmware on the P3, which means that as soon as the other issues are sorted out I can get the MemX and latest v4 beta installed. After that it’ll just be time to install the knobs, test it out, and ship it back to Ivan.

Leave a Comment