USB on a breadboard?

Hello all, I'm at instructor at a large US school who has slowly been moving into teaching embedded systems. I know very little about embedded systems in the real world (I'm more of an architect), but I've learned a lot by teaching and working with students on embedded projects.

We currently have a class that uses a combination of an MPC823 and an FPGA to do software/hardware design. It is mostly in assembly (a bit of C) and covers the details of doing memory-mapped I/O, designing the hardware devices, interrupts (in gory detail), timers and A/D stuff.

I've been trying to upgrade our embedded systems offerings and so I am offering a class next semester that is a follow-on to the current one. I've have chosen to go with two different platforms, an ARM based system from Intel (sitsang) with an OS, color touch LCD, and crazy amounts of I/O as well as an Atmel based portion (ATmega8) where the students will design (and get built) a board.

So now the questions: #1 Is there a USB chip that I could possibly talk to with the ATmega8? I'd love something I can put on a breadboard without having to solder very small wires. Looking at the student projects I'm expecting, USB may be a pretty common desire. The sitsang board does USB in its sleep, but I'd like them designing their own hardware where possible.

#2 Same as #1 but for ethernet.

#3 What do _you_ all think is important for them to know? If you were to hire one of our graduates, what specific skills would you be looking for? Are skills like being good with solder important to any/many of you? Just software?

#4 What am I missing?

More background: I'm going to teach a fair bit about how to interface with an OS (for the sitsang) and the basics of Linux drivers. I'm also going to spend a short time on the AVR architecture and interupts (which I'm still learning) as well as a bit on the basics of board design. I'm planning on having a few guest speakers come in and talk about what they do (one a WIMS person, one works for Rabbit, and maybe a Lockheed-Martin embedded person).

The major goal of the class is to give them the oppertunity to design a system (probably involving board design) of their choosing. We have a reasonable budget (thanks Lockheed-Martin!) of around $800 per group of

4 students. So we should be able to build some cool things!

Answers to the above or random thoughts greatfully accepted!

Reply to
brehob
Loading thread data ...

Check out the micro USB from Dontronics.

Don (No relation)

Reply to
Donald Harris

These are very useful. They just connect to a serial port on your embedded system and provide a USB gateway. Obviously, you will need a driver on the computer that is used to connect to the equipment. Windows & Linux drivers are available.

formatting link

Here's the US sales stuff.

formatting link

Reply to
Rob Horton

The first thing that I would like to say is that I am pleased to see that these types of classes are being offered and I am impressed at your initiative.

In response to your questions, hardware development with USB and Ethernet may be a little bit tricky, from the breadboard perspective. The reason being is that both technologies utilize differential signaling on lines with controlled impedances which would be difficult to achieve with a breadboard. I think the suggestions you received recommending a development kit or adapter are probably the way to go. This way you could at least focus on the concepts of the protocols and possibly hook up a scope or something to look at the electrical signals.

Second, I think that your focus on interrupt handling and uP interfacing is very good. As an EE who was worked with embedded systems for the 10+ years since graduation, I find that these skills have come in handy on just about every project. Based on my experience with a computer science person who reports to me, I think these skills could have used some more attention in his education as they made his eyes glaze over when he had to deal with low level issues that would normally be handled for you by an OS. Generally speaking, his ability to program software was excellent, but he would become befuddled when faced with hardware interfacing. Granted, he is a CS major, but not everybody who graduates for the program will go work for Microsoft.

Third, your work to interface with Linux is an excellent idea, for two reasons. First, there is the aspect of embedded systems that focuses on using single board computers (PCs) with a scaled down operating system, such as micro-Linux. Second, it is sometimes possible to obtain a development card that interfaces to a PC to do some early work prior to the creation of the target application. As Linux allows a user to modify the kernel, and place handlers and other types of code in the system it makes an excellent platform for this type of development. Windoze (spelling deliberate) isn't nearly as flexible as with it, you are the tail and the OS is the dog.

I also think that your idea about some soldering experience has merit. I believe that being able to perform some basic board rework is a valuable skill for both engineers and technicians. A course that provides IPC certification takes about two days so it should be possible to cover a fair amount of technique in a few class or lab sessions. I personally, populate all my new designs on the first prototpe. This allows me to populate sections like the power supply and reset circuit to verify it before populating the rest of the board. While it may be an unconventional approach, it certainly makes me more comfortable than the idea of throwing the switch and hoping that my last four months of effort doesn't go up in smoke.

I think that introducing FPGA design is an excellent idea too. Not only are FPGAs becoming increasing common in many designs, I believe that being able to work with them has helped my career based on employer comments in annual reviews.

You may want to consider introducing some of the aspects of real time design and programming. Real time issues are inherent to some degree in just about every embedded system. In contrast, though, in most PC based applications, the user has little control over the timing. I think uCOS-II might be an excellent avenue to pursue this.

Other areas to consider discussing would be the importance of system reliability and how this is achieved through the use of watchdog circuits and proper coding practices. Also you may want to discuss the importance of good user interface design and how often times the designers think very differently from those who use the systems.

The only other thing I can think of that would be helpfull, that you didn't explicitly mention is some experience with development tools like how to properly use oscilloscopes and logic analyzers and most importantly, understanding their limitiations.

Reply to
Noway2

You can try the AT90USB128 AVR, it has OTG USB (host and device w/ 128K flash). Yes, it comes in 0.5mm MLF, but you can pre-mount them in adapters. In fact, we made adapters with 8 rows of 0.1" terminals, it will fit in a standard 0.1" breadboards, for example:

oooooooo oooooooo oo oo oo oo ... MLF 64 oo oo oooooooo oooooooo

We use them for prototyping.

Not yet with AVR.

I would want them to be able to solder MLF and BGA, not that I want them to do so regularly. I want them to design with mounting them in mind, not just relying on some green magic (outsourcing prototypes).

Reply to
linnix

Thanks to you and everyone else for the help. I'm pretty sure the first time I do this, I'm going to be doing a moderate job. But I've got (really) good students, so I figure once they get to the class project they will do wonderful things no matter how well I do.

Some more stuff below.

Thanks! I should have been on this a few months ago, so initiative might not be the right word. Desperation perhaps (not really, the lab side is actually in pretty good shape).

Yep, I'm aware of the signalling issues with USB (didn't know ethernet was the same way). I was hoping that some DIP package might exist that we could use at slow speed. But a kit will be good enough for those that need USB/ethernet.

