Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problemas con las interrupciones de mi AVR ATmega2056
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="EduardoVT, post: 1248189, member: 486013"] Sobre lo del rebote, no soy un novato en eso de la programación, por años programé microcontroladores de Microchip en MPLAB y utilicé interrupciones por lo que conozco el problema del rebote y que se puede eliminar por hardware sin problemas. El detalle es que dejé de programar micros desde hace 2 años y los estoy retomando pero ahora con AVRs (no me gusta arduino, por eso no lo trabajo, pero las placas de AVR de arduino son baratas por eso decidí comprar un Arduino Mega, pero con el fin de trabajarlo en C) pero no tengo compañeros cercanos que sepan de éste tema, por eso me di a la tarea de escribir y poder tener un comentario constructivo y poder resolvr este problema rápido para poder añadirle más funciones y terminar mi proyectito. Ale sergi: Muchas gracias por el comentario, lo voy a tomar en cuenta para ver si jala. [ATTACH=full]173803[/ATTACH] Les comparto el diagrama de conexiones (tal como se muestra en proteus lo conecté físicamente), así me ha servido con muchos proyectos anteriores cuando utilizaba PICs, pero si hay algún comentario para mejorarlo, agradezco sus comentarios Ahora muestro mi programa reducido que aún sigue sin funcionar para saber si pudieran apoyarme. [CODE=c]#define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> char Up=0, Down=0; ISR (INT0_vect) { PORTA = 0xFF; EIFR |= (1<<INTF0); Up = 1; EIFR &=~ (1<<INTF0); _delay_ms(100); } ISR (INT1_vect) { PORTA = 0x00;; EIFR |= (1<<INTF1); Down = 1; EIFR &=~ (1<<INTF1); } void Config() { //---------------------- INTERRUPTS --------------------------------- cli(); //Disable interrupts EICRA |= (1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(1<<ISC00); PCICR |= (1<<PCIE0); EIMSK |= (1<<INT0)|(1<<INT1); sei(); //Enable Interrupts DDRA = 0xFF; DDRD = 0x00; _delay_ms(50); } int main(void) { Config(); while(1) { PORTA |= (1<<PINA0); _delay_ms(50); PORTA &=~ (1<<PINA0); _delay_ms(50); if(Up) { _delay_ms(1000); Up=0; } if(Down) { _delay_ms(1000); Down=0; } } return 0; }[/CODE] [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Problemas con las interrupciones de mi AVR ATmega2056
Arriba