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

 
 
> 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
 
Start new topic
Ответов
Alechin
сообщение Dec 4 2009, 10:55
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



Хорошо, допустми каким-либо образом мне удалось создать экземпляры класса таймеров.
Теперь хотелось бы создать класс индивидуального таймера.
Если создать наследника каласса таймеров - получим вызов конструктора базового класса (класса таймеров) при создании каждого экземпляра таймера. Что не нужно (и не правильно). Убрать вызов конструктора базового класса невозможно?
Хорошо, создаем самостоятельный класс. Тогда будем передавать в конструктор класса таймера ссылки/адреса на базовый класс. При этом подстановки компилятор уже не будет делать и получим овехед?
Как тут "выкрутиться"?
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
- - 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 - 06:05
Рейтинг@Mail.ru


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