Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
Perfectly happy to recommend beginners use all the training wheels they can.

Arduino is a gateway drug

Adbot
ADBOT LOVES YOU

That Works
Jul 22, 2006

Every revolution evaporates and leaves behind only the slime of a new bureaucracy


Sagebrush posted:

I'm rolling my Professor Eyes extremely hard at this attitude.

Mind my asking what class you teach and do you have an entry level textbook you'd recommend for some one learning from ground zero?

I've got a PhD but in microbiology, haven't had a physics class in almost 20 years and never had one in any kind of electronics.

Oddly enough have co-authored a few papers in electrochemistry but that's very far from all this.

That Works fucked around with this message at 00:44 on May 18, 2020

Dominoes
Sep 20, 2007

What do y'all think of this one from MitX? First in a 3 part series. I started it yesterday. I've been learning in a project-oriented sense, but am backing up to go over the academics. Quite high-level; ie the intro explains how the intent is to replace Maxwell's Eqs with reasonable abstractions; out come V, I, R etc.

Foxfire_
Nov 8, 2010

I think both the pluses and minuses of Arduino are around intimidation:

+: It gets you to blinky lights and projects that do things very quickly. You won't spend a week fighting a chip's startup assembly/power/clock system, give up, and write the whole thing off, which is a real danger for someone teaching themselves without a class structure. It gets across a 'I can make things happen' bar fast so you get positive feedback.

-: It doesn't teach you to learn how to read a datasheet. All the simple hardware will have wrappers that automagically work, so the first parts you would actually have to read documentation for are going to be complicated. A non-Arduino process would have gotten there more gradually (i.e. 'how does GPIO work?' -> 'how does ADC work?' -> 'how does UART work?' -> 'how does a touchscreen driver IC work?'). You have a big jump to get out of the Arduino walled garden.

Sagebrush
Feb 26, 2012

That Works posted:

Mind my asking what class you teach and do you have an entry level textbook you'd recommend for some one learning from ground zero?

I've got a PhD but in microbiology, haven't had a physics class in almost 20 years and never had one in any kind of electronics.

Oddly enough have co-authored a few papers in electrochemistry but that's very far from all this.

The class I teach in this stuff is one for industrial designers to learn how to hack together a working prototype of their design (to complement the usual appearance and mechanical prototypes) for demonstration or testing purposes. Not engineering; if the prototype works well enough to show the idea and let people try it out in a controlled setting, that's enough. Combination of basic electronics, programming, rapid prototyping, 3D printing, etc.

There actually isn't an ideal textbook for my particular class so I'm gradually writing one of my own. But Margolis' Arduino Cookbook is pretty decent: https://www.amazon.com/Arduino-Cookbook-2nd-Michael-Margolis/dp/1449313876

That Works
Jul 22, 2006

Every revolution evaporates and leaves behind only the slime of a new bureaucracy


Sagebrush posted:

The class I teach in this stuff is one for industrial designers to learn how to hack together a working prototype of their design (to complement the usual appearance and mechanical prototypes) for demonstration or testing purposes. Not engineering; if the prototype works well enough to show the idea and let people try it out in a controlled setting, that's enough. Combination of basic electronics, programming, rapid prototyping, 3D printing, etc.

There actually isn't an ideal textbook for my particular class so I'm gradually writing one of my own. But Margolis' Arduino Cookbook is pretty decent: https://www.amazon.com/Arduino-Cookbook-2nd-Michael-Margolis/dp/1449313876

Thanks!

Dominoes
Sep 20, 2007

It depends on your intent, and secondary effects. You'll hear EEs and embedded devs say things like you have to learn things at a low-level and directly manipulate registers. Or I'd never hire an embedded dev/EE who isn't fluent in X,Y,Z low-level things. To get a deeper understanding, this doesn't hurt, but you could create usable devices without diving this deep, by leveraging abstractions. Taken too far in a diff direction, it's easy copy+paste templates from the latest Arduino/Rasperry Pi bloggers, and not learn how to be creative on your own, or how to diagnose problems that don't have a pre-written article addressing.

