CR). Aumenta TIME. Entonces, sólo cae a través de la rutina INT01 común, ya que contiene ningún salto o una instrucción de retorno. Podríamos también han puesto en una rjmp INT01 aquí también. Pero nosotros no lo necesitamos. Aunque puede ser una práctica bien común para ser consecuente con esto :-) Ahora, echa un último mira esta figura para recordar, antes de moverlo. La interrupción dedesbordamiento del temporizador Después de afirmar nuestro éxito con el experimento anterior, estamos va a mejorar este pequeño diseñar un poco más. Vamos para añadir otra interrupción en el aplicación, un desbordamiento del Timer interrumpir el temporizador / contador 0 de la 8515. Además, vamos para abastecer un pequeño altavoz para hacer algo de ruido. Si cree que los requisitos de hardware para esteproyecto se están volviendo muy de la demanda ing ahora, usted no tiene que conectar el altavoz. Es por ilustrativos Purpo- es único, y su código funcionará perfectamente bien sin él. Todo camino que, verá cómo configurar la alarma de desbordamiento del temporizador y escribir el código del controlador para ello. Temporizador de desbordamiento 0 El 8515 tiene dos timer / contadores, un 8 bits deancho y un ancho de 16 bits. Esto significa que son capaces de contar a partir de cualquier valor establecido, hasta que se alcanzan su límite que es determinado por el número de bits disponible (256 o 65535, respectivamente). Luego se emitirá una interrupción, si lo ha creado para hacerlo. Al desbordarse, y el contador del temporizador / sólo sigue contando "en torno a" la gama ... así que siusted ha ajustado el temporizador a partir de un valor especial y queremos que comenzar desde allí otra vez, usted tendrá que restablecer ese valor. Lo que necesitamos que hacer en el código, es añadir tres pequeños bloques de código más. Estas son (podría Supongo que ellos)?: 1. Otro vector de interrupción, para la TimerOverflow 0 interrupción: OVF0addr 2. Inicialización código de temporizador /contador 0: TIMSK, TCCR0, TCNT0 3. La subrutina de manejo de interrupciones. OVF0addr Este es el nombre del conjunto en el archivo 8515def.inc para la ubicación en este inter- vector Rupt debe residir (marque el mismo, podría estar tomando el pelo). Añadimos estos dos líneas de código al bloque vector: , - Vector de interrupción nuevo - . Org OVF0addr rjmp TimerV0 ; T/C0 desbordamiento vector ATMELAPLICACIONES DIARIO
Página 6
www.atmel.com página 16 Usted es muy capaz de leer esto ahora, y se dan cuenta de que es igual que el ante- ous. org Es en este programa. Vamos a seguir adelante! TIMSK, TCCR0, TCNT0 En conjunto, estos tres registros son todo lo que necesitamos para tener en cuenta las interrupciones temporales en una aplicación en el AVR. TCCR0 controla el funcionamiento deltemporizador / contador 0. La cuenta se incrementa para cada señal de reloj en la entrada del temporizador. Pero la entrada de reloj puede ser seleccionado, y por preescalado N. Vamos a considerar los 3 bits más bajos de este registrarse: Esta tabla muestra los ajustes diferentes de estos tres bits de control: TIMSK, la interrupción de temporizador / contador registro de máscara no es más que una"máscara" regis- ter para activar / desactivar las interrupciones como usted ya se ha visto con la GIMSK registro: ... Y otra vez, lo único que realmente necesita saber para este pequeño tutorial, es la posición de un poco especial: esto se llama "Timer/Counter0 Interrupción de desbordamiento permitir ", abreviado" TOIE0 ", y encontró en el bit postition 1 de este registro. Para que nuestro Timerinterrumpir, establecer este bit ("1"). TCNT0 es la real "Timer / Counter" registrarse. Aquí es donde la sincronización y conteo se realiza, de acuerdo con los ajustes en TCCR0. Esto es simplemente una registro para almacenar un valor de contador, no hay bits de especial en él. Es enteramente lectura / escritura, por lo que puede cargar con cualquier valor deseado de partida para su cuenta si lo desea....
Leer documento completo
Regístrate para leer el documento completo.