реклама на сайте
подробности

 
 
> IAR AVR C++ class и прерывание
west329_
сообщение Oct 2 2009, 20:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Подскажите как правильно описать прерывание от 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- west329_   IAR AVR C++ class и прерывание   Oct 2 2009, 20:21
- - AHTOXA   Функции класса передаётся неявный параметр this. О...   Oct 2 2009, 20:33
|- - dxp   Цитата(AHTOXA @ Oct 3 2009, 03:33) Функци...   Oct 3 2009, 01:54
|- - AHTOXA   Что значит "к представлению"? К приватны...   Oct 3 2009, 07:10
|- - dxp   Цитата(AHTOXA @ Oct 3 2009, 14:10) Что зн...   Oct 3 2009, 13:30
|- - AHTOXA   Цитата(dxp @ Oct 3 2009, 19:30) А так и ф...   Oct 3 2009, 14:42
|- - dxp   Цитата(AHTOXA @ Oct 3 2009, 21:42) Зато в...   Oct 5 2009, 07:47
|- - singlskv   Цитата(dxp @ Oct 5 2009, 11:47) Но и в эт...   Oct 5 2009, 22:09
- - west329_   Вобщем как я не пытался так и не получилось у меня...   Oct 3 2009, 11:22
- - Alechin   а если я хочу созать шаблон класса с обработчиком ...   Dec 4 2009, 07:18
|- - Сергей Борщ   Цитата(Alechin @ Dec 4 2009, 09:18) в ито...   Dec 4 2009, 08:14
- - Alechin   Цитата(Сергей Борщ @ Dec 4 2009, 11:14) И...   Dec 4 2009, 08:24
- - XVR   У меня есть БОЛЬШИЕ сомнения по поводу допустимост...   Dec 4 2009, 09:23
- - Alechin   ЦитатаПрерывания придется делать вне класса, в вид...   Dec 4 2009, 09:44
|- - XVR   Цитата(Alechin @ Dec 4 2009, 12:44) А, я ...   Dec 4 2009, 09:50
- - Alechin   Хорошо, допустми каким-либо образом мне удалось со...   Dec 4 2009, 10:55
- - XVR   Классы таймеров состоят исключительно из констант ...   Dec 4 2009, 11:48
- - Alechin   ЦитатаКлассы таймеров состоят исключительно из кон...   Dec 4 2009, 12:02
- - XVR   Цитата(Alechin @ Dec 4 2009, 15:02) ну то...   Dec 4 2009, 13:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016