Kampi
20.02.2014, 16:43
Hallo Forum,
ich will gerade die Interrupts von meinem AT90USBKey verwenden und habe mir Testweise ein Programm geschrieben, was mir eine Meldung ausgibt wenn ein Interrupt aktiviert wurde.
Im Moment löse ich die Interrupts über den verbauten Joystick aus, aber nach einer bestimmten Anzahl an Interrupts reagiert der Mikrocontroller nicht mehr. Die Anzahl ist dabei aber immer Unterschiedlich...
Weiß jemand woran das liegen kann?
Mein Code ist folgender;
/*
* Interrupt.c
*
* Created: 20.02.2014 07:15:06
* Author: Daniel.KAmpert
*/
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "uart.h"
void Setup(void);
ISR(INT4_vect)
{
uart_puts("INT4 Interrupt!\n\r");
}
ISR(INT5_vect)
{
uart_puts("INT5 Interrupt!\n\r");
}
int main()
{
Setup();
for (;;)
{
}
}
void Setup(void)
{
// UART initialisieren
uart_init(UART_BAUD_SELECT(57600, 8000000));
// IO als Ausgang einstellen
DDRE &= (0<<DDE4) & (0<<DDE5);
// Pull-up Widerstände einschalten
PORTE |= (1<<PE4) | (1<<PE5);
// Interrupt bei fallender Flanke
EICRB = (1<<ISC41) | (0<<ISC40) | (1<<ISC41) | (0<<ISC40);
// Interrupts aktivieren
EIMSK = (1<<INT4) | (1<<INT5);
// Globale Interrupts freigeben
sei();
}
Danke für die Hilfe!
ich will gerade die Interrupts von meinem AT90USBKey verwenden und habe mir Testweise ein Programm geschrieben, was mir eine Meldung ausgibt wenn ein Interrupt aktiviert wurde.
Im Moment löse ich die Interrupts über den verbauten Joystick aus, aber nach einer bestimmten Anzahl an Interrupts reagiert der Mikrocontroller nicht mehr. Die Anzahl ist dabei aber immer Unterschiedlich...
Weiß jemand woran das liegen kann?
Mein Code ist folgender;
/*
* Interrupt.c
*
* Created: 20.02.2014 07:15:06
* Author: Daniel.KAmpert
*/
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "uart.h"
void Setup(void);
ISR(INT4_vect)
{
uart_puts("INT4 Interrupt!\n\r");
}
ISR(INT5_vect)
{
uart_puts("INT5 Interrupt!\n\r");
}
int main()
{
Setup();
for (;;)
{
}
}
void Setup(void)
{
// UART initialisieren
uart_init(UART_BAUD_SELECT(57600, 8000000));
// IO als Ausgang einstellen
DDRE &= (0<<DDE4) & (0<<DDE5);
// Pull-up Widerstände einschalten
PORTE |= (1<<PE4) | (1<<PE5);
// Interrupt bei fallender Flanke
EICRB = (1<<ISC41) | (0<<ISC40) | (1<<ISC41) | (0<<ISC40);
// Interrupts aktivieren
EIMSK = (1<<INT4) | (1<<INT5);
// Globale Interrupts freigeben
sei();
}
Danke für die Hilfe!