Easyelectronics.ru

Электроника для всех
Текущее время: 27 сен 2020, 03:21

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 102 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 12:44 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
Добрый день!
Есть плата с stm32f042 на борту, которая имеет CAN интерфейс (скриншот прилагаю). Также имеется интерфейсный модуль CAN NI-9861 (https://www.ni.com/ru-ru/support/model.ni-9861.html).
Не получается ни отправить, ни получить посылку при подключении платы к данному модулю(смотрю Bus-monitor'ом).
В режиме loopback все посылки принимаются микроконтроллером, а до модуля не доходят.
Есть подозрение, что неправильно навастриваю бодрейт на модуле.
Подскажите, пожалуйста, в чем может быть причина?

На общей схеме есть некоторые ошибки, которые уже устранены. (Мк работает, прошивается)


Вложения:
Схема.jpg
Схема.jpg [ 154.34 Кб | Просмотров: 866 ]
Настройки_CAN_на_NI.jpg
Настройки_CAN_на_NI.jpg [ 87.33 Кб | Просмотров: 866 ]
Настройки_CAN_на_stm.jpg
Настройки_CAN_на_stm.jpg [ 45.76 Кб | Просмотров: 866 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 12:46 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
Прошу прощение за качество скриншотов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 14:31 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
А осциллограф что-нибудь показывает?
Ошибки есть? Обрабатываете их?
P.S. А что там за дичь в бодрейте на скриншоте? Приемная плата такую же дичь показывает?
Я вот намедни игрался со своим CAN-сниффером, так если у железок разная скорость, в шине постоянно возникает уйма ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 14:38 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
К сожалению, у меня нет осциллографа.
Жесть в бодрейте - это своя настройка бодрейта в Bus monitor от NI.
Вы говорите, если у железок разные настройки "конфигурации бита", то будут приходить ошибки?
Просто у меня вообще молчит.

Может быть ошибка в схемотехнике?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 14:55 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Вот поэтому стоит поставить побольше флагов реагирования на ошибки и в прерывании их все обрабатывать. Тогда можно понять, что не так.
Маленькие расхождения в скорости не должны влиять, а вот при больших просто арбитраж шины не пройдет!
Кроме того, стоит в настройках CAN поковыряться. Я пару вечеров потратил, пока разобрался, что к чему: чтобы на совершенно пустой шине МК автоматом не пытался слать сообщения, а выставлял соответствующий статус и выдавал ошибку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 15:38 
Старожил
Аватара пользователя

Зарегистрирован: 18 фев 2014, 11:27
Сообщения: 302
Откуда: Москва
терминальный резистор на 60ом не маловат? На одной стороне не менее 120 Ом


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 16:23 
Заглядывает иногда

Зарегистрирован: 14 ноя 2016, 11:48
Сообщения: 45
А почему в Bus monitor от NI не задать точно такую же скорость как в мк 125кБод/c? Зачем кастомную выставлять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 16:28 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
Eddy_Em писал(а):
Вот поэтому стоит поставить побольше флагов реагирования на ошибки и в прерывании их все обрабатывать. Тогда можно понять, что не так.
Маленькие расхождения в скорости не должны влиять, а вот при больших просто арбитраж шины не пройдет!
Кроме того, стоит в настройках CAN поковыряться. Я пару вечеров потратил, пока разобрался, что к чему: чтобы на совершенно пустой шине МК автоматом не пытался слать сообщения, а выставлял соответствующий статус и выдавал ошибку.


Проблема в том, что мк даже в прерывание не заходит. Я так понимаю, что до него вообще ничего не доходит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 16:33 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
forker писал(а):
А почему в Bus monitor от NI не задать точно такую же скорость как в мк 125кБод/c? Зачем кастомную выставлять?


Там настройки для квантов времени не сходятся. Не знаю, влияет это или нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 16:57 
Заглядывает иногда

Зарегистрирован: 14 ноя 2016, 11:48
Сообщения: 45
Как по мне, лучше скорость сделать одинаковой а кванты примерно совпадающими. Может код выложите микроконтроллерный?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 18:18 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
alex1457 писал(а):
Проблема в том, что мк даже в прерывание не заходит. Я так понимаю, что до него вообще ничего не доходит

Попробуйте мой код отсюда, здесь без USB, поэтому лишние телодвижения не понадобятся. Разве что ноги ремапнуть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 19:05 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
forker писал(а):
Как по мне, лучше скорость сделать одинаковой а кванты примерно совпадающими. Может код выложите микроконтроллерный?


Код:

//Халовская Инициализация CAN

static void MX_CAN_Init(void)
{

  /* USER CODE BEGIN CAN_Init 0 */

  /* USER CODE END CAN_Init 0 */

  /* USER CODE BEGIN CAN_Init 1 */

  /* USER CODE END CAN_Init 1 */
  hcan.Instance = CAN;
  hcan.Init.Prescaler = 24;
  hcan.Init.Mode = CAN_MODE_LOOPBACK;
  hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
  hcan.Init.TimeSeg1 = CAN_BS1_12TQ;
  hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
  hcan.Init.TimeTriggeredMode = DISABLE;
  hcan.Init.AutoBusOff = DISABLE;
  hcan.Init.AutoWakeUp = DISABLE;
  hcan.Init.AutoRetransmission = DISABLE;
  hcan.Init.ReceiveFifoLocked = DISABLE;
  hcan.Init.TransmitFifoPriority = DISABLE;
  if (HAL_CAN_Init(&hcan) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN CAN_Init 2 */

  /* USER CODE END CAN_Init 2 */

}

/******************************/

//Включение фильтра
void can_config(CAN_TxHeaderTypeDef *pHeader_tx, CAN_RxHeaderTypeDef *pHeader_rx, CAN_FilterTypeDef *filter)
{
   pHeader_tx->DLC    = 8;
   pHeader_tx->StdId = 0x07E0;
   pHeader_tx->ExtId = 0;
   pHeader_tx->IDE    = CAN_ID_STD;
   pHeader_tx->RTR    = CAN_RTR_DATA;
   pHeader_tx->TransmitGlobalTime = DISABLE;
   
   for(uint8_t i = 0; i <8; i++)
   {
      can_data_tx[i] = 0xA + i;
   }
   
   filter->SlaveStartFilterBank   = 0;
   filter->FilterIdLow                = 0;
   filter->FilterIdHigh                = 0x07E0<<5;
   filter->FilterMaskIdLow          = 0;
   filter->FilterMaskIdHigh         = 0x07E0<<5;
   filter->FilterFIFOAssignment    = CAN_FILTER_FIFO0;
   filter->FilterBank                  =   0;
   filter->FilterScale                  = CAN_FILTERSCALE_32BIT;
   filter->FilterMode                  = CAN_FILTERMODE_IDMASK;
   filter->FilterActivation         = ENABLE;
   
   HAL_CAN_ConfigFilter(&hcan, filter);
}


//Main
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
 

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_CAN_Init();
  /* USER CODE BEGIN 2 */
   can_config(&can_msg_tx, &can_msg_rx, &can_filter);
   HAL_CAN_Start(&hcan);
   HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
   HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING);
   HAL_CAN_ActivateNotification(&hcan, CAN_IT_TX_MAILBOX_EMPTY);
      
   can_data_tx[0] = '0';
   can_data_tx[1] = '1';
   can_data_tx[2] = '2';
   can_data_tx[3] = '3';
   can_data_tx[4] = '4';
   can_data_tx[5] = '5';
   can_data_tx[6] = '6';
   can_data_tx[7] = '7';

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
   HAL_UART_Receive_IT(&huart2, &data_rx, 1);   
  while (1)
  {      
      HAL_CAN_AddTxMessage(&hcan, &can_msg_tx, can_data_tx, &mailbox0);
      
      GPIOA->BSRR |= (1 << 0);
      
      //HAL_Delay(250);
      
      GPIOA->BRR |= (1 << 0);
      
      //HAL_Delay(250);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 19:13 
Заглядывает иногда

Зарегистрирован: 22 мар 2020, 10:51
Сообщения: 31
Пока что у меня идея поменять терминальный резистор


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 15 апр 2020, 19:13 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Калокубовские портянки? Ну, даже не знаю, кто такое читать будет…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 12:45 
Старожил

Зарегистрирован: 24 июн 2011, 14:05
Сообщения: 309
Откуда: Новочеркасск
В таких случаях без чего то вроде USB<->CAN адаптера или анализатора CAN никак, потому как документацию никто нормально прочитать не может сходу.
Пром модуль настройте на скорость стандартную 100, 125 или 250 и все настройки таймингов там будет правильны, как бы вам не казалось (потому как то что вы пытаетесь сделать вручную нифига не правильно я уверен, по причине в первом абзаце). Ну и на стороне stm тоже такую же скорость сделать (полностью из библиотеки только чтобы настройка скорости была).


Последний раз редактировалось ELEKTROS 16 апр 2020, 12:56, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 12:53 
Старожил
Аватара пользователя

Зарегистрирован: 18 фев 2014, 11:27
Сообщения: 302
Откуда: Москва
настройка скорости в HAL(250k) не совпадает с скрином в первом сообщении


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:09 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3561
Откуда: Китай, Пекин
Eddy_Em писал(а):
Калокубовские портянки? Ну, даже не знаю, кто такое читать будет…

програмисты. особенно те кто работает с HAL. и их достаточно много

а прикинь, у кого нибудь возникнут подобные проблемы при использовании твоих экзотичных партянок...
кто станет в здравом уме с этим разбираться.

_________________
unirail.org


Последний раз редактировалось cheblin 16 апр 2020, 13:13, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:11 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
ELEKTROS писал(а):
Ну и на стороне stm тоже такую же скорость сделать (полностью из библиотеки только чтобы настройка скорости была).

Что сложного в настройке CAN на любую заданную скорость, если в сниппетах пример есть? Берем, да настраиваем (добавлю комментариев на русском, чтобы понятно было, что где делается):
Код:
void CAN_setup(uint16_t speed){
    if(speed == 0) speed = oldspeed; // если нужно перенастроить, сбросив все счетчики ошибок, но оставить предыдущую скорость
    else if(speed < 50) speed = 50; // меньше 50кбод нельзя
    else if(speed > 3000) speed = 3000; // больше 3000 кбод нельзя
    oldspeed = speed; // для возможности вызова со speed=0
    uint32_t tmout = 16000000;
    if(CANID == 0xFFFF) readCANID(); // считываем идентификатор устройства (перемычки, dip-switch)
    GPIOB->MODER = (GPIOB->MODER & ~(GPIO_MODER_MODER8 | GPIO_MODER_MODER9))
                 | (GPIO_MODER_MODER8_AF | GPIO_MODER_MODER9_AF); // настраиваем ноги
    GPIOB->AFR[1] = (GPIOB->AFR[1] &~ (GPIO_AFRH_AFRH0 | GPIO_AFRH_AFRH1))\
                  | (4 << (0 * 4)) | (4 << (1 * 4)); // настраиваем ремап
    RCC->APB1ENR |= RCC_APB1ENR_CANEN; // врубаем тактирование
    CAN->MCR |= CAN_MCR_INRQ; // входим в режим инициализации
    while((CAN->MSR & CAN_MSR_INAK)!=CAN_MSR_INAK) if(--tmout == 0) break; // ждем установки режима (по нормальному вместо break надо выходить с ошибкой)
    CAN->MCR &=~ CAN_MCR_SLEEP; // выходим из спящего режима
    CAN->MCR |= CAN_MCR_ABOM; // включаем автоматический bus-off детектор
    CAN->BTR |=  2 << 20 | 3 << 16 | (6000/speed) << 0; // устанавливаем скорость и режим работы
    CAN->MCR &=~ CAN_MCR_INRQ; // выходим из инита
    tmout = 16000000;
    while((CAN->MSR & CAN_MSR_INAK)==CAN_MSR_INAK) if(--tmout == 0) break; // ждем готовости
    can_accept_one(); // инициализируем фильтр для приема только данных со своим ID
    CAN->IER |= CAN_IER_ERRIE | CAN_IER_FOVIE0 | CAN_IER_FOVIE1; // разрешаем прерывания по ошибкам
    NVIC_SetPriority(CEC_CAN_IRQn, 0); // приоритет
    NVIC_EnableIRQ(CEC_CAN_IRQn); // разрешаем прерывания CAN
    can_status = CAN_READY; // состояние — готов (для КА CAN'а)
}


P.S. Кто о чем, а чоблин опять за свое. Любитель портянок из быдлокода...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:21 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3561
Откуда: Китай, Пекин
Цитата:
Калокубовские портянки? Ну, даже не знаю, кто такое

Цитата:
Кто о чем, а чоблин опять за свое. Любитель портянок из

кто о чём а эдичка даёт бесплатные уроки ковыряния в носу...
ну увидел ты HAL код.
не мешкая, срочно, пока из тебя не полилось, приложи лед к месту воспламенения...
и возвращайся к дописыванию своего USB

_________________
unirail.org


Последний раз редактировалось cheblin 16 апр 2020, 13:56, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:30 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
Хотите я покажу вам пример кода для работы с CAN?

Код:
    CAN_1_Start(); //Делается один раз в начале
    ...
    CAN_1_SendMsg0(); //Отправка сообщения в mailbox 0


   CAN_1_TX_DATA_BYTE1(0) = Tx_Data; //Что-то вроде этого нужно вставить в автоматически сгенерированную функцию. Но вообще там может быть любая логика создания сообщения.


Это вообще весь код. CAN при этом полнофункциональный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:47 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
akatenev, хрен с редькой, а не полнофункциональный код!
Ты для начала выложи исходники функции CAN_1_Start!!!
А, скажем, функция CAN_1_SendMsg0() фактически выглядит как-то так:
Код:
CAN_status can_send(uint8_t *msg, uint8_t len, uint16_t target_id){
    uint8_t mailbox = 0;
    // check first free mailbox
    if(CAN->TSR & (CAN_TSR_TME)){
        mailbox = (CAN->TSR & CAN_TSR_CODE) >> 24;
    }else{ // no free mailboxes
        return CAN_BUSY;
    }
    CAN_TxMailBox_TypeDef *box = &CAN->sTxMailBox[mailbox];
    uint32_t lb = 0, hb = 0;
    switch(len){
        case 8:
            hb |= (uint32_t)msg[7] << 24;
            __attribute__((fallthrough));
        case 7:
            hb |= (uint32_t)msg[6] << 16;
            __attribute__((fallthrough));
        case 6:
            hb |= (uint32_t)msg[5] << 8;
            __attribute__((fallthrough));
        case 5:
            hb |= (uint32_t)msg[4];
            __attribute__((fallthrough));
        case 4:
            lb |= (uint32_t)msg[3] << 24;
            __attribute__((fallthrough));
        case 3:
            lb |= (uint32_t)msg[2] << 16;
            __attribute__((fallthrough));
        case 2:
            lb |= (uint32_t)msg[1] << 8;
            __attribute__((fallthrough));
        default:
            lb |= (uint32_t)msg[0];
    }
    box->TDLR = lb;
    box->TDHR = hb;
    box->TDTR = len;
    box->TIR  = (target_id & 0x7FF) << 21 | CAN_TI0R_TXRQ;
    return CAN_OK;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 13:51 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
Это полностью полнофункциональный код. Больше ничего писать не нужно, вообще. Именно таким образом я работаю с CAN уже много лет - ни разу не было никаких проблем.

Это вам просто пример, как все это дело делается правильно. Вы, ребятки, просто очень плохо разбираетесь в инструментарии :))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 14:05 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
akatenev, а функции CAN_1_Start() и т.п. из воздуха взялись?
Не надо врать!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 14:19 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
Не из воздуха, а из инструментария. Оттуда же, откуда у тебя, к примеру, появляется оператор case, да и все остальное тоже :)))

Просто надо выбирать хороший инструментарий. А не стучаться лбом в открытые двери.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерфейсный модуль CAN NI-9861
СообщениеДобавлено: 16 апр 2020, 14:23 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
У меня оператор case обрабатывается компилятором. А твоя функция к компилятору или стандарту языка отношения не имеет. Так что хватит уже чушь нести!
Хороший инструментарий — это тот, что ты сам напишешь!
Вот я вижу явно, что твой инструментарий хорошим назвать нельзя, т.к. функция настройки CAN не принимает аргументов. И как ты скорость менять будешь на лету?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 102 ]  На страницу 1, 2, 3, 4, 5  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB