It is one of our favorite chips, and the brains behind the Arduino UNO and its clones, and it’s getting a tweak (PDF). The ATmega328 and other megaX8-series chips have undergone a subtle design change that probably won’t affect you, but will cause hours of debugging headaches if it does. So here’s your heads-up. The full-swing oscillator driver circuitry is being removed. As always, there’s good news and bad news.
The older ATmega chips had two different crystal drivers, a low-power one that worked for lower speeds, and higher-current version that would make even recalcitrant crystals with fat loading capacitors sing. This “full-swing” crystal driver was good for 16 MHz and up.
The good news about the change is that the low-power crystal driver has been improved to the point that it’ll drive 16 MHz crystals, so you probably don’t need the full-swing driver anymore unless you’re running the chip at 20 MHz (or higher, you naughty little overclocker).
This is tremendously important for Arduinos, for instance, which run a 16 MHz crystal. Can you imagine the public-relations disaster if future Arduinos just stopped working randomly? Unclear is if this is going to ruin building up a perfboard Arduino as shown in the banner image. The full-swing oscillator was so robust that people were getting away with a lot of hacky designs and sub-optimal loading capacitor choices. Will those continue to work? Time will tell.
The bad news is that if you were using the full-swing oscillator to overcome electrical noise in your environment, you’re going to need to resort to an external oscillator instead of a simple crystal. This will increase parts cost, but might be the right thing to do anyway.
Whenever anyone changes your favorite chip, there’s a predictable kerfuffle on the forums. An Atmel representative said they can get you chips with the full-swing driver with a special order code. We’re thinking that they’re not going to let us special order ten chips, though, so we’re going to have to learn to live with the change.
The ATmega328 has already gotten a makeover, and the new version has improved peripheral devices which are certainly welcome. They don’t have the full-swing oscillator onboard, so you can pick some up now and verify if this change is going to be a problem for you or not. We don’t have any of the new chips to test out just yet.
Thanks to [Ido Gendel] for tipping us off to the change in our comment section! If you have any first-hand experience with the new chips, let us know in the comments and send in a tip anytime you trip over something awesome during your Internet travels.
two more IO pin awsome.
Many chips already had this if you run from the internal RC oscillator. Not that accurate, and only up to 8Mhz. But it works. Saves part count.
The (not so) new PIC16F1454 has a 16MHz internal oscillator stable enough to use it for USB 2.0 communication
As does the ATXMEGA series if you’d rather stick to Atmel :)
Not mentioned in that PDF is the hidden backdoor that the FBI have insisted be installed in all arduinos from now on.
Haha Like when they put transmitters into Furbys and Barbie dolls.
Oh, wait. They did.
I remember hearing some nut on the radio claiming that there is a listening chip in every refrigerator made since the 90’s.
They don’t need backdoors anymore, they can just watch the stupids on Facebook!
20 years ago it was a joke.
Now we know there are things like ragemaster, cottonmouth and firewalk out there.
And now we’re hearing about bkackfin, typhoon and drt4411b….
The power save power consumption when using 32khz rtc on the smaller devices (48, 88, 168) has also doubled from 0.7uA to 1.4uA. The change notice doesn’t mention the 328 so maybe this is unaffected.
Full changes here: http://www.atmel.com/Images/WC154601%20-%20PCN%20for%20mega48_88_168_328%20die%20change%20RSK.pdf
Why did they not give them a new part number. Is this a Microchip decision to confuse the AVR…to freak us out for real…!
This was reported here before the Microchip overtake so unfortunately it can’t be blaimed on them.
I already assumed that “doesn’t work with crystals” is a new Microchip corporate-wide mandate.
Microchip have been in talks with Atmel for years about a take over.
Gonna be honest, Microchip has a much better history of not pulling bullshit like this and being generally good at supporting old designs long-term, while Atmel has in the past had all sort of supply stupidity….
I don’t think so, Microchip adds a letter to a part number when they change something in it (for example 16F628->16F628A) and release a migration document so you can update your designs if you intend to use newer version of chip.
It’s a ridiculous decision. From what I can tell, they’re basically selling defective parts and telling their customers to suck it up and live with it. If you look at the thread on the mega328PB, the early samples had a full-swing crystal oscillator and were documented to have one, but it simply didn’t work properly so they removed it from the documentation. Now they’re replacing all the other Atmega48/88/168/328 variants with ones with the defective full-swing oscillator. I think this is probably good grounds for designing Atmel chips out of any product you care about.
+1
It bugs me why the Arduino never switched to the XMEGA devices. On hobby level, the small extra cost of the XMEGA32E5 vs the MEGA328 is totally justified for all the features (about 0.31 EUR for small quantity at the moment). Same when you officially sell the arduinos for $20ish. Even skipping the oscillator(you can only consider an external one if you need accurate RTC or precision over the full temp range) almost compensates for the cost.
Probably due to years of broken hardware in the XMEGA series and a what seemed like never ending stream of erratas coming through. Even now there’s still a lot of forum responses to why something doesn’t work that are “read the errata”
Than they should rather have made a switch to the Cortex-M earlier and more consistent. The XMEGA unites the disadvantages of the ATMegas (8bit, slow computing speed) with those of ARM based microcontrollers (harder to get into for beginners and less resources on how to build them into hobbyist projects).
I find they are the opposite: they combine the nice peripherals you normally find on ARM, but with low standby/sleep current of 8 bit micros.
Note, I am not saying there are no ARM micros designed for low power sleep, just that the ones that are tend to cost more than the 8 bit similar counterparts. Of course, if you don’t care about power, sure, the Xmegas don’t make sense, just jump to ARM.
Oh not this again http://hackaday.com/2016/03/13/hackaday-links-march-13-2016/
I feel like this PCN was already discussed, together with clueless bullshit theories that Microchip travelled back in the time and changed things to confuse Arduino users and kick down AVR product line.
We never really discussed the oscillator changes, did we?
I mentioned it in the comments and no one bit.
Apparently “we” did. There are two comments in that post about the implications of the oscillator changes.
All of this is confusing for me.
The low power version used in Arduino Uno’s (ATmega328p-PU) isn’t listed as being changed.
The Arduino uses a ceramic resonator anyway. Sure it looks like a crystal but have another look – the capacitors are missing because they’re not needed with a cermet.
The full swing oscillator was always a week point anyway. If you plugged in 30MHz passive crystal it wouldn’t work. To overclock you needed and active external oscillator anyway.
And the most confusing for me is that they are going to use the SAME part number for the different speccd chip.
I don’t know of one case in history that the complete same part number has been used for a different spec, it’s unheard of.
I can buy a brand new recently manufactured TIP102 transistor originally designed in the 1970’s and it still performs exactly according to the original specification sheet.
I can imaging EE’s in future years talking about how they avoid ATMEL branded chips because there was a rumor that they change the actual specifications of the chips.
It appears all the revised parts have an “R” appended to the part number. And if that’s true, then it’s not the same part number. It’s common for revisions that affect functionality to have letters added, even to the end, so it’s not a first.
the R stands for tape & Reel.
At first i thought they added an S, but then i saw its only the sample ordering code.
Quote:
” For all production orders, only standard existing ordering codes will be accepted.”
–> no change.
Open up a 20 years old 2n3055, and open a recent one.
The die is much smaller! newer fabrication methods and modern silicon allow for smaller structures.
The Transistor behaves the same, but it can happen that old PSU dont work with new Transistors.
(I didn’t have that Problem, but i know somebody who did. And no, these were genuine chips, no fakes!)
Also, the Overload capability is reduced (Smaller chip –> higher heat resistance).
Still, this is really annoying, and a good reason to stay away from Atmel in the future!
(what happens when you activate full swing Osc in the fuses on a new die?)
It doesn’t look like any chips ending in PU are affected, so if you use DIP chips because of their perfboard / breadboard friendliness this probably won’t affect you. You will still be able to buy surface mount chips with the old die that supports full swing, these new chips that don’t will just be cheaper. Atmel FAQ relating to product change. http://atmel.force.com/support/articles/en_US/FAQ/Product-Change-Notification-related-to-Atmel-megaAVR-MCUs
>I don’t know of one case in history that the complete same part number has been used for a different spec, it’s unheard of.
You will love fourth instalment of cult classic PC game Doom, they decided to call it DOOM. Fourth Rambo was also called Rambo. How about those Kingston V300 or PNY Optima SSD drives?
Well electronics has a history of being much more towards scientific specifications than the titles of video games.
In electronics a part number is really a specification number.
There’s no electrical reason why perfboard should present an issue. Of course you can put the crystal 12″ away from the MCU pins, use the wrong caps, and/or daisy-chain every ground on the board through a single wire, and that might be enough to make it fail; but that’s not the perfboards fault, now is it?
A breadboard is more of a challenge. Still, I’ve gotten away with that so far, using Microchip’s HS XT OSC, so long as I don’t push my luck too far on other parameters. Not sure how that compares to Atmel’s oscillators.
I don’t know why you would put the crystal 12″ away from the MCU???
12″ is only a quarter wavelength at one specific frequency. The distance should be calculated for each individual frequency so that it always a quarter of a wavelength away. At half wave length the standing wave returns to the other pin at exactly 180 degrees out of phase. And it has an added advantage when you have may similar circuits close together that they will also synchronize.
This is easily achievable on both perfboard and breadboard.
12″ wasn’t intended to have a specific meaning, just an example of longer than recommended. Someone might attempt this because they didn’t leave adequate space on their original perf/bread board, and has to run extension wires to a different part of the board (or a separate board). Or maybe they only had 12″ breadboard jumper wires left.
Also, while your suggestion is technically accurate, it’s also quite irrelevant here. 1/4 wavelength of 16Mhz is 184.5 inches. “Easily achievable”, eh? Have fun hooking up the crystal to your MCU with those wires. ;)
I was being sarcastic lol, suggesting to use the connecting wires for the xtal as antenna’s and inter-modulation distortion synchronizing micros.
More or less a worst case scenario.
It’s not the distance that matters, it is the capacitance of the wires, especially if they are close to things that can interfere with the crystal.
They can act as antennas and pick up noise via capacitive/inductive coupling.
The thing i love most about Microchip, is every single time I thought gee it would be nice if X had Y…. By the time I learned the right way to do things I realized microchip had already pondered it and it was always exactly what i needed. Of Course this required dedication to get to the right way to do things quickly…
Ceramic resonators with the built in caps are the way to go unless you need the higher accuracy of a crystal. Back when I was using PICs, I would have problems getting the crystal to oscillate (including one time then the Microchip field engineer couldn’t make to work either). I switched to ceramic resonators and have never had one fail to oscillate, on either PIC or AVR.
Thanks for warning the public.
I designed a PCB around the ATmega328PB, without being aware of this issue, and the chips failed at 16MHz. And yes, I used a good quality crystal, very close to the clock pins, with appropriate caps and everything.
The famous DIP-packaged ATmega328P-PU of the Arduino is not included in this change (care to guess why? ;-) ) but the SMD versions are, so beginners beware.
the smd 328 chip is used in TONS of nano clones.
can’t wait to see the chinese get their hands on these and mess them up ;(
The clones might use cloned 328s as well, maybe they have already some things removed/reduced.
> the smd 328 chip is used in TONS of nano clones.
That’s why as soon as I read this news the word “FTDI” came immediately to mind.
What is the BER for the UART at its various speeds then?
couldnt you emulate the full swing using an external circuit connected to the pins on the chip?
As most people are using the AVR in an Arduino compatible mode, it’s a non-issue, as this uses the low power mode for the external oscillator and not the full swing mode.
From the boards.txt
uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
You can use the fuse calc to see what that means:
http://www.engbedded.com/fusecalc/
I don’t care, I use STM32 :D
It’s a shame the Atmel engineers didn’t do a few other more useful housekeeping things while they were diving into the ‘fix stuff that really doesn’t matter for most of us’ department. Like giving users the (fuse) option to turn off the pseudo-random clock jitter on the internal 8MHz RC clock. That jitter can be a pain in the neck for a number of software routines, but useful for others. So, Atmel, why not give us control over that ‘feature’?
Oh, wait. It’d mean a part number change. Or not.
Oh, and did anyone notice that the Product Change Notification included a change in the Device ID returned by the (kinda new) chip? That’s going to be a trap for a lot of folk. You know how this goes: Grab chip, shove in programmer, check chip selection (“Yep, I’ve selected the mega328, OK”) and press Burn, Baby, Burn on the programmer….which then goes “Ah, no, buddy. Wrong/Invalid Device ID!” And imagine just how long sorting that problem out is going to take the average Arduino user, given the PART NUMBER DIDN’T CHANGE!
Um you’re probably totally right about this but I wonder how that can happen.
If your going to us the Aduino IDE then the bootloader and fuses have probably been burnt in already.
Does Arduino even check the product ID or program the fuses?
All the same this is going to cause some pain.
I had been using low frequency mode with a 20MHz crystal all this time without realising it only supported up to 16MHz, oops, I’ll remember that for next time. I haven’t any problems with my device that runs v-usb.
This will create so much confusion ahead, so one begin to wonder why Microchip actually bought Atmel. Same reason Microsoft bought Nokia, to get the patents, and then drop Nokia…will Atmel go the same way? Why have two lines of products basically doing the same…doesn’t make sense. Hopefully we will se a nice fusion and a range of new cool products. But I can’t see that happening in the near future. New dev tools etc. Must come before we can use anything…
Microchip buying Atmel makes perfect sense (for Microchip): All Atmel’s customers instantly become (in-essence) Microchip’s customers, price and product competition is eliminated, and the elimination of redundant jobs increases profit margins. Also, now is a good time for Microchip to spend money buying Atmel, interest rates are very low right now due to failed U.S. Government fiscal policies and currency manipulation. The only losers in the Microchip = Atmel buyout are the customers, and any employees that have lost or will loose their jobs (redundancies are inevitable).
So, it’s an old thread, but i was just wondering about this, since i was going to use Atmega328P for a project that needs faster than 16Mhz crystal. Apparently the Rev. K was cancelled and the full swing oscillator support is removed from the Atmega328PB only. Application document AT15007 explains it.
I tried finding news about it, but apparently there was none here at hackaday, so i just wanted to document the change here for future reference.
Thanks!
I’ve been using 20mhz rocks on Atmega’s for years, with the standard oscillator settings (actually from the fuses looks like THREE choices, low power, standard, and full swing). Never had an issue with them not working. (actually I have two arduino nano’s that do show up in the programmer, but won’t program anymore.)