Vielen Dank für die große Hilfe!
Tatsächlich lag es daran dass "sei();" nach "USART_init();" gehört,
Also am besten hirekt vor der Hauptschleife "while(1){}"
EDIT: Das ist mir auch im beispiel von PicNick aufgefallen...
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 7372800
#define USART_BAUD_RATE 115200
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1)
volatile static uint8_t data;
void USART_init(void){
UBRRH = 0;
UBRRL = (uint8_t) USART_BAUD_SELECT;
/* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
data = UDR;
}
void USART_transmit(uint8_t c){
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}
void USART_transmit_string(uint8_t *string){
while(!(UCSRA & (1<<UDRE)));
while( *string){ USART_transmit (*string++); }
}
SIGNAL( SIG_USART_RECV )
{
data = UDR;
}
int main (void)
{
// D A T E N R I C H T U N G :
//===============================================
// PORTA Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRA = 0b11111111; //
PORTA = 0b00000000; //
// PORTB Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRB = 0b00000000; //
PORTB = 0b00000000; //
// PORTC Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRC = 0b00000000; //
PORTC = 0b11111111; //
// PORTD Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRD = 0b11111111; //
PORTD = 0b00000000; //
USART_init();
USART_transmit_string("USART INIT - OK ");
sei();
while (1) {
PORTA = UCSRA;
PORTD = data;
}
}
An dieser Stelle hätte ich noch eine kurze Frage;
Wenn ich ein signal empfange, dann führt der MCU die Interruptroutine aus, aber er sendet auch wieder "USART INIT - OK",
Er führt also die main-Funktion von anfang an wieder aus...
dachte immer Interrupts "stoppen" das programm an der aktuellen stelle, Frühren die Interruptroutine aus, und machen dort weiter wo sie aufgehört haben....?
Das ist jetzt mei mir nicht so...
Könntet ihr mich da kurz aufklehren..?
Lesezeichen