Introducción El Atmega328 AV Atmega328 AVR R 8-bit 8-bit es es un Circuito integrado de alto rendimiento que está basado un microcontrolador RISC RISC,, combinando 32 K IS! "las# "las# una una memoria con la ca$acidad de leermientras-escribe, % K de memoria EE!R&' EE!R&',, 2 K de SRA' SRA',, 23 l(neas de E)S de $ro$*sito general, 32 registros registros de de $roceso general, tres tem$ori+adores "leibles) contadores contadores con con modo de com$araci*n, interru$ciones interru$ciones internas internas eternas, $rogramador de modo .SAR/ .SAR/,, una inter"ace serial orientada a bte de 2 cables, S!I S!I$uerto $uerto serial, 0-canales %1-bit Conersor A) 48-c#anales A) 48-c#anales en /56! /56! 567 567))'6 '6$ac9ages:, $ac9ages:, ;
=> oltios= !or medio de la e?ecuci*n de $oderosas instrucciones en un solo ciclo de relo?, el dis$ositio alcan+a una res$uesta de % 'I!S 'I!S,, balanceando consumo de energ(a elocidad de $roceso=
Objetivo
Construir un contador de eventos generados con un botón con salida en un display de 7 segmentos donde la salida deberá ir de 0 a 9, para después reiniciar nuevamente en 0. Planteamiento de hardware
Realizaremos el contador por interrupciones mostrando la salida en un display de 7 segmentos, debido a que generamos un lógico en la salida del microcontrolador usamos un display de cátodo com!n, ya que este display tiene conectados entre s" todos los cátodos y solo se encenderán cuando se genere un ánodo en cualquier pin.
Como sabemos solamente debemos encender una secuencia de leds en un orden espec"#co, entonces generaremos los n!meros del display en $e%adecimal& 0''( 0%)* 1 >0x 0 6 2 >0 x 5 B 3 >0 x 4 F
4 >0x 6 6 5 >0x 6 D 6 >0x 7 C 7 >0x 0 7 8 >0 x 7 F 9 >0 x 6 6 7
+a salida debe incrementarse en cada vez que se presione el botón, consideraremos que el usuario tarda entre 0 y )00 m- al presionar un botón y que las operaciones del C/ están en el orden de microsegundos, por lo que es conveniente usar un delay para que la salida no se incremente en orma desmedida y una segunda evaluación para eliminar el ruido. Diseño del software
Resultados
*inalmente con ayuda del sot1are 2roteus 3 proessional simulamos el circuito para observar el comportamiento del sistema antes de montarlo en un protoboard, como se observa la simulación resulto ser satisactoria.
Conclusiones
-ánc$ez -ilva -alvador 4le5andro 6s importante sealar que se debe tomar la correcta lectura de la entrada debido a que si no es adecuada puede ocasionar una singularidad en la e5ecución del código y provocar un mal uncionamiento del circuito, también nos dimos cuenta de la versatilidad del lengua5e c, ya que al ser de alto nivel es más comprensible a nivel cognitivo . 8arc"a uanillo :onaldo Como nos dimos cuenta es vital estar $aciendo constantemente la evaluación de nuestros contadores para evitar problemas de secuencia, as" como también escoger un tiempo de retardo adecuado para la interacción del usuario al realizar las interrupciones. Camarillo oreno ;rlando -alvador Con base en lo realizado en la práctica yo concluyo que el traba5ar en lengua5e c por ser de mas alto nivel que ensamblador puede resultar en ocasiones más sencillo , sin embargo siempre queda la posibilidad de llamar instrucciones de ensamblador en nuestro código en c cuando consideremos conveniente para ayudar a optimizar el uncionamiento de nuestro sistema. Apendice io.$( delay.$( int main?void@ A int iB int cont0DEA0%)*,0%0F,0%G,0%H*,0%FF,0%F:,0%7C,0%07,0%7*,0%F7IB ::R:E0%**B ::RGE0%00B 2;RJGE0%**B 1$ile?@ AiE0B 1$ile?i=0@A 2;RJ:EcontiDB i ?K?2LMG N @@ AiOOBPdelayPms?Q30@BI I II
Reerencias& '*elipe -antiago 6spinosa ?Q0Q@. +;LCR;C;MJR;+4:;R6- 4R :6 4J6+. Sua5uapan de león, ;a%aca.