Sep. 8th, 2017

randomdreams: riding up mini slickrock (Default)
I got a demo of my hardware/software/firmware project running reliably and, thankfully, did a soft-launch of it at our weekly tech meeting, which consists of my manager, my coworker, and I. Because I knew some aspects of it are fussy (we want to move away from our 1960's gpib interface towards lan, but setting up networking on these instruments is a slow, painful process, and if you let them use dhcp everything goes to hell in a handbasket every time any component gets power-cycled) I started the setup and testing forty minutes before our weekly meeting is supposed to start. The start time came and went, and I was still in there fighting with it, and nobody else had shown up. I got it working about ten minutes behind schedule, just as my coworker walked past and stopped and said "oh, I totally forgot about the meeting." He went off to find our manager, who is under a huge amount of stress and was dealing with it by taking his bike apart in his office and was surrounded by sprockets and grommets. They both showed up, and I talked them through the hardware and what I've got working so far, and we spent some time reviewing the software, as it's the basis for about 80% of the next year's worth of work we're going to do. It went pretty well.
Afterwards my coworker came in and nearly melted down, because he is unusually averse to change, and I'm putting vast quantities of change on the table: new software, new hardware interface, new instrumentation, new system for extracting data and manipulating it, I'm using parallel processing and calling modules I've precompiled in a different language. A lot of that I'm doing A: to see if it works and B: to see if it's worth the bother, not because I have to, but he sees this as an onslaught.
Aside: labview is a whackadoodle language. To call a subroutine, you drag the subroutine icon into your work window. There is a C-style header, with C-style parameters, that you can go find in a header file if you want to, but the way you actually handle that is you draw lines from the main program's output terminals on the main program box to the input terminals on your subroutine. If you're passing an array, it's a dotted green line. If you're passing a double, it's a pink line. If you're passing a signed/unsigned 8 or 16 bit integer it's a blue line. Terminals have to match lines, have to match terminals on the other end. You can t them, as well. Some parts are really obscure. A while loop is a box, with a terminal into which you feed an unsigned integer, to determine the number of iterations, and another terminal into which you feed whatever it is that the while loop is supposed to do. But you can also click on the point at which that line enters the while box, and hey presto suddenly it's a shift register instead of a while loop. ??!? Coz that makes sense, and is really easy to debug when you're looking at the program later.
And, excitingly, everything is pass-by-reference, so it's really easy to completely muck up a datastream if you're trying to just, say, increment a value every time you get a good reading, and inject a bunch of trash into your data. But it does let you return an arbitrary number of values from a function call without having to use pointers to structs, so that's kinda nice, I guess.
Anyway.
So today we went on a bike ride at lunch and when we got back my manager sent out a meeting invite to pretty much everyone in the building, with ten minutes of notice, to look at my project.
Luckily I hadn't broken it down.
But man that's not a lot of time to prepare for a raft of technical questions. It's a good thing I'm a loudmouth.
It went really well. I managed to field all the questions successfully. One coworker wanted to know if he could integrate what I was doing into matlab. Another had a bunch of questions about hardware parallelizing. I could see my poor coworker, the one averse to change, winding himself up into enough tension that he was bouncing both legs up and down uncontrollably, his stress tell. Afterwards he had *pages* of questions about the questions other people were asking. He really needs a more deterministic job.
Everybody liked it.
They're going to like it a lot more when I have a demo system ready to talk to new silicon the moment it comes through the door, while our applications software guy gets called off on other emergencies and won't have even a cursory interface ready for two weeks after we get new silicon, as happened the last two times. I'm trying to get our digital designer to give me a (FPGA-based) hardware simulator for the chip, so I can actually try out some more complex stuff before the new chip's anywhere close to coming back, but apparently his hardware simulation doesn't actually work like that.

Profile

randomdreams: riding up mini slickrock (Default)
randomdreams

April 2020

S M T W T F S
   12 34
567891011
12131415161718
19202122232425
2627282930  

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 13th, 2025 11:33 am
Powered by Dreamwidth Studios