0% encontró este documento útil (0 votos)
36 vistas18 páginas

Examen Encastats

Este documento explica el funcionamiento de los convertidores analógico a digital (ADC). Describe los pasos de muestreo, cuantización y codificación que realiza un ADC, así como conceptos como resolución y error de cuantificación. También detalla las características del subsistema ADC del microcontrolador ATmega328P.

Cargado por

eles2501.ees
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas18 páginas

Examen Encastats

Este documento explica el funcionamiento de los convertidores analógico a digital (ADC). Describe los pasos de muestreo, cuantización y codificación que realiza un ADC, así como conceptos como resolución y error de cuantificación. También detalla las características del subsistema ADC del microcontrolador ATmega328P.

Cargado por

eles2501.ees
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

Traducido del inglés al español - www.onlinedoctranslator.

com

CONVERSOR ANALÓGICO A DIGITAL


• ADC: Circuito electrónico integrado que transforma una señal de forma analógica (continua) a
digital (discreta).
• ADC proporciona un vínculo entre el mundo analógico de los transductores y el mundo digital del procesamiento de
señales y el manejo de datos.
• Los ADC se utilizan prácticamente en todos los lugares donde una señal analógica debe procesarse, almacenarse o
transportarse en formato digital.
• Los microcontroladores suelen utilizar 8,10ADC de 12 o 16 bits

Pasos: 1:Muestreo y retención(S/H) 2:Cuantización y codificación(Pregunta/E)

• La señal de espera beneficia al • Cuantización: dividir el rango de la señal de


exactitud de la conversión A/D referencia en varios cuantos discretos y luego
hacer coincidir la señal de entrada con el
• Mínimotasa de muestreodebe ser al cuanto correcto.
menos el doble de la frecuencia de
datos más alta de la señal analógica • Codificación: asignar un código digital único a
cada cuanto y luego asignar el código digital a
la señal de entrada.

Elresoluciónes el cambio más pequeño en la señal analógica que resultará en un cambio en la salida
digital: ΔV = Vref /2norte(Vref = Rango de tensión de referencia, n = Número de bits en la salida digital)
Representa el error de cuantificación inherente a la conversión de la señal a forma digital.

Circuito ADC de aproximación sucesiva

SOC

Proceso:
1. MSB inicializado como 1
2. Convierta el valor digital a analógico usando DAC
3. Compara la suposición con la entrada analógica

4. ¿Es Vin > VDAC?


• Sí, establezca el bit (1)

• No, borre el bit (0) y pruebe el siguiente bit


5. Repita los pasos 2, 3 y 4.

Wikipedia

1
Características del subsistema ADC ATmega328P

• El ATmega328P presenta un ADC de aproximación sucesiva de 10 bits.


• 0,5 LSB Integral No linealidad
• ± 2 LSB Precisión absoluta
• Tiempo de conversión de 65 a 260 μs
• Hasta 15kSPS
• 8 canales de entrada multiplexados de un solo extremo
• Canal de entrada del sensor de temperatura
• Ajuste izquierdo opcional para lectura de resultados ADC
• 0 a VCCRango de voltaje de entrada del ADC
• Voltaje de referencia ADC de 1,1 V seleccionable
• Modo de ejecución libre o conversión única
• Interrupción al completarse la conversión de ADC
• Cancelador de ruido en modo de suspensión

2
ADLAR:
Resultado del ajuste izquierdo del ADC

De forma predeterminada, el circuito de aproximación sucesiva requiere una frecuencia de


reloj de entrada entre 50 kHz y 200 kHz para obtener la máxima resolución. Si se necesita
una resolución inferior a 10 bits, la frecuencia del reloj de entrada al ADC puede ser
superior a 200 kHz para obtener una frecuencia de muestreo más alta.

Una conversión normal requiere 13 ciclos de reloj ADC. La primera conversión después de
encender el ADC (ADEN en ADCSRA está configurado) requiere 25 ciclos de reloj del ADC
para inicializar el circuito analógico.

3
ADCL y ADCH: el registro de datos ADC

4
Conexiones de alimentación del ADC

El ADC tiene un pin de voltaje de suministro analógico separado, AVCC. AVCC no debe diferir más de ±0,3 V de VCC. En el chip se
proporcionan voltajes de referencia internos de nominal 1,1 V o AVCC. La referencia de voltaje puede desacoplarse externamente
en el pin AREF mediante un capacitor para mejorar el rendimiento del ruido.

