skywalker1979
30.05.2008, 10:08
Guten morgen,
ich habe ein Problem beim Programmieren einer UART Kommunikation. Ich möchte, das beim Empfang einer Zeichenfolge ein Interrupt ausgelöst wird. In der Interrupt Routine soll dann in eine Funktion zur Befehlsprüfung gesprungen werden. Das Problem ist nur, das nie ein Interrupt ausgelöst wird.
Hier sind die entprechenden Teile aus meinem Programm:
ISR:
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void)
{
uart1_empfang();
IFS0bits.U1RXIF = 0;
}
UART Init:
void UART1Init(int BAUDRATEREG1)
{
U1BRG = BAUDRATEREG1;
U1MODE = 0x8000;
U1STA = 0x8400;
IFS0bits.U1RXIF = 0;
}
UART Empfang:
void uart1_empfang(void)
{
int i;
char c;
char* s;
s=befehl;
i=0;
do
{
c=UART1GetChar();
if( c!='\r')
{
*s=c;
s++;
i++;
}
}
while( c!='&' );
*s=0;
befehlspruefung();
}
und UART1GetChar:
char UART1GetChar()
{
char Temp;
while(IFS0bits.U1RXIF == 0);
Temp = U1RXREG;
IFS0bits.U1RXIF = 0;
return Temp;
}
Ich hoffe ihr könnt mir hilfreiche Tipps geben.
mit freundlichen Grüßen
ich habe ein Problem beim Programmieren einer UART Kommunikation. Ich möchte, das beim Empfang einer Zeichenfolge ein Interrupt ausgelöst wird. In der Interrupt Routine soll dann in eine Funktion zur Befehlsprüfung gesprungen werden. Das Problem ist nur, das nie ein Interrupt ausgelöst wird.
Hier sind die entprechenden Teile aus meinem Programm:
ISR:
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void)
{
uart1_empfang();
IFS0bits.U1RXIF = 0;
}
UART Init:
void UART1Init(int BAUDRATEREG1)
{
U1BRG = BAUDRATEREG1;
U1MODE = 0x8000;
U1STA = 0x8400;
IFS0bits.U1RXIF = 0;
}
UART Empfang:
void uart1_empfang(void)
{
int i;
char c;
char* s;
s=befehl;
i=0;
do
{
c=UART1GetChar();
if( c!='\r')
{
*s=c;
s++;
i++;
}
}
while( c!='&' );
*s=0;
befehlspruefung();
}
und UART1GetChar:
char UART1GetChar()
{
char Temp;
while(IFS0bits.U1RXIF == 0);
Temp = U1RXREG;
IFS0bits.U1RXIF = 0;
return Temp;
}
Ich hoffe ihr könnt mir hilfreiche Tipps geben.
mit freundlichen Grüßen