The class that comes before this does a great job with most of this (on a MPC823). I want to hit it again just to show them a different scheme. (We probably spend a total of 30 hours of their time on interrupts between lecture and lab, maybe more once you count in timers and the A/D converter (both of which use interrupts).

Yeah, still not sure exactly what the lecture side will look like. Thankfully I have a student who will be the lab instructor who has some good ideas...

IPC?

Yeah, our students, like most new college grads (in EE/CE) know a lot about FPGAs. Or at least how to use them...

Agreed. Not sure I'll get to something this semester, but...

Using is easy. Understanding what they are seeing (ie the limitations) is more difficult.

Great! Thanks for the thoughts. I'm certain only a bit of this will make it into the class, but maybe more next time...

Mark

Reply to
brehob

I heartily second the comments about getting down to the bare metal at the register level. I too have some excellent software types around, but they don't seem to understand the datasheets. Numerous times I have had to explain fairly simple concepts (fully outlined in the datasheet) to fix fairly simple [but crash generating] problems.

One example is with a pipelined processor [ST10F269 in this case]. If you write to an IO port, that write won't show up in the external physical world (including a readback of the port) for 4 clock cycles. Things like this are part and parcel of low level programming.

I also like the idea of getting them to solder a few things down - it's a skill that is all too often ignored.

On layout issues, for USB, if you look closely at the spec, you can export yourself as low speed, full speed or high speed by the simple artifice of pullup / pulldown resistors. Breadboard *should* allow you to run at 12Mbit/second (USB 1.1 rate). Be sure to follow the datasheet instructions.

For ethernet, if you are doing a point to point application, you can dispense with the transformer and use a capacitively coupled technique for simplicity. I've made this run at 100Mb/s in a commercial product for limited physical distances. (It was a backplane application).

Cheers

PeteS

Reply to
PeteS

I have used a HC08 JB8 on a breadboard before, which appeared to work ok, at least with a UHCI controller.

Be aware that this is a low speed device (1.5Mbits/second) limited to 2 endpoints, each endpoint with a 8 byte maximum buffer.

Simon.

--
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
If Google's motto is "don't be evil", then how did we get Google Groups 2 ?
Reply to
Simon Clubley

snipped-for-privacy@gmail.com wrote: < big snip>

< big snip >

Here is a link to the web page for the small company that I received my SMT training from:

formatting link
Their web page has a link to soldering training which should give you an idea of how they organize their classes and what they cover. At the very least, it may give you an idea or two. One idea that comes to mind is that perhaps you could get certified as a trainer, which costs more money, and then your students could become certified as part of the course. I really don't know how important the certification is to many companies. Where I work, the best thing that it did for me is give me justifiable grounds (as in yes, I know what I am talking about) when I declared that some work from an intercompany vendor was unacceptible.

I am not certain what IPC stands for, but I believe that they are the organization that sets the standards for many aspects of the assembly process.

Reply to
Noway2

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.