Opcionalmente, se puede conectar AVCC o un voltaje de referencia interno de 1,1 V al pin AREF escribiendo en los bits REFSn en
el registro ADMUX. Por tanto, la referencia de tensión interna puede desacoplarse mediante un condensador externo en el pin
AREF para mejorar la inmunidad al ruido.

El bit ADC de reducción de energía (PRADC) en el Registro de reducción de energía (PRR) debe deshabilitarse escribiendo un
cero lógico para habilitar el ADC.

5
* I/O REGISTER DEFINITIONS *
LDS / STS IN /OUT
UDR0 0xc6 SREG 0x3f
UBRR0L 0xc4 SPL 0x3d
UBRR0H 0xc5 SPH 0x3e
UCSR0C 0xc2 SPMCSR 0x37
UCSR0B 0xc1 MCUCR 0x35
UCSR0A 0xc0 MCUSR 0x34
TWAMR 0xbd SMCR 0x33
TWCR 0xbc ACSR 0x30
TWDR 0xbb SPDR 0x2e
TWAR 0xba SPSR 0x2d
TWSR 0xb9 SPCR 0x2c
TWBR 0xb8 GPIOR2 0x2b
ASSR 0xb6 GPIOR1 0x2a
OCR2B 0xb4 OCR0B 0x28
OCR2A 0xb3 OCR0A 0x27
TCNT2 0xb2 TCNT0 0x26
TCCR2B 0xb1 TCCR0B 0x25
TCCR2A 0xb0 TCCR0A 0x24
OCR1BL 0x8a GTCCR 0x23
OCR1BH 0x8b EEARH 0x22
OCR1AL 0x88 EEARL 0x21
OCR1AH 0x89 EEDR 0x20
ICR1L 0x86 EECR 0x1f
ICR1H 0x87 GPIOR0 0x1e
TCNT1L 0x84 EIMSK 0x1d
TCNT1H 0x85 EIFR 0x1c
TCCR1C 0x82 PCIFR 0x1b
TCCR1B 0x81 TIFR2 0x17
TCCR1A 0x80 TIFR1 0x16
DIDR1 0x7f TIFR0 0x15
DIDR0 0x7e PORTD 0x0b
ADMUX 0x7c DDRD 0x0a
ADCSRB 0x7b PIND 0x09
ADCSRA 0x7a PORTC 0x08
ADCH 0x79 DDRC 0x07
ADCL 0x78 PINC 0x06
TIMSK2 0x70 PORTB 0x05
TIMSK1 0x6f DDRB 0x04
TIMSK0 0x6e PINB 0x03
PCMSK1 0x6c
PCMSK2 0x6d
PCMSK0 0x6b
EICRA 0x69
PCICR 0x68
OSCCAL 0x66
PRR 0x64
CLKPR 0x61
WDTCSR 0x60
PORTS D’ENTRADA I SORTIDA DEL MICROCONTROLADOR AVR ATmega328P
Aquest uC té 3 ports d’entrada i sortida: PORTB, PORTC i PORTD. Els ports PORTB i PORTD son de 8 bits i el
PORTC és de7 bits. Cadascun dels ports té 3 registres associats:
NOM Descripció Funció
PORTx Port Escriptura en el port
DDRx Data Direction Register Defineix els pins com a entrada o sortida
PINx Input Pins Lectura del port

El bits dels registres configuren els pins de cada port. La següent taula indica els valors binaris i la funció
resultant de cada pin. (xn significa pin n del port x)

register bits →
DDRxn PORTxn PINxn
pin function↓

tri stated input 0 0 read data bit


pull-up input 0 1 read data bit
output 1 write data bit write 1 to toggle output pin state

Valors de les adreces corresponents als ports (espai d’E/S o de SRAM)

