Você está na página 1de 14

EXAMEN 1

Temporizador / timer Aaron Alan Orozco Grajeda 94479 Email: aaorg01@gmail.com Ingeniera en Mecatrnica UACJ, IIT, Industrial y Manufactura Materia: Sistemas embebidos Profesor: Juan de Dios Cota Ruiz 27 de septiembre

Todos los contadores de tiempo depende de la hora del sistema de su sistema Arduino . Normalmente, el reloj del sistema es de 16 MHz. El hardware de temporizador se puede configurar con algunos registros especiales temporizador . En el firmware Arduino todos los temporizadores estaban configurados para una frecuencia de 1 kHz y las interrupciones estn habilitadas. Timer0 es un temporizador de 8 bits. En el mundo timer0 Arduino se ha utilizado para las funciones del temporizador , como delay () , millis () y micros (). Si cambia TIMER0 registros, esto puede influir en la funcin de temporizador Arduino . Timer1 es un temporizador de 16 bits. En el mundo de Arduino la biblioteca Servo utiliza timer1 en Arduino Uno. Timer2 es un temporizador de 8 bits como timer0 . En el trabajo de Arduino el tono () funcin utiliza temporizador 2 . Timer 3,4,5 slo estn disponibles en Arduino Mega tablas. Estos temporizadores son temporizadores de 16 bits . Timer Registro Usted puede cambiar el comportamiento del temporizador a travs del registro del temporizador. Los registros ms importantes del temporizador son: TCCRx - Temporizador / contador de registro de control . El prescaler se puede configurar aqu.

TCNTx - Temporizador / Contador Registro. El valor actual del temporizador se almacena aqu . OCRx - Salida Compara Registro ICRx - Entrada Captura Registro (slo para el temporizador de 16 bits ) TIMSKx - Temporizador / Contador registro de mscara de interrupcin . Para habilitar / deshabilitar las interrupciones del temporizador.

TIFRx - Temporizador / Contador Flag Registro de interrupcin . Indica una interrupcin de temporizador en espera . Reloj de seleccin y la frecuencia del temporizador Diferentes fuentes de reloj se pueden seleccionar para cada temporizador de forma independiente. Para calcular la frecuencia del temporizador ( por ejemplo, 2 Hz utilizando Timer1 ) , necesitar: CPU Frecuencia 16Mhz para Arduino. Valor mximo contador del temporizador ( 256 para 8 bits, 65.536 de temporizador de 16 bits ) Divida la frecuencia de la CPU a travs de la cadena seleccionada prescaler (16000000/256 = 62500 ) Divida resultado a travs de la frecuencia deseada ( 62500 / 2 Hz = 31250 )

modos de temporizador Los temporizadores pueden estar configurados en diferentes modos . Modo PWM . El modo de modulacin de anchura de Pulth . las salidas OCxy se utilizan para generar seales PWM Modo de CTC . Borrar temporizador en comparacin partido . Cuando el contador cronmetro alcance el partido comparar registro , se borrar el temporizador

Temporizador de desbordamiento : Desbordamiento del temporizador significa que el temporizador ha alcanzado es el valor lmite. Cuando se produce una interrupcin de desbordamiento del temporizador , el temporizador de desbordamiento poco TOVx se encuentra en el indicador de interrupcin registro TIFRx . Cuando se active la alarma de desbordamiento del temporizador TOIEx bit de la mscara de interrupcin registro TIMSKx se establece, el temporizador de desbordamiento de interrupcin el servicio de rutina ISR ( TIMERx_OVF_vect ) ser llamado. Comparacin de salida del partido : Cuando una salida de comparar interrupcin partido ocurre , la bandera OCFxy se encuentra en el indicador de interrupcin registro TIFRx . Cuando la salida de comparar interrumpir bit de habilitacin OCIExy en el registro de mscara de interrupcin TIMSKx se establece , la salida de comparar coincidir interrupcin de servicios ISR ( TIMERx_COMPy_vect ) rutina ser llamado. Timer Captura de entrada: Cuando se produce una interrupcin de la captura de entrada del temporizador , la entrada de captura de bandera de bits ICFx se encuentra en el indicador de interrupcin registro TIFRx . Cuando la toma de entrada de interrupcin permitir ICIEX bit de la mscara de interrupcin registro TIMSKx se establece, el temporizador de entrada de captura interrupcin servicio rutina ISR ( TIMERx_CAPT_vect ) ser llamado.

