• Welcome to LusoRobótica - Robótica em Português.
 

[Duvida] SPI ou I2C com Logica 3.3v / 5v

Started by Marvin, 29 de August de 2012, 17:10

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Marvin

Esta pergunta pode ser parva mas aqui vai...

Nos arduino (ou seja atmega) os GPIO's e ADC trabalham numa logica de 5V, isso é devido a serem alimentados com essa tensão certo? Se eu quiser que os portos passem para 3.3V (ou outra) "basta" alimentar com essa tensão, correcto? Ou existem step-ups internos que passam sempre para uma logica de 5v?

Tentei procurar nas datasheets e não consegui perceber isso, talvez nabice...

Agora para justificar esta duvida, estou a desenhar um circuito com um atmega que vai trabalhar maioritariamente com sensores que trabalham com uma logica de 3.3v, e para evitar um segundo regulador se calhar o melhor é colocar o atmega logo a trabalhar com uma tensão de 3v.

Ou seria melhor pratica colocar logic level shifting no circuito e deixar o atmega a 5v?


Dronetech BlogThe Scientist and the Geek

senso

Todo o micro-controlador funciona com a voltagem com que o alimentas, não esquecer de ligar todos os pinos de alimentação e de massa, se o alimentares a 3.3v os pinos trabalham a 3.3v, assim como o core, cuidado com a frequência que queres usar, não podes por exemplo usar um atmega328p a 16Mhz a 3.3v, quer dizer puder podes, mas é overclock sobre o que a datasheet recomenda.
Avr fanboy

Hugu


Njay

Alguns dispositivos de 3.x V são "5V tolerant", que quer dizer que toleram sinais de 5V nas entradas, embora sejam alimentados por menor tensão.

A 5V de alimentação, se quiseres garantir que o atmega328 interpreta uma tensão como um "high", essa tensão tem que ser superior a 3V.

Com um pouco de sorte (o teu dispositivo de 3V3 é 5V tolerant) e se a aplicação não for critica, não precisas de alimentar o ATmega a 3V3. Se não precisares de chegar aos 16MHz o mais garantido mesmo é alimentar o mega com 3V3, mas só se não tiveres outros dispositivos de 5V ligados a ele...

3V3 dá para chegar a ~12.5MHz. Há quem os use à mesma a 16MHz, mas é out-of-spec e fora de questão se queres algo "a sério".

Marvin

Obrigado! eu tambem imaginava que assim fosse, mas não ha nada como confirmar.

Por acaso tenho um misto de sensores alguns não são 5V tolerant e todos são alimentados a 3.3 V por isso é que fiquei com duvidas se não seria melhor colocar logo o atmega a 3v e não precisava de ter 2 regs no circuito (menos componentes = menor footprint = melhor preço final)

Uma duvida em relação aos osciladores, que ainda n vi a datasheet acerca disso, tal como o NJay diz o maximo a 3.3V é 12mhz, se eu colocar a 5V posso usar um 12mhz ou so pode ser 16mhz? Já agora o bootloader do arduino é esquisito em relação a frequencia? Não estou a pensar em usar o bootloader mas é uma questão que me ocorreu agora

Dronetech BlogThe Scientist and the Geek

senso

Tens uma gráfico com esses dados, a 5v podes usar qualquer coisa entre 0hz e 16/20Mhz dependendo do modelo, a 3.3v, limitas a 12Mhz, se passares para 5v, não estás limitado, o bootloader fala serial, e o serial tem baud-rates, tens de alterar esses valores e recompilar o bootloader conforme a frequência do cristal que usares.
Avr fanboy

Njay

Ohhh yeah, está tudo nas datasheets! No caso dos AVR só há uma coisa que não está na datasheet, e que apanhei numa Application Note: a corrente máxima que se deve usar nos diodos de protecção de pinos é 1mA.