El registres situats en el rang d’adreces de E/S de 0x00 a 0x1F permeten treballar directament amb els seus
bits utilitzant les instruccions SBI i CBI. També es pot comprovar el valor individual dels bits amb les
instruccions SBIC i SBIS.
Instruction Description Operation Flags #Clocks
SBI P,b Set Bit in I/O Register P(b) ← 1 None 2
CBI P,b Clear Bit in I/O Register P(b) ← 0 None 2
SBIC P, b Skip if Bit in I/O Register P Cleared if (P(b)=0) PC ← PC + 2 or 3 None 1/2/3
SBIS P, b Skip if Bit in I/O Register P is Set if (P(b)=1) PC ← PC + 2 or 3 None 1/2/3
DDRx register
DDRx (Data Direction Register) configura la direcció de les dades en els pins dels ports. Quan escrivim un 0
en la posició n del registre DDRx el pin n actua com a entrada, mentre que si escrivim un 1 el pin corresponent
actua com a sortida.
Exemples :
- Fer que tots els pins del port B siguin entrades (DDRB  0b00000000):
LDI R20, 0b00000000
OUT DDRB,R20
- Fer que tots els pins del port B siguin sortides (DDRD  0b11111111)
LDI R20, 0b11111111
OUT DDRD,R20
- Fer els 4 LSB del port B sortides y els 4 MSB entrades (DDRB  0b00001111)
LDI R20, 0b00001111
OUT DDRB,R20

PINx register
PINx (Port IN) es fa servir per llegir les dades dels pins del port definits prèviament com a entrades. La lectura
dels pins definits com a sortides proporciona el valor escrit prèviament al port.
D’altra banda, quan s’escriu un 1 en una posició de bit del registre PINx definida com a sortida aquesta canvia
d’estat.
Tenim dos modes de entrada. Per una banda podem utilitzar els pins de entrada com a entrada tri-state (alta
impedancia) I per l'altra podem activar els resistors de pull up interns. Aquests modes es trien escrivint en
les posicions de bit corresponents a entrades en el registre PORTx.
Exemple:
- Llegir les dades del port B dins del registre 16.
LDI R20, 0X00 ; Set port B as input
OUT DDRB,R20 ;
IN R16,PINB ; Read contents of port B

PORTx register
El PORTx es fa servir amb dos propòsits.
1) Per a la sortida de dades, quan el port es configura com a sortida
En aquest cas s’han de posar a 1 els bits corresponents als pins de sortida en el registre DDRx. Ara es
poden escriure les dades de sortida en els pins respectius del PORTx.
Exemples:
1) Escriure el valor 0xFF al port B
//set all pins of port B as outputs Assembler:
DDRB = 0b11111111; LDI R20, 0b11111111 ; set all pins of port b as outputs
//write data on port B OUT DDRB,R20
PORTB = 0xFF; LDI R16, 0XFF ; write data on port
OUT PORTB,R1

2) Escriure al port D el contingut de la posició x=0x200 de SRAM


DDRD = 0xFF; //make port D as output
PORTD = (x); //output variable on port

3) to output data on only bit#0 of port C


DDRC |= 0b00000001; //set only pin#0 of port C as output
PORTC |= 0b00000001; //make it high
2) Per activar o no els resistors de pull up quan el port es configura com a entrada
Quan es posen a 0 els bits en el registre DDRx per definir els pins com a entrades, el bits corresponents del
PORTx es fan servir per activar, o no, els resistors de pull up associats al pin. Per activar el pull up s'ha
d’escriure un 1 i per deixarlo en estat d’alta impedancia s’ha d’escriure un 0.
Quan els pull up estan activats el valor lògic del pin per defecte és 1. Això vol dir que encara que no
connectem res es llegirà un 1. Aquesta configuració és la més adient per a connectar interruptors.
Quan s’utilizen les entrades del ADC del microcontrolador s'han de configurar els pins en mode tri-state (alta
impedancia).

Exemples :

• Definir el port B com a entrada amb els pull-ups habilitats i llegir les dades del port B
DDRB = 0x00; //make port B as input
PORTB = 0xFF; //enable all pull-ups
y = PINB; //read data from port B pins

• Definir el port D com a entrada tri state


DDRD = 0x00; //make port D as input
PORTD = 0x00; //disable pull-ups and make it tri state

• Definir els 4 LSB del port C com a sortida, i els 4 MSB com a entrades amb els pull-ups habilitats
DDRC = 0x0F; //lower nibble> output, higher nibble> input
PORTC = 0xF0; //lower nibble> set output pins to 0, //higher nibble> enable pull-ups
Traducido del inglés al español - www.onlinedoctranslator.com

El temporizador/contador 0 (TC0) es un módulo de temporizador/contador de 8 bits de uso general, con dos unidades de comparación de salida independientes y
compatibilidad con PWM. Permite una sincronización precisa de la ejecución del programa (gestión de eventos) y la generación de ondas.

