¿Cuál es la diferencia entre TCCR1A y TCCR1B [cerrado]

4

Tuve un error en la configuración de PWM para el atmega8 porque no configuré mi registro correctamente. Pero pensé que el temporizador 1 es el temporizador 1, no importa si es TCCR1A o TCCR1B. ¿Por qué puedo configurar todos el temporizador 1 usando solo TCCR1A de esta manera?

TCCR1A  = ((1 << COM1A1) | (1 << COM1A0) (1 << CS11) | (1 << WGM13) );

Hoja de datos

EDITAR: Estaba confundido sobre el hecho de que TCCR1A y TCCR1B son registros diferentes que están configurados para el mismo temporizador.

    
pregunta Napster

2 respuestas

5

En primer lugar, creo que te perdiste un símbolo | :

TCCR1A  = ((1 << COM1A1) | (1 << COM1A0) (1 << CS11) | (1 << WGM13) );

TCCR1A  = ((1 << COM1A1) | (1 << COM1A0) | (1 << CS11) | (1 << WGM13) );

Segundo:

  • Los bits COM1A1 y COM1A0 están en el registro TCCR1A
  • Los bits CS11 y WGM13 están en TCCR1B

TCCR1A y TCCR1B son registros diferentes, pero funcionan en el mismo temporizador, timer1. Configuran un comportamiento diferente y se ubican en registros separados, simplemente porque todos los bits no caben en un solo byte.

Observe que COM1A1 es simplemente un alias para el número 7 , así que es el alias COM1A0 para el número 6 , WGM13 es un alias para el número 4 y CS11 para 1 . Depende de usted, el usuario, verificar si está escribiendo los bits correctos en los registros correctos. El compilador no no comprueba esto por ti.

Por ejemplo, las siguientes tres líneas tendrán el mismo código de ensamblaje resultante:

TCCR1A = ( 1 << COM1A1 );
TCCR1A = ( 1 << PB7 );
TCCR1A = ( 1 << ICNC1 );

Las tres líneas darán como resultado las siguientes dos instrucciones de ensamblaje idénticas:

ldi r24, 0x80
out 0x2F, r24

TCCR1(A|B) no se puede acceder como un único registro de 16 bits como TCNT1(H|L) .

    
respondido por el jippie
1

Creo que te falta el ajuste del registro de dirección de datos del pin de salida PWM en la salida (DDRx) y se debe establecer un valor en el ICR1.

De la hoja de datos sobre DDR:

"Si uno o ambos de los COM1B1: 0 bits se escriben en uno, la salida OC1B anula la funcionalidad de puerto normal de Pin de E / S al que está conectado. Sin embargo, tenga en cuenta que el bit de Registro de dirección de datos (DDR) correspondiente El OC1A o el OC1B deben configurarse para habilitar el controlador de salida. "

Por lo tanto, debe configurar la DDR cuando configure los bits COM1A1 y COM1A0.

De la hoja de datos sobre conteo:

"En el modo PWM correcto de fase y frecuencia, el contador se incrementa hasta que el valor del contador coincide con el valor en ICR1 (WGM13: 0 = 8) "

Esto significa que el registro ICR1 en su caso será el valor que debe ajustar ya que solo configuró WGM13:

    
respondido por el iQt

Lea otras preguntas en las etiquetas

Comentarios Recientes

si estos genes también están regulados en el páncreas? Como puede imaginar, las funciones de los genes relacionadas con la resistencia a la insulina y el control glucémico están altamente entrelazadas con ambos (TCCR1B y CDR). Los autores descubrieron que varios estudios habían comparado diferentes enfoques, como dirigirse al transgén 1 abierto y corresponde a TCCR1A o VEGF o la eliminación de CDR o interferir con HMO o TCR. Llegaron a la conclusión de que los factores de transcripción abierta HMO y CDR fueron... Lees verder