Well duh, the Teensy 3.6 is NOT 5v tolerant

MichaelMeissner

Senior Member+
Ah well, in playing with neopixel rings, it looks like I disabled A2/A3 on my beta 3.6. The other pins seem to work fine. As near as I can tell, at one point I hooked up the neopixel ring with VIN instead of 3.3v without using a level shifter, and it must have back fed 5v into the pin. The Teensy 3.1/3.2 allows one to be careless.

Now, the other pins seem fine, it is just those two pins that I messed up. I'll have to mark this Teensy to say that A2/A3 no longer work. Fortunately, I have plenty of other pins to use, and I have 2 fresh 3.6's from the kickstarter campaign. Ah well. Live and learn. :(
 
Unfortunately, it had been running hot, and after some time, it now no longer boots at all. Unfortunately, I'm going to have to take a break for a few days, as I have to put everything away so we can get the house cleaned. Ah well, on to the next Teensy in a few days. Live and learn. :(
 
So the WS2812s backfeed 5V on the data line?

That's a guess. I may have done lots of other silly things, but the two pins that got disabled first were the two pins I was using for two separate neopixel rings. I could also have a solder problem on the ring itself.
 
That's a guess. I may have done lots of other silly things, but the two pins that got disabled first were the two pins I was using for two separate neopixel rings. I could also have a solder problem on the ring itself.

In this day and age why can't anything be be 5v tolerant with level shifters? Most home Electronics geeks want to interface with 80's Stuff!
 
In this age, 5v is outdated. Dunno if "most" users need it - i've NEVER needed it. And i don't interface outdated 80's hardware ;-)
But, the 3.2 and 3.5 are 5V tolerant !
 
What I have been doing for years is wiring series-resistors of value 150-330 ohms on the I/O pins of "all" of my controller boards. They help protect the pins from short-circuits, and along with the internal ESD protection diodes, help protect from over-voltages. I run all of my Arduino chips at Vcc=3.3V anymore, and interface sensors with 5V output all the time with no problems.

I can't guarantee this will work for Teensy 3.6 chips, but it will at least limit current into the ESD diodes in case of "accidents". Eg, (5-3.3V)/330 = 5-mA [and actually a little less because of the diode drop], instead of (5-3.3V)/0 ohms. All in all, 5-mA sounds better to me.
 
Breakout 5V Level shifter board for the Teensy 3.6?

What I have been doing for years is wiring series-resistors of value 150-330 ohms on the I/O pins of "all" of my controller boards. They help protect the pins from short-circuits, and along with the internal ESD protection diodes, help protect from over-voltages. I run all of my Arduino chips at Vcc=3.3V anymore, and interface sensors with 5V output all the time with no problems.

I can't guarantee this will work for Teensy 3.6 chips, but it will at least limit current into the ESD diodes in case of "accidents". Eg, (5-3.3V)/330 = 5-mA [and actually a little less because of the diode drop], instead of (5-3.3V)/0 ohms. All in all, 5-mA sounds better to me.

I sent Dan an Email the other day he makes the Breakout boards which are very good! I asked him if he could make a board with level shifters on! No reply yet but i think this will be a good addition to make use of the SPEED of the 3.6. I interface with Retro 80's chips so need the 5V tolerance on all pins! :rolleyes:
 
In this day and age why can't anything be be 5v tolerant with level shifters?

5 volt tolerance adds significant extra cost to a chip. It requires much larger on-chip ESD protection structures. Larger silicon area is the main cost factor in chips. The modern trend is moving away from the extra cost of 5V tolerance, since almost everything is now 3.3V or lower.

There's a widespread myth in the maker & modern hobbyist electronics world about universal bi-directional level shifters. There's no such thing. Santa Claus and Unicorns aren't real either. But it's a seductive idea, that you can just buy some cheap universal level shifters and use them in any project when you have two chips that need different voltage signals.

I don't know if Adafruit originated this idea, but I know they were among the earliest selling such products with an overly optimistic "good for all uses" sales pitch on their website. The trouble with such optimistic sales language is most people, especially hobbyists without years of engineering experience, don't have a good frame of reference to understand it. Think of beer commercials. You know 2 ordinary guys who go get a case of beer while house-sitting aren't suddenly going to be having a huge sophisticated party populated with dozens of attractive women in bikinis. People understand beer, but not so much the finer points of electrical engineering. In recent years, Adafruit and others have toned down such claims, but the myth of a universal, good for everything, bidirectional level shifter lives on.

The reality of bidirectional level shifting is one of compromise. The common circuit with 1 mosfet and 2 resistors is really only good for I2C. It also works for most other open collector signaling, and some other types of normally-high signals like serial, if their speed isn't very fast. But those circuits have slow rise time, so they're pretty much worthless for fast protocols like SPI. The pullups are weak, so you don't get strong positive drive needed to source current into NPN transistors, or to quickly switch N-channel mosfet gates. Worst of all, the rise time and fall time are very different, which greatly distorts the shape of the waveform. That's a huge error for PWM and pulse-width protocols like WS2811 addressable LEDs.

Another type of bi-directional level shifter uses a pair of strong pullup transistors with one-shot timers and a direction detection circuit. These work well for some applications, but again they're far from universal. They are especially susceptible to noise pickup and crosstalk on long wires.

Even when these circuits do work, something to remember is the silicon process they use is dramatically different than the silicon inside a microcontroller. The discrete N-channel mosfets are almost always a vertical silicon structure, rather than the lateral ones within wells used in normal CMOS processes. Those level shifter chips are also a different silicon process, some of them BICMOS. You can't simply put those circuits onto the same silicon chip as a microcontroller, because they have completely different silicon manufacturing process.

Of course the idea has come up over and over again to make dev boards like Arduino or Teensy with lots of this extra circuitry on the same board. Even if a magical universal circuit was possible, the other reality is cost. Of course, people have tried to do this with some level of success, and as you can see it does cost quite a lot more.

But even that probably won't help you. There just isn't any universal approach. What you need for your retro computing projects is different from what a lot of other people need for more modern projects. There aren't any easy answers... only long-winded explanations like this one.
 
I sent Dan an Email the other day he makes the Breakout boards which are very good! I asked him if he could make a board with level shifters on! No reply yet but i think this will be a good addition to make use of the SPEED of the 3.6. I interface with Retro 80's chips so need the 5V tolerance on all pins! :rolleyes:
@Baggey, thanks for your comments. I have NOT received any emails from you, and always scan over my spam folder too, so don't know what happened there.

I pretty much agree with Paul here. I have thought about those level-shifter chips, but they're expensive [if used on a lot of pins], and would take a lot of pcb real-estate. So I just use the old-fashioned solution ---> resistors. With reference to my new pcb from the other thread,
https://forum.pjrc.com/threads/41277-And-yet-another-Teensy-3-6-breakout-board

1. first, I want to keep my boards roughly UNO-size, because I now have 6 or 7 such pcbs and stack them for my projects.

2. on the output side, 3.3V will trigger most 5V input circuitry.

3. on the input side, as shown I wire series-Rs on every I/O pin, and if I want to i/f to 5V, I can always wire a pull-down R to form a voltage-divider; these will work well, even for fast signals, if the R-values are "low". Eg, 1K series feeding to 1.5K pulldown will give you under 20-nanosec rise-time assuming Zin is 20-pF on the pins [extreme-case high-value]. I figure that's fast enough.

4. people, including me. are always connecting things wrong, so I figure the series-Rs are the single best easy form of protection, that no-one besides me ever uses [except Ruggeduino]. I've never blown up one of my boards.

5. and in fact, I already have 10 pulldowns in those 2 SIP R-networks beneath the Teensy module near the ADC pins, and can wire more in the proto area.

6. I mostly use 3.3V sensors anymore, and for the few 5V sensors I just use the voltage-dividers.

7. for 5V I2C devices, of which I cannot even think of one other than a 5V Arduino chip, I use pullups to 3.3V rather than 5V; this works since the output gates of I2C devices are open-collector [ie, open-drain] pulldown, and use passive pullup-Rs.

Most high-speed chips nowadays, like used here and in raspberry pi and Beagle Bones and Chipkits, are 3.3V anymore, and I think my solution is adequate for what I do. If you're working with 80s style electronics, which is probably all pretty darn slow, then I would just use the T3.5 and would bet its fast enough to do the job.
 
In terms of auto 3.3v to 5v in an Arduino shield form factor, you might look at Digistump's digix shield: http://digistump.com/products/51. Digistump once made a DUE clone, and they made this shield to go with it. I believe the DUE clone (DigiX) is now no longer in production (and at $70, it probably isn't worth it even if it was in production), but they are selling remaining stock of the shield.

In terms of 5v i2c devices, one or two of the 16x2 I2C text only displays that I bought some time ago are 5v only. I don't recall if I had any other devices from when I started with Arduino that are 5v only.

For me, the big thing for level shifting is driving various ws2812b/neopixel LEDs that really want 5v. The general 2 way level shifters don't work too well for ws2812b, because of the fixed timing window in the ws2812b protocol.

Note, Intel Edison is 1.8v I believe. It depends on the chip density, so sooner or later, the more dense chips will filter down, and we will have a similar discussion about 1.8v and 3.3v.
 
Indeed, 1.8V logic is probably in the long-term future for everyone.

Even now, 32 bit chips like we use on Teensy 3.x internally run at much lower voltages. Freescale doesn't spec the internal voltage, but we do know it's less than 1.7, and it changes depending on which mode the chip uses (normal, HSRUN on 3.6, and VLPR).
 
5 volt tolerance adds significant extra cost to a chip. It requires much larger on-chip ESD protection structures.

This is in fact the primary reason I recommend 5v-tolerant chips whenever possible. 5v-tolerant chips are generally more robust. (Especially if you don't use 5 volts in your circuit.)
 
people who convert from uno or mega to teensy are better off going straight to teensy 3.5, less hasstle than rewiring their 5v ext chips setup
 
That only works if.
A. They make 5v tolerant chips for your specific need.
B. You're willing to live with extra cost of that feature.

Most engineering projects require multiple voltages.
 
Ok, so I managed to mistakenly connect VUSB on a teensy 3.6 to an IO pin on the same chip.
Since then, it sure doesn't work much anymore.
If I plug in USB, I still see
usb 1-2: new full-speed USB device number 117 using xhci_hcd
but that's it, no ttyACM

Is it dead, dead, or is there some chance it could use a low level reflash and recover all but its IO pin?
 
FWIW - watch seconds on a stopwatch - plug the T_3.6 into power and depress the button for 15 seconds and release. There is a small window +/- a second and if it can reset the core from the bootloader chip it will. It will be blanked with no code - but able to reprogram with the button then if there is any life in it. Try it 2-3 times maybe. Though even if it works it may only survive a short time if it really took a hit and damaged any part - a few million more were right there in close proximity sharing things ...
 
Thanks. Just to be clear
1) push button
2) plug USB cable into computer/teensy
3) count 15 seconds
4) release button.
If so, I got nothing visible from that.

I also tried
1) plug USB
2) push button for 15 seconds
3) release button
no difference either.

Very disappointing to have the most expensive chip die so easily by feeding it its own USB power pin to a data pin :(

I saw this once, though:
usb 1-2: USB disconnect, device number 45
cdc_acm 1-2:1.0: failed to set dtr/rts
usb 1-2: new full-speed USB device number 46 using xhci_hcd
usb 1-2: Device not responding to setup address.
usb 1-2: Device not responding to setup address.
usb 1-2: device not accepting address 46, error -71
 
As for Paul's comment that level shifters are expensive and slow. Sure, I understand that, but 5v tolerance, is not level shifting, it's just not having the expensive chip destroy all of itself just because 5V appeared on one of its IO pins.
I'd be fine with the chip shutting down in protection mode (some polyfuse), or even hard fuses that just kill the pins you overvolt without killing the whole chip.
But having the whole chip die, is just crappy.
Along with the serial port having never worked reliably for me (which I understand may be a more localized problem), this still steers me back towards ESP32.
If there is to be a new teensy, I hope it will address those downsides (and yes, I could have bought a teensy 3.5, but I got the faster one with more RAM because I needed that).
 
Back
Top