Gast
#462075
Hallo zusammen
Ich habe ein kleines Problem mit scanf. Ich möchte gerne einen float
Wert einlesen. Es kommen aber immer relativ lange Fehlermeldungen.
Schreibe ich aber den gleichen Befehl in meinem Main.C Programm kommen
diese Fehlermeldungen nicht. Vieleicht hatte schon jemand das selbe
Problem. Ich poste hier einfach mal den Code und die Fehlermeldungen.
Für einen Tipp wäre ich sehr dankbar, bin schon relativ lange an dem
Problem.
Gruss
Matthias
Code:
void UART_vInit(void)
{
// USER CODE BEGIN (UART_Init,2)
// USER CODE END
///
-----------------------------------------------------------------------
/// UART settings
///
-----------------------------------------------------------------------
/// Pin TXD_0 (P1.1) is selected for transmission
/// Pin RXD_0 (P1.0) is selected for reception
/// Receiver enabled
/// Mode 1: 8-bit data, 1 start bit, 1 stop bit, variable baud rate
/// BRG is selected for baudrate generation
SFR_PAGE(_pp2, SST2); // switch to page 2 without saving
P1_ALTSEL0 &= ~(ubyte)0x02; // configure alternate function
register 0
P1_ALTSEL1 |= (ubyte)0x02; // configure alternate function
register 1
SFR_PAGE(_pp0, SST2); // switch to page 0 without saving
P1_DIR |= (ubyte)0x02; // set output direction
MODPISEL &= ~(ubyte)0x01; // configure peripheral input select
register
BCON = 0x00; // reset baudrate timer/reload register
SCON = 0x50; // load serial channel control register
///
-----------------------------------------------------------------------
/// Baudrate generator settings
///
-----------------------------------------------------------------------
/// input clock = fPCLK
/// Fractional divider is disabled
/// baudrate = 9.5785 kbaud
BG = 0xAD; // load baudrate timer/reload register
BCON |= 0x01; // load baud rate control register
// USER CODE BEGIN (UART_Init,3)
// USER CODE END
/// UART interrupt enabled
ES = 1;
} // End of function UART_vInit
//**********************************************************************
******
// @Function void UART_viIsr(void)
//
//----------------------------------------------------------------------
------
// @Description This is the service routine for the UART interrupt. It
is
// called after each transmission (flag TI set) or
reception
// (flag RI set) of a data unit.
// Please note that you have to add application specific
code
// to this function.
//
//----------------------------------------------------------------------
------
// @Returnvalue None
//
//----------------------------------------------------------------------
------
// @Parameters None
//
//----------------------------------------------------------------------
------
// @Date 12.12.2006
//
//**********************************************************************
******
// USER CODE BEGIN (UART_Isr,1)
// USER CODE END
int asa;
//int Empfangen;
void UART_viIsr(void) interrupt UARTINT
{
//if (TI)
{
// USER CODE BEGIN (UART_Isr,2)
// USER CODE END
// TI = 0;
}
if (RI)
{
// USER CODE BEGIN (UART_Isr,3)
scanf("%f" , &asa);
// scanf("%5i",&Empfangen);
// Ua=255;
// USER CODE END
RI = 0;
}
} // End of function UART_viIsr
und hier die Fehlermeldungen:
void UART_vInit(void)
{
// USER CODE BEGIN (UART_Init,2)
// USER CODE END
///
-----------------------------------------------------------------------
/// UART settings
///
-----------------------------------------------------------------------
/// Pin TXD_0 (P1.1) is selected for transmission
/// Pin RXD_0 (P1.0) is selected for reception
/// Receiver enabled
/// Mode 1: 8-bit data, 1 start bit, 1 stop bit, variable baud rate
/// BRG is selected for baudrate generation
SFR_PAGE(_pp2, SST2); // switch to page 2 without saving
P1_ALTSEL0 &= ~(ubyte)0x02; // configure alternate function
register 0
P1_ALTSEL1 |= (ubyte)0x02; // configure alternate function
register 1
SFR_PAGE(_pp0, SST2); // switch to page 0 without saving
P1_DIR |= (ubyte)0x02; // set output direction
MODPISEL &= ~(ubyte)0x01; // configure peripheral input select
register
BCON = 0x00; // reset baudrate timer/reload register
SCON = 0x50; // load serial channel control register
///
-----------------------------------------------------------------------
/// Baudrate generator settings
///
-----------------------------------------------------------------------
/// input clock = fPCLK
/// Fractional divider is disabled
/// baudrate = 9.5785 kbaud
BG = 0xAD; // load baudrate timer/reload register
BCON |= 0x01; // load baud rate control register
// USER CODE BEGIN (UART_Init,3)
// USER CODE END
/// UART interrupt enabled
ES = 1;
} // End of function UART_vInit
//**********************************************************************
******
// @Function void UART_viIsr(void)
//
//----------------------------------------------------------------------
------
// @Description This is the service routine for the UART interrupt. It
is
// called after each transmission (flag TI set) or
reception
// (flag RI set) of a data unit.
// Please note that you have to add application specific
code
// to this function.
//
//----------------------------------------------------------------------
------
// @Returnvalue None
//
//----------------------------------------------------------------------
------
// @Parameters None
//
//----------------------------------------------------------------------
------
// @Date 12.12.2006
//
//**********************************************************************
******
// USER CODE BEGIN (UART_Isr,1)
// USER CODE END
int asa;
//int Empfangen;
void UART_viIsr(void) interrupt UARTINT
{
//if (TI)
{
// USER CODE BEGIN (UART_Isr,2)
// USER CODE END
// TI = 0;
}
if (RI)
{
// USER CODE BEGIN (UART_Isr,3)
scanf("%f" , &asa);
// scanf("%5i",&Empfangen);
// Ua=255;
// USER CODE END
RI = 0;
}
} // End of function UART_viIsr