Подскажите как правильно описать прерывание от uart0 для функции которая определяется в класе на уровень выше, так сказать пртоколе верхнего уровня cHuProt.
Сам клас
Код
#include "com0.h"
class cHuProt:public cUsart0 {
protected:
void HU_Rx_Byte(void);
public:
ui8 Recive_Pack_HU(void);
ui8 Recive_Pack_HU_End(void);
ui8 Init_HU(void);
ui8 Reset_Recive_HU(void);
ui8 Expect_new_HU(void);
ui8 ECM_HU_len(void);
ui8* Get_Point_to_ECM_HU_data(void);
ui8* Get_Point_to_HU_S(void);
ui8* Get_Point_to_HU_C(void);
ui8* Get_Point_to_HU_I(void);
ui8 DW_HU_Transmit(ui8 *pData);
//cHumaxProt();
//~cHumaxProt();
};
В клас cUsart0 я записал все низкоуровневые функции работы с железом uart
Код
class cUsart0 {
protected:
ui8 Usart0_Tx_Raw(ui8 tx_char);
ui8 Usart0_RX_Raw(void);
public:
ui8 Usart0_Init(ui16 ubrr);
ui8 Usart0_Tx_Data(ui8 *pData, ui8 len_data);
ui8 Usart0_Tx_Char(ui8 tx_char);
//Usart0();
//~Usart0();
};
/////////////////////////////////////////////////////////////////////////////
// Реализация класса cUsart0
/////////////////////////////////////////////////////////////////////////////
....
....
....
Сама функция Usart0_Init использует прерывание при получении символа с uart.
Очень хочется вызывать функцию Usart0_RX_Raw(void); когда приходит символ, тоесть както так описать метод в протоколе
Код
#pragma vector = USART0_RXC_vect
__interrupt void cHuProt::HU_Rx_Byte(void) {
temp=ui8 Usart0_RX_Raw();
......
......
}
но увы получаю ошибки
Цитата
Error[Ta022]: Interrupt functions cannot take any parameters. D:\Main_prj\tutor\MainTestCPP\hu.h 19