Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/07/2014 #1


Contador de pulsos en simultáneo Atmega16
Hola a todos, estoy tratando de hacer un programa en Assembler utilizando un Microcontrolador Atmega16. El punto es que necesito contar pulsos generados por 2 fuentes distintas en simultáneo, es decir tengo 4 entradas (sensores), que detectan presencia de un objeto y generan un pulso. Dos de los cuales son los sensores principales (sensor 1 y sensor 3) y deben activar una interrupción para iniciar el conteo de objetos detectados por los otros dos( sensor 2 y sensor4). El arreglo es en parejas es decir "sensor 1 y 2" y "sensor 3 y 4". El sensor principal (1 ó 3) al recibir un pulso activa una interrupción (int 0 o int 1) que activarán la subrutina de conteo de los sensores 2 y 4. Adicionalmente quisiera comparar los conteos de cada par de sensores, para lo cual tengo que obligatoriamente contar los pulsos de los sensores 1 y 3.

Pero no se como hacerlo . :(

Alguien tiene una idea de como hacer un contador de pulsos en simultáneo? Para contar los pulsos en dos puertos a la vez? Es esto posible? Debo cambiar de microcontrolador???? El clásico contador de pulsos o flancos es por interrupción, pero tengo las interrupciones ocupadas y me encuentro mentalmente bloqueada ... No tengo muchas ideas alguien x ahí tendrá alguna???????? Gracias
11/07/2014 #2

Avatar de Ajna

Algo que a mi me costaba trabajo entender y por lo cual pensaba que ciertos programas no se podian hacer, era el hecho de que el microcontrolador es muy muy rapido, al grado de parecer que esta todo el tiempo al tanto de X cosa, pero bueno volviendo al tema, una solucion rapida seria recurrir a otro micro que tenga interrupciones en todos los puertos, como la mayoria de los attiny, en estos cada ves que cambia de estado un PIN te lo indica con una interrupcion, la segunda seria hacer que cualquiera de las señales de los 4 sensores activen a INT0, ya luego solo es cuestion de ejecutar la interrupcion y ver quien fue el chistosito que disparo la INT0, luego la vuelves activar y asi sucesivamente, obvio cada interrupcion anotas en algun registro quien fue el que activo Y/O sumas las interrupciones, y la ultima seria estar todo el tiempo revisando el puerto y ver si algun PIN cambio, cosa que no es nada recomendable porque se llevaria todo el tiempo del CPU
15/07/2014 #3

Avatar de Daniel Meza

No entiendo bien, si los pulsos son simultáneos ¿no bastará con sólo detectar uno de ellos?. Como consejo, si se te han acabado las interrupciones disparadas por flanco puedes auxiliarte de la entrada de reloj de algún Timer; bastará con cargarlo con un número menor al de desborde, por ejemplo, para un Timer de 8 bits, lo cargas con 255 y al ingresar un pulso más se desbordará generando una interrupción (previamente habilitada)

Saludos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.