Hallo Zusammen,
wie oben schon steht habe ich ein ganz komisches Problem mit folgendem Code
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "uart.h"
#define UART_BAUD_RATE 9600
ISR(PCINT_vect)
{
uart_puts("A pin change interrupt occurred!");
}
int main(void)
{
DDRB = 0x00; //set pins as output
PORTB |= (1<<PB0) | (1<<PB1); //activate pullup
PCMSK |= (1<<PCINT0) | (1<<PCINT1); //mask port
GIMSK |= (1<<PCIE); //activate PCinterrupts
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
sei();
while(1)
{
uart_puts("Noch alles in Ordnung?\r\n");
_delay_ms(1000);
}
return 0;
}
Es ist so, dass wenn ich die ISR auskommentiere das Programm problemlos läuft. Sobald es aber mit kompiliert wird ist nach dem uart_init(..); und sei(); schluss und die int main(void); wird von vorne durchlaufen.
D.h. der µC steckt dann in einer Endlosschleife fest.
Ich programmiere mit AVRStudio mit WinAVR plugin.
Ach ja, die UART-Routinen sind von Peter Fleury und der µC ist ein ATTiny2313.
Kann mir jemand einen Hinweis geben woran das liegen könnte?
Vielen Dank!
MfG, Marten83
Lesezeichen