Fantastic course! I'm just getting caught up now, thanks for the archive as I just did not have time to participate in the first part of the year. Outstanding pick for the instructors for this series. John's expertise in this area is indisputable. Having listened to two of his lectures I can state that he is an excellent teacher and I appreciate his effort to go back and answer questions and attention to detail in his postings. Thanks, John! Your reputation is well deserved.
Are there any resources that discuss the ease/difficulty of migrating between different MCU families or manufacturers (i.e. - learning curve)? My company currently uses a single manufacturer for all of our products, but it doesn't seem that anyone really knows why that particular one was chosen. If I want to consider using a different device manufacturer for a new product, it would be helpful to be able to have a good argument for the other engineerings being able to work on it if needed.
When choosing an MCU, there are so many varieties of MCUs that sport similar capabilities. Is cost a predominant fact or should greater emphasis be placed on choosing an MCU with a large support community?
Q: what is the real difference between zigbee and Wifi [WiFi]?
A: Use ZigBee for a small network of devices when you require compatibility with other commercial products. You'll find ZigBee used in home automation equipment, security systems, vehicle tracking in parking areas. It's a short-range network. Use WiFi is you need connectivity to the Internet.
ZigBee uses IEEE 802.15.4-compliant radios, while WiFi complies with the 802.11 standard.
Q: What sort of features are typically offered with not-free packages (like IAR) that are not typically available from chip mfr freebies, like what's offered by Atmel? Or is it a situation where they all pretty much do the same thing, but more or less user-friendly?
A: The commercial (paid for) software tools will include support, updates, optimization of code, compliance with MISRA C, advanced debug and profiling operations. They are a complete development, debugging, and testing package as opposed to a nice IDE and C compiler. You also get runtime libraries, source code of some libraries, debugging hardware, and support for a wide variety of target MCUs.
Q: With the differnet wireless protocols that use the same frequency (ZigBee, Fi, Bluetooth) at 2.4 GHz, do they all use the same antenna types, or are there differences from the different protocols?
A: The frequency rather than the protocol, defines the antenna needed. So, any radio that operates at 2.4 GHz uses an antenna with the same characteristics as any other radio at 2.4 GHz. There are different radio-antenna configurations, such as chip antennas, short-wire antennas, Yagi antennas, and so on. The type of antenna depends on your application and whether you want directional or unidirectional performance, gain, etc.
Q: Standard C doesn't do fixed point math, per se... what do I need to look for in the compiler software to be able to use fixed point math?
Q: Who has a good math library with trig functions?
A: ARM. The ARM assembler includes floating point and trig functions. See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0041c/DUI0041C.pdf.\ and see: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0041c/ch11s03s07.html.
For fixed-point math on an ARM, visit: http://infocenter.arm.com/help/topic/com.arm.doc.dai0033a/DAI0033A_fixedpoint_appsnote.pdf.
Q: @jon: batteries as power supplies: When would you choose button cells, when "normal" battries? Besides the obvious "size" argument, I mean...
A: It all depends on how much power you need and how often you can afford to change the battery. Don't simply integrate current over time, though. Some apps need a burst of power for something like a wireless connection.
Q: The secured chips usually just deny access by blowing a fuse on programming. Sometimes they do something smarter, like just denying all reads but allowing writes. In some cases, though, it will just store a key and response, and only allow access if the correct response is provided for the given key.
A: They can do much more than that to obsure code on a chip, resist differential power analysis, scramble data, etc. If you blow a programming fuse, someone can unencapsulate an MCU and probe the memory. You want more than a blown fuse link in MCUs used in casino chips, or bank smart cards,for example
The secured chips usually just deny access by blowing a fuse on programming. Sometimes they do something smarter, like just denying all reads but allowing writes. In some cases, though, it will just store a key and response, and only allow access if the correct response is provided for the given key.
Q: How much overhead do the secured chips add? Is there a noticable effect or minimal?
A: I have not used them, so I can't offer information from experience. I doubt the overhead consumes much power or chip resources because if it did, people would not use these chips. Check with Atmel and STMicroelectronics.
Another option is to connect multiple input pins to a continuously polling Analog input where each sensor provides a different voltage. Then the voltage level input would tell which sensor interrupt is triggering. If the sensor wires are long though it might be hard to get accurate voltages.
Q: I almost think it would be good for microcontrollers to have a small FPGA region peripheral, so you could implement your own communications protocol, or even a co-processor.
A: Check out the PSoC family from Cypress Semiconductor. They have what you want with an 8051 or or an ARM Cortex-M# processor on chip. Nice way to design everything on one chip with a lot of flexibility.
Well you can always just use a soft processor in a small FPGA to do the same thing... Or look at Cypress SoC chips with built in FPGA and programmable analog. Or Actel SmartFusion with an arm processor, FPGA and analog fabric..
Q: @jruddy34 should we contact the zegbee alliance even for the non commecial use?
A: You could ask them. I think you need to license ZigBee only if you create a product, whatever the use. If you want to set up a network of sensors for academic research and buy off-the-shelf ZigBee modules to drop onto your own boards, I doubt you need to contact the ZigBee Alliance. The Alliance just wants to ensure reliability and compatibility for commercial products.
Q: You'd mentioned in the previous session that you'd go over some MCU training kits for those of us who are unfamiliar with C programming. Could you elaborate on this?
A: Sure. Most of the MCU program development uses C, so you can start with C or get your feet wet with another language such as BASIC. Look at the BASIC Stamp from Parallax. The company has many good training/teaching materials and kits. The Arduino Uno, Digilent chipKIT Uno32, and ARM mbed let you program with free development tools that are easy to use. I like them all. Most of the C-language books teach programming for PC-type applications. Look at "Practical C Programming," by Steve Oualline, from O'Reilly Media. ISBN: 978-1-56592-306-5. I use that book as a handy reference for C.
DavidG_or, that's good if your sensors are co-located with your board, but I was thinking more of an application where the sensors were more widely deployed. As things stand, to get what I really want, I'd probably either need to bit-bang a unique protocol (which may be lousy for determinism and performance), or scatter lots of tiny FPGAs or CPLDs to implement it in deterministic hardware, just to get reasonable performance with the latency priorities I'm interested in.
Question: Do you mean that I will need a RTOS for USB application with the MCU?
A: No. You might need an RTOS if you have so many tasks that they slow down the MCU. You also might need a faster MCU with more memory. Most of the embedded systems that need an RTOS use a general-purpose microprocessor, such as an X86. Not much to worry about in MCU space, although you can find some small-size OS kernels.
Tenacioius Techhunter: For the time sensitive sensor polling, I think looking at a CPLD might be appropriate. For larger number of sensors an FPGA would be able to handle the sensors, with as many ports built as you need, then use internal fpga logic to create an interrupt signal that tells which sensor.
Q: Can there be problems with patent infringement? If so, are there internet URL's that one can search? Also, if you develop a product application for a 3rd party, how is the intellectual property issue handled?
A: You can search patents at the U.S. Patent and Trademark Office via its Web site: www.uspto.gov. To protect intellectual property I always recommend people find a patent attorney familiar with their technical area and talk with him or her. Yes, it costs some money, but how much value do you attach to your IP?
Q: I am looking to monitor the D-channel of a PRI (T1/E1). This has 64kb/sec ASCII data. I am not concerned about the voice traffic on the other channels. Is there an easier way than using a T1 framer chip set, since I don't need all that functionality?
Jon, if I recall, 1-wire seemed to have poorer performance. What I'd really like to see is a low-latency high performance bus for sensors and actuators; if it could be plug & play like USB, even better.
Q: @Jon, But john in the applications where we do not need all 7 layers, only upto the network layer suffice to have a data transfer kind of interface over Ethernet?
A: You don't have to use the whole stack. Something like the User Datagram Protocol (UDP) might suffice. Take a look at: http://en.wikipedia.org/wiki/User_Datagram_Protocol. You can access it at the Transport layer. Also, see: http://cache.freescale.com/files/microcontrollers/doc/app_note/AN2304.pdf.
Q: Jon, are there any good competitors to I2C and SPI coming down the pike? In particular, I find that, if I want many sensors capable of actively interrupting a processor in a deterministic fashion, SPI is too few, regular I2C is passive slave only, and Multi-Master I2C makes me swim through a river of documents, only to not be sure I've found a valid solution. Is there anything new coming along that will eliminate this problem for me?
A: I'm not aware of any. Could you use one MCU as a "concentrator" that connects to x sensors and then sends a burst of data to another MCU via serial comms? You could have several MCU concentrators. I guess much depends on how many sensors you have and what type of sensors. Have you looked at the 1-wire protocol from Maxim Integrated Products?
Q: How about you suggest 4 or 5 simple microcontroller projects for new comers to do. The projects can make use of most of the features on the mcu like opamps, comparators, adc, interrups, timers,..etc
A: 1. Flash patterns on 8 LEDS. 2. use a UART to send data to a terminal (Hyperterminal on a Windows PC, for example). Use UART to receive information from terminal keyboard and echo it back to terminal display. 3. Use ADC to measure the voltage from a potentiometer or a cadmium-sulfide photocell. 4. Use a PWN output to ramp up and then down the brightness of an LED. 5. Connect a temperature sensor to an MCU via an I2C bus and display temp in degrees F and degrees C on terminal. (Many I2C temp sensors are available only in SMT packages. See SchmartBoard for adapters.)
Jon, are there any good competitors to I2C and SPI coming down the pike? In particular, I find that, if I want many sensors capable of actively interrupting a processor in a deterministic fashion, SPI is too few, regular I2C is passive slave only, and Multi-Master I2C makes me swim through a river of documents, only to not be sure I've found a valid solution. Is there anything new coming along that will eliminate this problem for me?
Q: Will what exactly Ethernet and USB "stacks" are, be covered in a later session?
A: No, but I'll give you a short answer. To run Ethernet or USB the MCU requires software that takes information from your application and presents it to the Ethernet or USB hardware in a format it can transmit. The software in a "stack" handles these operations. The word "stack" comes from the Open Systems Interconnection (OSI) model that comprises 7 "layers." Each layer provides specific types of functions. For more info, visit: http://en.wikipedia.org/wiki/OSI_model.
Jon, are there any good competitors to I2C coming down the pike? In particular, I find that, if I want many sensors capable of actively interrupting a processor in a deterministic fashion, SPI is too few, regular I2C is passive slave only, and Multi-Master I2C makes me swim through a river of documents, only to not be sure I've found a valid solution. Is there anything new coming along that will eliminate this problem for me?
Q: Jon, will you cover any new developments in software for MPU's like .Net Microframework (from MSFT but now open source) in tomorrow's session? Or do you have any personal experience yet in some of these trend areas?
A: Sorry, but I don't have experience with this type of software.
Q: Jon, do you recommend anything for working with Binary Coded Decimal?
A: You can use BCD, but BCD math can get tricky. Some of the early MCUs had a decimal-adjust op code for these types of operations, but I don't know if any recent devices do. I have never had to use BCD operations except to convert to and from BCD. Maybe a few MCU vendors have a BCD library?
Jon, my question was asked because there may be a mathematical way of proving that there may be an upper bound beyond which, there is a balance of efficiency to hando information with stored with too many bits", sort of the Shannon principle of digital communication. Does it make sense? I remember a Steven Hawkings speech in Texas in 2008 when he predicted the "end of physiscs."
Q: program memory- how do we increase it? move to another chip or add memory bank to the existing chip?
A: Using off-chip memory for programs can chew up machine cycles, use power, and require extra chips. Some MCUs might accommodate extra program memory, which uses I/O lines for control. I'd rather move up the "family tree" to a chip with more memory. Plus, it's one more chip and set of connections to debug.
64 bits is more about more addressable memory than more instructions or larger data values. When we need more memory than 64 bits can provide, only then are we considering moving to 128. We probably wouldn't have moved to 64 bits, if it weren't for the memory limit.
Q: Jon, do you see the end of the # of bit war, As memory and procesing power prevails in the design?
A: Yes, that war is over. You choose the number of bits in an MCU that will get the job done. Sure, a 16-bit MCU has capabilities not available in an 8-bit device, but if the latter works fine, who cares?
Q: On my application power consumption is not an issue. I'm more interested if anyone has experience with EMC testing. Inputs tend to bounce when subjected to voltage spikes. 3.3volt mcu has less tolerance for input bouncing than 5.0volt mcu.
A: There are PCB design guidelines that help minimize the effects of EMI, which would require another course and is a good topic. You can use some shielding and geround planes, ferrite filters on external signals, proper grounding, elimination of ground loops, and so on. You can find a lot of practical information on the Internet.
Simona: The compatibility you worry about is only how they communicate and their operating voltage. You can connect them via a UART and transfer information back and forth. One MCU might handle a display and keypad input and then transmit into to a second MCU that processes the data and does other tasks. Actually, many displays have an MCU built in and use an I2C port or a serial port to communicate with the main MCU.
Also, on using the lower power chips on two batteries (at 3 volts) if they will run OK, they may run slower. See data sheet. TI MSP430s will run down from 1.8 to 3.6 volts, but the processor speed will slow down with lower voltages. Check the specs to ensure you will get the proper speed at the voltage you want to run (and test it at the actual voltage too)
Simona, it is very rare that you want two chips connected together so closely that you care about compatibility. Of more important concern is whether the two chips share identical data types, and don't use different endianness, for example.
On my application power consumption is not an issue. I'm more interested if anyone has experience with EMC testing. Inputs tend to bounce when subjected to voltage spikes. 3.3volt mcu has less tolerance for input bouncing than 5.0volt mcu.
Probably I missed some but about quote below : Is that means that you recomend to use different MCUs at the same circuit? I mean - the MCUs manufactured from different manufacturer? How we can be completely sure that they are absolutely compatible? I think that Just comparing of datasheets is not enough
"Q: Could I expect a vendor to tell me which microcontrollers can work well together if I need to divide up tasks?
A: Yes, but they will recommend their own devices. MCUs can communicate via serial communications quite easily.
Q: What would be the advantages or disadvantages of a 3.3volt mcu versus a 5.0volt mcu?
A: Lower power used in a 3.3-volt device, more standard chips now use 3.3 volts, newer chips all use 3.3 volts. If you use a 5-volt MCU you need 5-volt support chips or 3.3-to-5-volt translator chips, which use power and require PCB space.
Q: In searching for an MCU to incorporate for a project, since the industry is very competitive, what is the typical chip life cycle I should expect for that particular MCU and will manufacturers give you accurate information on life cycle?
A: You should expect about 7 years. Ask an MCU vendor about any end-of-life concerns you have. I'd bet you can still buy Z80 chips today.
In searching for an MCU to incorporate for a project, since the industry is very competitive, what is the typical chip life cycle I should expect for that particular MCU and will manufacturers give you accurate information on life cycle?
Can there be problems with patent infringement? If so, are there internet URL's that one can search? Also, if you develop a product application for a 3rd party, how is the intellectual property issue handled?
SB, I started out programming embedded devices using the microchip PIC product line with the MPLAB and MCC18 compiler. A great embedded board to start with is: http://www.modtronix.com/product_info.php?cPath=1_36&products_id=149. This board has the PIC chip and an ethernet interface with a bootloader and firmware upload program. Works great.
What sort of features are typically offered with not-free packages (like IAR) that are not typically available from chip mfr freebies, like what's offered by Atmel? Or is it a situation where they all pretty much do the same thing, but more or less user-friendly?
Good point there. We are troubleshooting a design that has the JTAg interface on the same pins as the ADC. Because we're using the ADC as part of teh design function, we can't use the JTAG while teh prototype is in its normal operating mode.
a clue to some of your audio problems may be this,
yesterday I was able to get audio at the beginning and everything is great. I am using IE8. but I am not able to view the slides. So I clicked a link off this page and wallay, no audio. when I came back to this page was not able to refresh the audio, so was left in the silence with others.
The streaming audio player will appear on this web page when the show starts at 2pm eastern today. Note however that some companies block live audio streams. First thing to try though is to refresh your browser.
I went back yesterday and reviewed some of the audio but never checked to see if the post were included. There were a lot of good questions and it would be nice to review the questions and answers at a later time as it is a little hactic during the presentation.
For your local starting time information, go to: http://www.timeanddate.com/worldclock/. The seminar starts at 2:00 PM (1400h) US Eastern Time, so compare your time to the time in New York City or Washington, DC and adjust accordingly.
Find a time-zone converter at: http://www.timeanddate.com/worldclock/converter.html. Set the time to 2:00 PM (1400h) in New York City to find the correct local time in your zone.
Focus on Fundamentals consists of 45-minute on-line classes that cover a host of technologies. You learn without leaving the comfort of your desk. All classes are taught by subject-matter experts and all are archived. So if you can't attend live, attend at your convenience.