I learned initially Rust on Embedded, from a tutorial that leaned heavily on a tutorial-specific library. Worked fine during the tutorial, but I went through a frustrating time transitioning to a program that doesn't use it later. Ended up pouring over the source code, and coming to a reasonable level of abstraction, where I ditched the tutorial libs, but kept the community-standard HAL libs they wrapped. Ie a HAL lib for Cortex, one for STM etc.

Friction can sometimes be the best source of learning. I spent a chunk of this afternoon unfucking drivers for an LCD panel that took control of the clock peripheral, meaning you couldn't use it after without invoking reference-counted smart pointers. I switched it so the driver borrows the clock, dodging the problem.

Dominoes fucked around with this message at 00:56 on May 18, 2020

Forseti
May 26, 2001
To the lovenasium!

That Works posted:

Mind my asking what class you teach and do you have an entry level textbook you'd recommend for some one learning from ground zero?

I've got a PhD but in microbiology, haven't had a physics class in almost 20 years and never had one in any kind of electronics.

Oddly enough have co-authored a few papers in electrochemistry but that's very far from all this.

The Art of Electronics is a great book with broad coverage of the subject.

shovelbum
Oct 21, 2010

Fun Shoe

ante posted:

Get an ESP32 dev board, download Platformio, it'll allow you to generate an example blink program, and then also an example internet request program. Platformio handles all the toolchain setup and Just Works, which is kinda magic. I guess you'll also need a motor control shield, external power supply, and jumper wires.

Nice I have all that stuff, well an 8266, but I have it blinking an LED in response to a UDP packet and now I'm down a C typing rabbithole on how to have it actually parse the packets because I haven't written any substantial code in a few years.

Zero VGS
Aug 16, 2002
ASK ME ABOUT HOW HUMAN LIVES THAT MADE VIDEO GAME CONTROLLERS ARE WORTH MORE
Lipstick Apathy
Couldn't figure this out in the GPU thread but maybe someone here would know.

A fin on my GPU fan broke so I got some replacements, except the new fans use a big white JST plug and the GPU's original fans use a smaller black solderless connector:



Does anyone know if those smaller plugs have a name, and if perhaps someone sellers an adapter to reduce the size down, or something? Only other thing I can think to do is cut the black wires, strip them, tin them with solder then just stick them straight into the white JST receptacles.

shovelbum
Oct 21, 2010

Fun Shoe

Zero VGS posted:

Couldn't figure this out in the GPU thread but maybe someone here would know.

A fin on my GPU fan broke so I got some replacements, except the new fans use a big white JST plug and the GPU's original fans use a smaller black solderless connector:



Does anyone know if those smaller plugs have a name, and if perhaps someone sellers an adapter to reduce the size down, or something? Only other thing I can think to do is cut the black wires, strip them, tin them with solder then just stick them straight into the white JST receptacles.

I would just cut off the black connector, cut off the JST connector, and splice wires to wires with solder, then heat shrink over em and reuse the existing black connector.

csammis
Aug 26, 2003

Mental Institution
Just to throw another perspective into the Arduino ring: I learned embedded development on an MSP430 back in the day, my day job is embedded development on CortexM cores, and when I want to play with something at home I can’t give a blue gently caress about toolchains and clock gating and poo poo. Jam an Arduino on a breadboard, blast FastLED onto it, and I have my Stargate lighting up. Done and done, no fuss no muss.

If as an engineer you want more people to be into engineering then you should get people going on fun projects. Assume they have a limited amount of time, budget, energy, and motivation for learning minutiae instead of bikeshedding and gatekeeping their choice of microcontroller :shrug:

Dominoes
Sep 20, 2007

What are the usual toolchain hangups? I gather there's typically some tight IDE integration with flashing and debugging. I'll dive into C++ embedded on the STM tmw to get a feel for it. Currently, my setup is a template with:

- an openocd.gdb config file that specifies the connection port, and details for how to output prints and panics
- a shell script that executes a rather long command to start the ocd,
- a compiler config file that has a few lines of boilerplate.

To run, execute the ocd script in a separate terminal. Make sure the the thumbv7em-none-eabihf target is set instead of a normal Windows/Linux one, and compile/run as normal while connected to the board via usb.

Dominoes fucked around with this message at 05:47 on May 18, 2020

Sagebrush
Feb 26, 2012

Dominoes posted:

