TTL to CMOS e viceversa

Megadubbio amletico, allora la famiglia logica TTL ha dei livelli logici fissi per cui da 0 a 0.8 V circa i segnali sono interpretati come BASSI mentre da 2V a VCC sono interpretati come ALTI. Quindi qualsiasi sia la VCC un segnale maggiore di 2 volt mi viene interpretato come alto, mentre un segnale minore di 0.8v viene interpretato come basso. La tecnologia CMOS invece è simmetrica (grazie all'inverter sulle porte mi pare) quindi avremo un livello basso da 0 a VCC/2 mentre da VCC/2 a VCC viene interpretato come livello alto, tenendo comunque conto di una zona simmetrica di incertezza circa 0.5*VCC.
Quindi teoricamente TTL a 5v classica e CMOS a 3v3 classica si capiscono perfettamente, ma come mai si usa il partitore? Al limite userei una resistenza per limitare la corrente, e/o ne metterei una di pull up.
Sono interessato a questa cosa per comunicare con il modulo xeebig e per accelerometri e giro analogici.

ciao Calamaro

Le cose non hanno niente a che fare con i TTL; Quelli oggigiorno si usano poco. Si usano le versioni Cmos dei TTl (74HC, 74HTC ecc)

Il problema dei livelli LOW e HIGH delle 2 Famiglie come lo descrivi Tu é corretto. Solo che non é pertinente se colleghi un Arduino da 5V con un XBee. Tutti due sono CMOS.

I partitori si usano per adeguare il livelli di tensione da un cmos alimentato a 5V a un cmos alimentato a 3,3V. Normalmente le entrate soportano tensioni solo poco sopra la tensione di alimentazione percui se dai 5V a un entrata di un cmos alimentato da 3,3V lo rompi. Per questo si mettono un partitore di tensione che porta i 5V a 3,3V (2 resistenze da 1,8kOhm e 3,3kOhm che in serie sono 5,1KOhm).

Per non avere problemi potresti anche usare una versione 3,3V di Arduino, per esempio un Mini PRO. Devi diminuire la frequenza di clock. Cosí non serve avere 2 alimentazioni diverse.

Ciao Uwe

si giusto, hai ragione. ma come mai se abbasso la tensione di funzionamento dell'atmegaXX8 devo cambiare la frequenza del clock? a me piacerebbe avere un sistema dinamico per con cui possa alimentare l'atmega a 5 o 3v3 senza dover cambiare il quarzo.

quello che volevo fare io è prendere un atmega metterlo su una board e alimentarlo a 3v3 se il progetto prevede xeebig o accelerometri e giroscopi. Invece alimentarlo a 5 se il progetto non li prevede.
Comunque mi sa che hai ragione, i circuiti integrati sia ttl che cmos sono abbastanza rognosi perchè cambiando l'alimentazione cambiano le velocità di commutazione... madò che bega assurda.

Quindi un sistema con un alimentazione dinamica (scegliendola in fase di realizzazione di uno sketch) non è possibile averlo?

ciao Calamaro

Non so diri il perché si deve abbassare il clock con tensioni piú basse. È descritto nel datasheet del Atmega328. Il 3,3 a 8Mhz dovrebbe funzionare senza problemi con 5V.
I ttl devi alimentarli rigorosamente a 5V; i Cmos serie 4000 da 3 a 18V
Ciao Uwe

forse è più semplice usare uni di questi, http://www.sparkfun.com/commerce/product_info.php?products_id=8745 infondo 1 ora del vostro tempo vale più di 1.95$

Io credo che sia tutta colpa dell'inverter e delle (maledette) capacità parassite.

comunque sto cercando sul datasheet sta cosa del cambio da 8 a 16MHz ma non sto trovando nulla eccetto questo diagramma.

alla fine mi cambiano solo le correnti :S

@brainbooster mi interessava avere una alimentazione dinamica per vari fattori

  1. il consumo
  2. la sensibilità di acquisizione
  3. facilità di comunicazione con dispositivi a 3v3

mi sto progettando una schedina per un futuro quadricottero :smiley: e non voglio usare roba preconfezionata, a fare quello sono buoni tutti :stuck_out_tongue:

ciao Calamaro
Lo trovi a pagina 316 capitolo 28.3 Speed Grades di http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf
e la tabella Table 28-2. External Clock Drive sulla pagina sucessiva.
Non so risponderti per le "colpe".
Ciao Uwe

grazie mille :smiley: per le colpe indagherò più a fondo, se non fosse colpa di parametri intrinsechi probabilmente si potrebbe risolvere, ma ne dubito :smiley:

e se usassi un doppio deviatore per connettere l'aimentazione voluta più il quarzo voluto?
(soluzione sporca e rapida)

Ciao brainbooster
Dimentica di comutare il quarzo. Ti crei solo problemi gratuiti perché se funzionerá sará molto instabile.
Ciao Uwe

si, hai ragione, ci ho pensato in ritardo alla lunghezza dei terminali ed al "rumore".
scusatemi, è l'abitudine al brainstorming, dove anche le idee stupide (all'inizio) hanno un valore :slight_smile:

ciao brainbooster
Non c'é problema.
Non ho criticato te ma la soluzione proposta.
Ciao Uwe

allora ho usato quella tabella per calcolare la retta tra le tensioni 1.8 e 4.5. praticamente mi viene y = 5.925x - 6.67, per 3.3V viene un quarzo da 12.88 mentre per 3.7 uno da 15.25, ma siamo proprio sulla retta di sicurezza ed è buona norma lasciare un margine da questa.

i rischi di overcloccare arduino alimentato a 3.3V quali potrebbero essere? Ora provo a far funzionare la mia protoboard con 3v3 se scoppia pace ahahaha

@calamaro

rischi di overcloccare arduino alimentato a 3.3V quali potrebbero essere?

per quel che ne so solo che ti si può fermare il clock senza preavviso anche solo a causa di un leggero disturbo..