TOV0(Requisito int. // TOIE0=1)

clcT0

T0

0x00 (Puerto_D.4)

TCNT0

OCF0A(Requisito int. // OCIE0A=1)

OC0A

WGM0[2:0] COM0A[1:0] (Puerto_D.6)


OCR0A 0xFF

MÁXIMO OCF0B(Requisito int. // OCIE0B=1)


Cada indicador de temporizador se borra
automáticamente cuando se ejecuta la
OC0B interrupción correspondiente.
Alternativamente, el software puede borrar el
ABAJO= 0x00
(Puerto_D.5) indicador escribiendo un '1' en la ubicación del
WGM0[2:0] COM0B[1:0]
OCR0B MÁX = 0xFF bit de E/S.

ARRIBA= {0xFF / OCR0A}


0x15
TIFR0 (Registro de indicador de interrupción del temporizador)
(0x35)

TCCR0A TCCR0B Poco 7 6 5 4 3 2 1 0

- - - - - OCF0B OCF0A TOV0

(0x6E) TIMSK0 (Registro de máscara de interrupción del temporizador)

Poco 7 6 5 4 3 2 1 0

- - - - - OCIE0B OCIE0A TOIE0 1


Preescalador para TIMER/CONTADOR 0 y TIMER/CONTADOR 1

00 1 234 567 01234 567


0
1 1
2 2

# CS02 CS01 CS00 Descripción


0 0 0 0 No hay fuente de reloj (temporizador/contador detenido).

1 0 0 1 CLKE/S/1 (Sin preescalado)


2 0 1 0 CLKE/S/8 (Desde el preescalador)

3 0 1 1 CLKE/S/64 (Desde el preescalador)

4 1 0 0 CLKE/S/256 (Desde el preescalador)

5 1 0 1 CLKE/S/1024 (Desde el preescalador)

6 1 1 0 Fuente de reloj externa en el pin T0. Reloj en flanco descendente.

7 1 1 1 Fuente de reloj externa en el pin T0. Reloj en flanco ascendente.

2
Vectores de interrupción en ATmega328/P
Vector Programa
Fuente Definición de interrupciones
No DIRECCIÓN

1 0x0000 REINICIAR Pin externo, reinicio de encendido, reinicio de caída y reinicio del sistema de vigilancia
2 0x0002 INT0 Solicitud de interrupción externa 0
3 0x0004 INT1 Solicitud de interrupción externa 1
4 0x0006 PCINT0 Solicitud de interrupción de cambio de pin 0

5 0x0008 PCINT1 Solicitud de interrupción de cambio de pin 1

6 0x000A PCINT2 Solicitud de interrupción de cambio de pin 2

7 0x000C WDT Interrupción de tiempo de espera de vigilancia

8 0x000E TIMER2_COMPA Temporizador/Contador2 Comparar partido A

9 0x0010 TIMER2_COMPB Temporizador/Contador2 Comparar partido B

10 0x0012 TIMER2_OVF Desbordamiento del temporizador/contador 2

11 0x0014 TIMER1_CAPT Evento de captura del temporizador/contador 1

12 0x0016 TIMER1_COMPA Temporizador/Contador1 Comparar Partido A

13 0x0018 TIMER1_COMPB Temporizador/Contador1 Comparar partido B

14 0x001A TIMER1_OVF Desbordamiento del temporizador/contador 1

15 0x001C TIMER0_COMPA Temporizador/Contador0 Comparar Partido A

dieciséis 0x001E TIMER0_COMPB Temporizador/Contador0 Comparar partido B

17 0x0020 TIMER0_OVF Temporizador/Contador0 Desbordamiento

18 0x0022 SPI Transferencia serial STC SPI completa


19 0x0024 USART_RX USART Rx completo
20 0x0026 USART_UDRE Registro de datos USART vacío
21 0x0028 USART_TX USART Tx completo
22 0x002A CAD Conversión ADC completa
23 0x002C EE LISTO EEPROM listo
24 0x002E COMPENSACIÓN ANALÓGICA Comparador analógico
25 0x0030 TWI Interfaz serie de 2 cables (I2C)
3
26 0x0032 GSP LISTO Memoria del programa de almacenamiento lista
La configuración de programa más típica y general para las direcciones de reinicio e interrupción de vectores es:

DIRECCIÓN Etiquetas Código Comentarios

0x0000 JMPREINICIAR ; Reiniciar


0x0002 JMPINT0 ; IRQ0
0x0004 JMPINT1 ; IRQ1
0x0006 JMPPCINT0 ; PCINT0
0x0008 JMPPCINT1 ; PCINT1
0x000A JMPPCINT2 ; PCINT2
0x000C JMPWDT ; Tiempo de espera de vigilancia
0x000E JMPTIM2_COMPA ; Temporizador2 CompararA
0x0010 JMPTIM2_COMPB ; Temporizador2 CompararB
0x0012 JMPTIM2_OVF ; Desbordamiento del temporizador 2

0x0014 JMPTIM1_CAPT ; Captura del temporizador 1


0x0016 JMPTIM1_COMPA ; Temporizador1 CompararA
0x0018 JMPTIM1_COMPB ; Temporizador1 CompararB
0x001A JMPTIM1_OVF ; Desbordamiento del temporizador 1

0x001C JMPTIM0_COMPA ; Temporizador0 CompararA


0x001E JMPTIM0_COMPB ; Temporizador0 CompararB
0x0020 JMPTIM0_OVF ; Desbordamiento del temporizador 0

0x0022 JMPSPI_STC ; Transferencia SPI completa;


0x0024 JMPUSART_RXC USART RX completo
0x0026 JMPUSART_UDRE ; Registro de datos USART vacío;
0x0028 JMPUSART_TXC USART TX completo
0x002A JMPCAD ; Conversión ADC completa ;
0x002C JMPEE_RDY EEPROM listo
0x002E JMPANA_COMP ; Comparador analógico
0x0030 JMPTWI ; Serie de 2 hilos
0x0032 JMPSPM_RDY ; Listo para GDS
;
0x0034 REINICIAR: LDIR16,ALTO(RAMENDAR) ; Inicio del programa principal
0x0035 AFUERASPH,R16 ; Establecer el puntero de pila en la parte superior de la RAM
0x0036 LDIR16,BAJO(RAMENDAR)
0x0037 AFUERASPL,R16
0x0038 SEI ; Habilitar interrupciones 4
TCCR0A Dirección de E/S: 0X24 (0X44) Restablecer: 0x00

Registros de control TC0: 7 6 5 4 3 2 1 0


TCCR0A COM0A1 COM0A0 COM0B1 COM0B0 ---- ---- WGM01 WGM00
TCCR0B
TCCR0B Dirección de E/S: 0X25 (0X45) Restablecer: 0x00

7 6 5 4 3 2 1 0
FOC0A FOC0B ---- ---- WGM02 CS02 CS01 CS0

Comparar modo de salida [OC0A]


COM0A1 COM0A0 No-PWM PWM rápido Modo PWM de fase correcta

0 0 Operación normal del puerto, OC0Adesconectado.

PalancaOC0A encendido WGM02 = 0: Funcionamiento normal del puerto, OC0ADesconectado.


0 1 WGM02 = 1:PalancaOC0A en Comparar coincidencia.
Comparar partido.

ClaroOC0A encendido ClaroOC0A en Comparar coincidencia. ClaroOC0A en Comparar coincidencia al realizar el conteo. Colocar
1 0
Comparar partido. ColocarOC0A en la parte inferior.Modo no inversor. OC0A en Comparar coincidencia cuando se realiza el conteo regresivo.

ColocarOC0A encendido ColocarOC0A en Comparar coincidencia. Claro ColocarOC0A en Comparar coincidencia al realizar el conteo. ClaroOC0A
1 1
Comparar partido. OC0A en la parte inferior.Modo inversor. en Comparar coincidencia cuando se realiza el conteo regresivo.

Comparar modo de salida [OC0B]


COM0B1 COM0B0 No-PWM PWM rápido Modo PWM de fase correcta

0 0 Operación normal del puerto, OC0Bdesconectado.

PalancaOC0B encendido
0 1 RESERVADO
Comparar partido.

ClaroOC0B encendido ClaroOC0B en Comparar coincidencia. ClaroOC0B en Comparar coincidencia al realizar el conteo. Colocar
1 0
Comparar partido. ColocarOC0B en la parte inferior.Modo no inversor. OC0B en Comparar coincidencia cuando se realiza el conteo regresivo.

ColocarOC0B encendido ColocarOC0B en Comparar coincidencia. Claro ColocarOC0B en Comparar coincidencia al realizar el conteo. ClaroOC0B
1 1
Comparar partido. OC0B en la parte inferior.Modo inversor. en Comparar coincidencia cuando se realiza el conteo regresivo. 5
TCCR0A Dirección de E/S: 0X24 (0X44)
Registros de control TC0:
Restablecer: 0x00

TCCR0A 7 6 5 4 3 2 1 0

TCCR0B COM0A1 COM0A0 COM0B1 COM0B0 ---- ---- WGM01 WGM00

TCCR0B Dirección de E/S: 0X25 (0X45) Restablecer: 0x00

7 6 5 4 3 2 1 0

FOC0A FOC0B ---- ---- WGM02 CS02 CS01 CS0

Modo WGM02 WGM01 WGM00 MODO TEMPORIZADOR ARRIBA Actualización de OCR0x en Bandera TOV activada

0 0 0 0 Normal 0xFF Inmediato MÁXIMO (0xFF)

2 0 1 0 CTC: Borrar temporizador en comparación de partidas OCRA Inmediato ARRIBA

3 0 1 1 PWMRápido 0xFF ABAJO MÁXIMO (0xFF)

7 1 1 1 PWMRápido OCRA ABAJO ARRIBA

1 0 0 1 PWMFase correcta 0xFF ARRIBA ABAJO (0x00)


5 1 0 1 PWMFase correcta OCRA ARRIBA ABAJO (0x00)??
4 1 0 0 Reservado - - -
6 1 1 0 Reservado - - -

Modo normal, WGM0[2:0] = 0x0

Es el modo de operación más simple: la dirección de conteo siempre es hacia arriba (incrementando) y no se realiza ningún borrado del contador.

El contador simplemente se sobrepasa cuando pasa su valor máximo de 8 bits (MAX=0xFF) y luego se reinicia desde abajo (0x00), el indicador de desbordamiento del temporizador/contador (TOV0) se
configurará en el mismo ciclo de reloj en el que se convierte el TCNT0. cero.

El indicador TOV0 se borra cuando se toma la interrupción de desbordamiento del temporizador. La resolución del temporizador se puede aumentar mediante software y se puede escribir un nuevo valor del contador en cualquier momento.

La unidad de comparación de salida se puede utilizar para generar interrupciones en un momento dado. No se recomienda utilizar Output Compare para generar formas de onda en
modo Normal, ya que esto ocupará demasiado tiempo de CPU.

6
Borrar temporizador en modo Comparar coincidencia (CTC), WGM0[2:0]=0x2

En Borrar temporizador en comparación, el registro OCR0A se utiliza para manipular la resolución del contador: el valor del contador (TCNT0) aumenta hasta que se produce una
comparación entre TCNT0 y OCR0A, y luego el contador (TCNT0) se borra a cero.

El OCR0A define el valor SUPERIOR del contador y, por tanto, también su resolución. Este modo permite un mayor control de la frecuencia de salida de comparación. También simplifica
el recuento de eventos externos.

OCF0A, bandera establecida

OCR0A4
OCR0A1
OCR0A2
OCR0A3
TCNT0

COM0A[1:0]=1
OC0A (Palanca)

Se puede generar una interrupción cada vez que el valor del contador alcanza el valor SUPERIOR utilizando el indicador OCF0A. Si la interrupción está habilitada, la rutina del controlador
de interrupciones se puede usar para actualizar el valor SUPERIOR en OCR0A. Sin embargo, cambiar TOP a un valor cercano a BOTTOM cuando el contador se está ejecutando sin ningún
valor de preescalador o con un valor bajo se debe hacer con cuidado ya que el modo CTC no tiene la función de doble almacenamiento en búfer. Si el nuevo valor escrito en OCR0A es
menor que el valor actual de TCNT0, el contador perderá la comparación. Luego, el contador tendrá que contar hasta su valor máximo (0xFF) y comenzar en 0x00 antes de que pueda
ocurrir la comparación. En cuanto al modo de operación Normal, el indicador TOV0 se configura en el mismo ciclo del temporizador en el que el contador cuenta desde MAX hasta 0x00.

Para generar una salida de forma de onda en modo CTC, la salida OC0A se puede configurar para alternar su nivel lógico en cada comparación configurando los bits del modo de salida
de comparación en modo de alternancia (COM0A1:0 = 1). El valor OC0A no será visible en el pin del puerto a menos que la dirección de datos del pin esté configurada en salida. La forma
de onda generada tendrá una frecuencia máxima de fOC0=fclk_E/S/2 cuando OCR0A se establece en cero (0x00). La frecuencia de la forma de onda está definida por la siguiente ecuación:

ElnorteLa variable representa el factor de preescala (1, 8, 64, 256 o 1024).

7
Modo PWM rápido (WGM02:0 = 3 o 7)

El modo rápido de modulación de ancho de pulso o PWM rápido proporciona una opción de generación de formas de onda PWM de alta frecuencia. El rápido PWM tiene unoperación de
pendiente única. El contador cuenta desde ABAJO hasta ARRIBA y luego se reinicia desde ABAJO. (TOP = 0xFF cuando WGM2:0 = 3, y TOP = OCR0A cuando WGM2:0 = 7).

En el modo de comparación de salida no inversora, la comparación de salida (OC0A) se borra en la comparación entre TCNT0 y OCR0A, y se establece en ABAJO. En el modo de inversión de salida de
comparación, la salida se configura en comparación y se borra en la PARTE INFERIOR.

Debido a la operación de pendiente única, la frecuencia de operación del modo PWM rápido puede ser dos veces mayor que la del modo PWM de fase correcta que utiliza operación de pendiente doble. Esta
alta frecuencia hace que el modo rápido PWM sea muy adecuado para aplicaciones de regulación de potencia, rectificación y DAC. La alta frecuencia permite componentes externos de tamaño físicamente
pequeño (bobinas, condensadores) y, por lo tanto, reduce el costo total del sistema.

En el modo PWM rápido, el contador aumenta hasta que el valor del contador coincide con el valor SUPERIOR. Luego, el contador se borra en el siguiente ciclo del reloj del temporizador. El diagrama de tiempos
para el modo PWM rápido se muestra en la figura. El valor TCNT0 se encuentra en el diagrama de tiempos que se muestra como un histograma para ilustrar la operación de pendiente única. El diagrama incluye
salidas PWM invertidas y no invertidas. Las pequeñas marcas de líneas horizontales en las pendientes de TCNT0 representan coincidencias de comparación entre OCR0x y TCNT0.

ARRIBA

_/
=
ABAJO
× 256
norte= {1, 8, 64, 256 o 1024}

8
Modo PWM de fase correcta
El modo PWM de fase correcta (WGM02:0 = 1 o 5) proporciona una opción de generación de forma de onda PWM de fase correcta de alta resolución.
El modo PWM de fase correcta se basa en una operación de doble pendiente. El contador cuenta repetidamente de ABAJO a ARRIBA y luego de ARRIBA a ABAJO. TOP se define como 0xFF cuando WGM2:0 = 1 y
OCR0A cuando WGM2:0 = 5. En el modo de comparación de salida sin inversión, la comparación de salida (OC0x) se borra en la coincidencia de comparación entre TCNT0 y OCR0x durante el conteo ascendente
y se configura. en la comparación mientras se realiza el recuento regresivo. En el modo de inversión de comparación de salida, la operación se invierte.

La operación de doble pendiente tiene una frecuencia de operación máxima más baja que la operación de pendiente única. Sin embargo, debido a la característica simétrica de los modos PWM de doble
pendiente, estos modos se prefieren para aplicaciones de control de motores. En el modo PWM de fase correcta, el contador aumenta hasta que el valor del contador coincide con TOP. Cuando el contador llega
a TOP, cambia la dirección de conteo. El valor TCNT0 será igual a TOP durante un ciclo de reloj del temporizador. En la figura se muestra el diagrama de temporización para el modo PWM de fase correcta. El
valor TCNT0 se encuentra en el diagrama de tiempos que se muestra como un histograma para ilustrar la operación de doble pendiente. El diagrama incluye salidas PWM invertidas y no invertidas. Las pequeñas
marcas de líneas horizontales en las pendientes de TCNT0 representan coincidencias de comparación entre OCR0x y TCNT0.

ARRIBA

ABAJO

ARRIBA

_/
ABAJO =
× 512
norte= {1, 8, 64, 256 o 1024}

También podría gustarte