PWM y temporizador Existe una relacin fija entre los temporizadores y las salidas capaces PWM. Cuando nos fijamos en la hoja de datos o la disposicin de las patillas del procesador de estos pines capaces PWM tienen nombres como OCRxA , OCRxB o OCRxC (donde x significa el nmero de temporizador 0 .. 5 ) . La funcin PWM es a menudo compartida con otras funciones pin. El Arduino tiene 3 Timers y 6 pines de salida PWM . La relacin entre los temporizadores y salidas PWM es : Patillas 5 y 6 : controlado por timer0. Pines 9 y 10: controlados por timer1. Pines 11 y 3: controladas por temporizador 2. Desarrollo Se armo un circuito con 7 pulsadores y 6 interruptores con una resistencia de 1k. Los siete pulsadores son para las teclas del piano y los interruptores para los armnicos como se muestra en la siguiente imagen.

PINA0 PINA1 PINA2 PINA3 PINA4 PINA5

PIND7 PIN6 PIN5 PIN4 PIN3 PIN2 PIN0

Para la bocina se utiliso dos capacitores de 10 micro faradios y una resistencia de 33 como se muestra en la figura.
PIN 8

Cada boton combinado con los acordes debe generar una salida con cierta frecuencia las culaes son las de las ciguiente tabla

Armonicos 0 1 2 3 4 5 Cdigo void setup() {

Do 261 522 783 1044 1305 1566

Re 294 588 882 1176 1470 1764

Mi 330 660 990 1320 1650 1980

Fa 349 698 1047 1320 1747 2094

Sol 392 784 1176 1568 1960 2352

La 440 880 1320 1760 2200 2640

Si 496 988 1482 1976 2470 2964

Serial.begin(9600); DDRD &=1; DDRC &=0; PORTC |=1; PORTD |=248; //PCICR=4; //PCMSK20=248; cli(); TCCR1A=0; TCCR1B=0; DDRB |=0X01; //PORTB.0 Output TIMSK1 |=0X02; // Enable Timer compare Interrupt TCCR1B |=0x09; //4-mode star time //OCR1A = 3000; sei(); } int y,x=0,i,j,a,b,n=0; double f,f1[6][8]={{261,294,330,349,392,440,494},{522,588,660,698,784,880,988},{783,

882,990,1047,1176,1320,1482},{1044,1176,1320,1396,1568,1760,1976},{1305, 1470,1650,1747,1960,2200,2470},{1566,1764,1980,2094,2352,2640,2964}};

void loop() { //int a=0;

while (1) {

if((PIND & 128)==128) { } else { x=6; a=1; b=1; } if((PIND & 64)==64) { } else { x=5; a=1;

b=1; }

if((PIND & 32)==32) { } else { x=4; a=1; b=1; } if((PIND & 16)==16) { } else { x=3; a=1; b=1; }

if((PIND & 8)==8) { } else {

x=2; a=1; b=1; } if((PIND & 4)==4) { } else { x=1; a=1; b=1; } if((PIND & 1)==1) { } else { x=0; a=1; b=1; }

if((PINC & 1)==1) {

else { y=0; } if((PINC & 2)==2) {

} else { y=1; } if((PINC & 4)==4) {

} else { y=2; } if((PINC & 8)==8) {

} else { y=3;

} if((PINC & 16)==16) {

} else { y=4; } if((PINC & 32)==32) {

} else { y=5; //Serial.println(y); }

i=x; j=y;

f=f1[j][i]; Serial.println(f); OCR1A = 16000000/(2*f); b=0;

} }

ISR(TIMER1_COMPA_vect) { int li; if(a==1) { PORTB = PORTB^0X01; li=1; } if((li==1)&&(b==0)) { n++; } if(n==200) { n=0; a=0; li=0; } } Conclusin El timer en modo cuatro nos permite controlar la frecuencia de salida de los puertos, as como tambin nos da la posibilidad de activar y desactivar puertos al cumplirse las condiciones que programemos.

Existen diferentes tipos de desactivar un puerto por medio de un timer, ya sea parando el timer o desactivando el puerto. desactivando el puerto da la ventaja de poder realizar conteos y manipular otros puertos afectndolos individualmente por lo que en al manejar barios puertos con el timer en modo cuatro lo mejor es activar y desactivar los puertos de salida.

Você também pode gostar