- an openocd.gdb config file that specifies the connection port, and details for how to output prints and panics
- a shell script that executes a rather long command to start the ocd,
- a compiler config file that has a few lines of boilerplate.

To run, execute the ocd script in a separate terminal. Make sure the the thumbv7em-none-eabihf target is set instead of a normal Windows/Linux one, and compile/run as normal while connected to the board via usb.

And again, this is totally fine for your experience level, but a newbie is going to become immediately confused by "what is a gdb file" before you even get into your shell script or what a terminal is or how to write a config file or how to execute a command in the command line.

The Arduino process, starting at the same point your description begins (i.e toolchain and drivers installed, everything in the right place, board connected), is

- click the upload button.

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius
Don't even bother with arduinos or 74xx chips. Just get an FPGA and go nuts making your own logic.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

do all of those things

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
gently caress printed circuit boards, you can do it all in silicon

shovelbum
Oct 21, 2010

Fun Shoe
jesus loving christ, i just spent 4 hours trying to get some dumb basic arduino style bullshit working before realizing the OLED I was using was actually defective, and so was the other one in the packet with it. But the ones from the other packet worked just fine. I thought I was doing something wrong because they responded to I2C but the OLED part didn't work!

edit: one of the bad ones displays part of 1 line of pixels, the other did nothing until i hit it with a reflow gun until it basically melted, then it displayed 1 pixel

shovelbum fucked around with this message at 07:27 on May 18, 2020

Splode
Jun 18, 2013

put some clothes on you little freak

csammis posted:

If as an engineer you want more people to be into engineering then you should get people going on fun projects. Assume they have a limited amount of time, budget, energy, and motivation for learning minutiae instead of bikeshedding and gatekeeping their choice of microcontroller :shrug:

Don't go into engineering it just lowers the salaries for us all. It's hard and scary, stay away ;) My main issue is people coming into threads like this one, wildly overconfident because they got some LEDs to blink via Arduino, and now they're ready for a 5000 Watt lighting array. You try and help them and it becomes clear they've got no idea what they're doing at any level, and no interest in learning. It's the reason I checked out of the Arduino thread. Hiding the engineering realities from beginners doesn't make those realities go away.

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS

Splode posted:

Don't go into engineering it just lowers the salaries for us all. It's hard and scary, stay away ;) My main issue is people coming into threads like this one, wildly overconfident because they got some LEDs to blink via Arduino, and now they're ready for a 5000 Watt lighting array. You try and help them and it becomes clear they've got no idea what they're doing at any level, and no interest in learning. It's the reason I checked out of the Arduino thread. Hiding the engineering realities from beginners doesn't make those realities go away.

That guy was really funny. He just didn't understand why we didn't think he could do it in a week and a half.

I think those kinds of people are the vast minority of beginners, though. Most do a more reasonable ramp up of complexity.

shovelbum
Oct 21, 2010

Fun Shoe
Oh man I just stayed up until 5am copypasting lovely arduino code together, it's been years

Splode
Jun 18, 2013

put some clothes on you little freak

ante posted:

That guy was really funny. He just didn't understand why we didn't think he could do it in a week and a half.

I think those kinds of people are the vast minority of beginners, though. Most do a more reasonable ramp up of complexity.

There are a lot of beginners who seem to think "how hard could electrical engineering be anyway?" like that guy who insisted on putting HDMI on his very first PCB a few weeks ago.
Buddy, they won't even let me gently caress the HDMI.

longview
Dec 25, 2006

heh.
I will say that the STM32 Cube stuff is probably the most convenient MCU environment I've used other than Arduino stuff.

You have to know what you're doing to get advanced stuff working but I think it would be very suitable for an engineering-student with some assistance/a good user guide.
The cube stuff has almost all the functionality of the chip exposed and provides a fairly decent (if slightly slow) HAL.
It's also extremely useful for working out the optimal pinout for the chip.

Reading the data sheet and configuring everything by hand was kind of tedious but not awful on 8 bit AVRs, but I quickly decided the HAL is a good thing when I started looking at all the registers you need to configure to do anything at all on an ARM chip.
Still useful to read the data sheet/reference manual for the chip while configuring stuff, since there are pitfalls, and there are some features that aren't exposed.
For example, the HAL doesn't support the UART Idle interrupt, that is very useful when DMAing UART RX data.
It also doesn't expose every single weird little option bit, for example some of the F1 timers can use more than just the Clock in pin as a clock but only if you configure a specific bit that isn't supported by the HAL. This saved me a lot of hassle with modding my circuit board once.

My latest hobby project uses a STM32F303, and I configured all the peripherals using the Cube IDE. It was very easy to get operational with SPI read/write, ADC2 running a continuous DMA with interrupts for high speed data, ADC1 running in scan mode to convert all the general purpose channels, and I2C read/write to flash memory.
I decided I wanted one of the LED outputs to be PWM instead of GPIO, so I just looked at that pin in the pinout planner and saw it could be configured as an output from a timer I wasn't using, and I had 12-bit PWM output working as intended in something like 10 minutes.

Forseti
May 26, 2001
To the lovenasium!
I'm not saying feel bad about using an easy tool, my argument is just that I don't think Arduino is inherently the easiest tool at this point.

For example, on the front page of the docs for NodeMCU it shows how to blink an LED:

code:
-- manipulate hardware like with Arduino
pin = 1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
print(gpio.read(pin))
A Hello World webserver is

code:
-- a simple HTTP server
srv = net.createServer(net.TCP)
srv:listen(80, function(conn)
    conn:on("receive", function(sck, payload)
        print(payload)
        sck:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1> Hello, NodeMCU.</h1>")
    end)
    conn:on("sent", function(sck) sck:close() end)
end)
Since it's Lua you don't even need the compiler for this, you can test it by plugging the device into your USB port and connecting to it with a serial terminal and typing in the commands.

Arduino does have a big advantage of having lots of libraries for hardware already out there but that's just momentum. So I try to get people interested in tools that I think are easier and cleaner :)

Dominoes
Sep 20, 2007

Sagebrush posted:

And again, this is totally fine for your experience level, but a newbie is going to become immediately confused by "what is a gdb file" before you even get into your shell script or what a terminal is or how to write a config file or how to execute a command in the command line.

The Arduino process, starting at the same point your description begins (i.e toolchain and drivers installed, everything in the right place, board connected), is

- click the upload button.
I think I get it now, after diving into the C side. This is straight from the STM32Cube getting started guide:

quote:

This section explains how to run a first example within STM32CubeF3, using as illustration
the generation of a simple LED toggle running on STM32F302R8 Nucleo board:
1. Download the STM32CubeF3 firmware package. Unzip it into a directory of your
choice. Make sure not to modify the package structure shown in Figure 4. Note that it is
also recommended to copy the package at a location close to your root volume (for
example C:\Eval or G:\Tests) because some IDEs encounter problems when the
path length is too long.
2. Browse to \Projects\STM32F302R8-Nucleo\Examples
3. Open \GPIO, then \GPIO_EXTI folder
4. Open the project with your preferred toolchain (*)
5. Rebuild all files and load your image into target memory

Starting at step 4: Draw the rest of the loving owl. This step would be Cargo run in Rust. The guide implies you need software such as EWARM, MDK-ARMM™, or TrueStudio®.

Dominoes fucked around with this message at 14:40 on May 18, 2020

That Works
Jul 22, 2006

Every revolution evaporates and leaves behind only the slime of a new bureaucracy


What's a toolchain?

Not joking

Stack Machine
Mar 6, 2016

I can see through time!
Fun Shoe

taqueso posted:

do all of those things

Looking at the trajectory of my own recent hobby projects, I went from using shift registers on the PC parallel port to programming PIC16s with the same to using Lattice ICEstick FPGA boards with the ICEStorm toolchain, and it's not like each replaced the others. This is a palette of techniques to draw from where each is appropriate for a different set of requirements. Depending on what your first project is, any or none of these may be appropriate. I've only ever used arduinos for work as kind of a cheap universal adapter/interface cable but they have a really quick learning curve if you're comfortable in C. The PIC16 I mentioned is super cheap and sips power at 32kHz but its instruction set is so limited that it's not really practical to program with anything but an assembler. FPGAs are also better at precise timing if you're generating a video signal, RF, or some other timing critical data. Something like the MCP4221 is great if you just want to toggle relays and read slowly changing data from a USB port. Also don't forget that the Raspberry Pi has programmable GPIO pins if you want your very own Intranet-of-Trash.

The Arduino is a great place to start for baby's first flashing LED, but there's a whole world out there of interesting bridges between code-land and wire-land that are very cheap and won't take up much space in your lab. Start a few projects and play with a few options.

Dominoes
Sep 20, 2007

That Works posted:

What's a toolchain?

Not joking
My guess is a C++ compiler configured for an ARM target.

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

That Works posted:

What's a toolchain?

Not joking

The set of tools used to build (and maybe deploy) something: compiler, linker, loader, sometimes people include their editor and debugger. All the stuff to go from “file with source code” to “lights blink”, roughly.

Dominoes
Sep 20, 2007

Is MDK where it's at?

Forseti
May 26, 2001
To the lovenasium!
My very first microcontroller projects were in PicBasic Pro in firefighting robot club in high school. If it didn't cost money, pic basic would still be great for beginners IMO.

longview
Dec 25, 2006

heh.

Dominoes posted:

Is MDK where it's at?

MDK works and has decent debugging but the editor is terrible, I used it before moving to TrueStudio.

ST bought TrueStudio and provides it as STM32CubeIde.
As far as I know this means the old STM32CubeMX software is obsolete, all the functionality is now integrated as a separate view and project type in the Eclipse based IDE.

Dominoes
Sep 20, 2007

That sounds perfect, given it's officially supported. It's what I thought I was getting when I downloaded what turned out to be the examples/drivers package, also labeled STM32Cube. MDK feels clunky and I'm hitting obstancles. I was just attempting to install cubeMX, and it wanted me to install Java.

Dominoes fucked around with this message at 15:16 on May 18, 2020

longview
Dec 25, 2006

heh.

Dominoes posted:

That sounds perfect, given it's officially supported. MDK feels v clunky and I'm hitting obstancles. I was just attempting to install cubeMX, and it wanted me to install Java.

Eclipse is also Java based AFAIK, so you might just have to deal with that (It's not a problem IMO, but the java updates are annoying).

The IDE integration is fairly decent over all, the old MX based code generation often locked up for me, it seems to be much more reliable in the IDE.

On the larger MCUs I also often used the FreeRTOS integration they provide, it's fairly simple to set up and very convenient when the MCU has to do a lot of largely unrelated functions that aren't super time critical.
Only annoyance I have is that malloc() doesn't use the OS malloc but rather whatever the C library comes with, not sure if they fixed that in the later versions.

Shame Boy
Mar 2, 2010

I'm designing a thing that uses a thermocouple for the first time. How do you connect it to the circuit board? I got one of the special sockets with the right metals, but that's panel-mount so I still need to wire it to the board somehow, and I presume soldering the wire down (and the solder connections connecting the copper traces to the chip) all become little thermocouples and mess things up. I mean it only needs to be accurate to within a few degrees C, but I'd prefer if that accuracy was as linear as possible so I'm not deceptively close at low temp and wildly off at high temp.

Dominoes
Sep 20, 2007


Sweet. STM32Cube seems straightfwd to use and get a Hello World up. The graphical view of the pins and what they're tied to on the dev board is super useful. It seems like its approach is to generate explicit code for many config vars, and allocate comment-demarked blocks of code within the same file for you to write in. Code outside the block can be re-generated from things set in the UI. It's an interesting mix of program logic and config. Diff from the paradigm I'm used to, where you load peripherals (etc) structs from a HAL, they come with defaults set, and you can modify the defaults as required.

Dominoes fucked around with this message at 16:20 on May 18, 2020

sharkytm
Oct 9, 2003

Ba

By

Sharkytm doot doo do doot do doo


Fallen Rib

Shame Boy posted:

I'm designing a thing that uses a thermocouple for the first time. How do you connect it to the circuit board? I got one of the special sockets with the right metals, but that's panel-mount so I still need to wire it to the board somehow, and I presume soldering the wire down (and the solder connections connecting the copper traces to the chip) all become little thermocouples and mess things up. I mean it only needs to be accurate to within a few degrees C, but I'd prefer if that accuracy was as linear as possible so I'm not deceptively close at low temp and wildly off at high temp.

So long as you can guarantee that the cold junction measurement point on the board and the panel are the same temperature, you can use regular wire. This is not recommended.

How does your panel jack terminate on the inside? If it's another pair of TC-style connections, you can use Thermocouple Extension wire of the same type as your TC (K wire for a K TC, etc) to run from the panel to your PCB. That's the whole point of Extension wire.

You also need to keep loop distance as short as possible, and avoid any EMI if possible. If you're not looking for crazy accuracy, then extension wire is probably your best bet. Just match the colors and remember that red=negative in the Themocouple world.

Shame Boy
Mar 2, 2010

sharkytm posted:

So long as you can guarantee that the cold junction measurement point on the board and the panel are the same temperature, you can use regular wire. This is not recommended.

How does your panel jack terminate on the inside? If it's another pair of TC-style connections, you can use Thermocouple Extension wire of the same type as your TC (K wire for a K TC, etc) to run from the panel to your PCB. That's the whole point of Extension wire.

It's this thing:
https://www.newark.com/omega/rsj-k-r/thermocouple-connector-k-type/dp/31AC5660

It uses screw terminals that I think are made out of the proper metals themselves. And yeah I planned on running thermocouple extension wire from that to the board, but I'd still have to connect it to the copper and lead and tin and etc. of the board somehow though which seems like it's just moving the problem down the line a bit, unless the goal isn't "zero different metals touching" but "as few as physically possible"?

sharkytm posted:

You also need to keep loop distance as short as possible, and avoid any EMI if possible. If you're not looking for crazy accuracy, then extension wire is probably your best bet. Just match the colors and remember that red=negative in the Themocouple world.

Thanks, I'll keep all that in mind.

sharkytm
Oct 9, 2003

Ba

By

Sharkytm doot doo do doot do doo


Fallen Rib

Shame Boy posted:

It's this thing:
https://www.newark.com/omega/rsj-k-r/thermocouple-connector-k-type/dp/31AC5660

It uses screw terminals that I think are made out of the proper metals themselves. And yeah I planned on running thermocouple extension wire from that to the board, but I'd still have to connect it to the copper and lead and tin and etc. of the board somehow though which seems like it's just moving the problem down the line a bit, unless the goal isn't "zero different metals touching" but "as few as physically possible"?


Thanks, I'll keep all that in mind.

That's a good-quality panel passthrough. Use Extension Grade wire and run that to the PCB. Once it's there, you'll need to solder it to the board's PTH, or have a board-mount TC junction block. Some of the TC wires have a coating that's really tough to solder, just FYI. The copper and lead and tin connection has to happen somewhere, but the goal is to put it as close (thermally) to the cold-junction sensor as possible. You'll often see the PTC temp sensor (on commercial boards anyhow) soldered immediately between the vias that lead to the TC connector. That's the goal, everything is a compromise.

Adbot
ADBOT LOVES YOU

Cojawfee
May 31, 2006
I think the US is dumb for not using Celsius

Stack Machine posted:

Looking at the trajectory of my own recent hobby projects, I went from using shift registers on the PC parallel port to programming PIC16s with the same to using Lattice ICEstick FPGA boards with the ICEStorm toolchain, and it's not like each replaced the others. This is a palette of techniques to draw from where each is appropriate for a different set of requirements. Depending on what your first project is, any or none of these may be appropriate. I've only ever used arduinos for work as kind of a cheap universal adapter/interface cable but they have a really quick learning curve if you're comfortable in C. The PIC16 I mentioned is super cheap and sips power at 32kHz but its instruction set is so limited that it's not really practical to program with anything but an assembler. FPGAs are also better at precise timing if you're generating a video signal, RF, or some other timing critical data. Something like the MCP4221 is great if you just want to toggle relays and read slowly changing data from a USB port. Also don't forget that the Raspberry Pi has programmable GPIO pins if you want your very own Intranet-of-Trash.

The Arduino is a great place to start for baby's first flashing LED, but there's a whole world out there of interesting bridges between code-land and wire-land that are very cheap and won't take up much space in your lab. Start a few projects and play with a few options.

I tried to use an icestick but they require you to get a license file for their free software. No amount of trying could make their website send me a license file. I returned the icestick and bought a numato Mimas v2 and haven't looked back. Having to run the software in a VM kind of sucks, but it's whatever.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply