Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-июн-28 13:29

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: 1886ВЕ4У
СообщениеДобавлено: 2009-май-21 16:01 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
8-ми разрядный микроконтроллер 1886ВЕ4У


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Создание USB-устройства
СообщениеДобавлено: 2010-дек-05 13:42 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 54
Добрый день. У меня проблема с написанием программы для USB-устройства сданным микроконтроллером. Написал шаблон с описаниями дескрипторов. Но при подсоединении к порту ОС пишет, что устройство не опознано. Запускаю USBView там все поля дескрипторов нулевые. Может что-нибудь подскажете. Тактирование - генератор 48МГц для USB, для ядра - режим LF. Сторожевой таймер отключен. Режим микроконтроллера.

include <1886VE4M.INC>
;*******
TEMP0 EQU 0030h
;*******
org 0h
goto start

intvector1:
org 8h
retfie

intvector2:
org 10h
retfie

intvector3:
org 18h
retfie

intvector4:
org 20h
retfie
;*******
org 100h
USB_Descriptor:
ADDWF PCL,F

;DeviceDescriptor
RETLW 12h ;bLenght 1
RETLW 01h ;bDescriptorType 2
RETLW 10h ;bcdUSB_H 3
RETLW 01h ;bcdUSB_L 4
RETLW 00h ;bDeviceClass 5
RETLW 00h ;bDeviceSubClass 6
RETLW 00h ;bDeviceProtocol 7
RETLW 08h ;bMaxPacketSize0 8
RETLW 34h ;idVendor_H 9
RETLW 12h ;idVendor_L 10
RETLW 78h ;idProduct_H 11
RETLW 56h ;idProduct_L 12
RETLW 01h ;bcdDevice_H 13
RETLW 00h ;bcdDevice_L 14
RETLW 00h ;iManufacturer 15
RETLW 00h ;iProduct 16
RETLW 00h ;iSerialNmber 17
RETLW 01h ;bNumConfigurations 18
;ConfigurationDescriptor
RETLW 09h ;bLenght 19
RETLW 02h ;bDecsriptorType 20
RETLW 00h ;wTotalLenght_H 21
RETLW 20h ;wTotalLenght_L 22
RETLW 01h ;bNumInterfaces 23
RETLW 01h ;bConfigurationValue 24
RETLW 00h ;iConfiguration 25
RETLW 80h ;bmAttributes 26
RETLW 32h ;MaxPower 27
;InterfaceDescriptor
RETLW 09h ;bLenght 28
RETLW 04h ;bDescriptorType 29
RETLW 00h ;bInterfaceNumber 30
RETLW 00h ;bAlternateSetting 31
RETLW 02h ;bNumEndpoints 32
RETLW 00h ;bInterfaceClass 33
RETLW 00h ;bInterfaceSubClass 34
RETLW 00h ;bInterfaceProtocol 35
RETLW 00h ;iInterface 36
;Endpoint1Descriptor
RETLW 07h ;bLength 37
RETLW 05h ;bDescriptorType 38
RETLW 81h ;bEndpointAddress 39
RETLW 02h ;bmAttributes 40
RETLW 00h ;wMaxPacketSize_H 41
RETLW 40h ;wMaxPacketSize_L 42
RETLW 01h ;bInterval 43
;Endpoint2Descriptor
RETLW 07h ;bLength 44
RETLW 05h ;bDescriptorType 45
RETLW 02h ;bEndpointAddress 46
RETLW 02h ;bmAttributes 47
RETLW 00h ;wMaxPacketSize_H 48
RETLW 40h ;wMaxPacketSize_L 49
RETLW 01h ;bInterval 50
;Endpoint3Descriptor
RETLW 07h ;bLength 51
RETLW 00h ;bDescriptorType 52
RETLW 00h ;bEndpointAddress 53
RETLW 00h ;bmAttributes 54
RETLW 00h ;wMaxPacketSize_H 55
RETLW 00h ;wMaxPacketSize_L 56
RETLW 00h ;bInterval 57
;Endpoint4Descriptor
RETLW 07h ;bLength 58
RETLW 00h ;bDescriptorType 59
RETLW 00h ;bEndpointAddress 60
RETLW 00h ;bmAttributes 61
RETLW 00h ;wMaxPacketSize_H 62
RETLW 00h ;wMaxPacketSize_L 63
RETLW 00h ;bInterval 64
;LangCode
RETLW 08h ;bLenght 65
RETLW 03h ;bDescriptorType 66
RETLW 09h ;wLangId[0] 67
RETLW 04h ;wLangId[1] 68
RETLW 09h ;wLangId[2] 69
RETLW 04h ;wLangId[3] 70
RETLW 09h ;wLangId[4] 71
RETLW 04h ;wLangId[5] 72
;String1Descriptor
RETLW 0Ah ;bLength 73
RETLW 03h ;bDescriptorType 74
RETLW 00h ;bString[0] 75
RETLW 00h ;bString[1] 76
RETLW 00h ;bString[2] 77
RETLW 00h ;bString[3] 78
RETLW 00h ;bString[4] 79
RETLW 00h ;bString[5] 80
RETLW 00h ;bString[6] 81
RETLW 00h ;bString[7] 82
;String2Descriptor
RETLW 0Ah ;bLength 83
RETLW 03h ;bDescriptorType 84
RETLW 00h ;bString[0] 85
RETLW 00h ;bString[1] 86
RETLW 00h ;bString[2] 87
RETLW 00h ;bString[3] 88
RETLW 00h ;bString[4] 89
RETLW 00h ;bString[5] 90
RETLW 00h ;bString[6] 91
RETLW 00h ;bString[7] 92
;String3Descriptor
RETLW 0Ah ;bLength 93
RETLW 03h ;bDescriptorType 94
RETLW 00h ;bString[0] 95
RETLW 00h ;bString[1] 96
RETLW 00h ;bString[2] 97
RETLW 00h ;bString[3] 98
RETLW 00h ;bString[4] 99
RETLW 00h ;bString[5] 100
RETLW 00h ;bString[6] 101
RETLW 00h ;bString[7] 102
;String4Descriptor
RETLW 1Ah ;bLength 103
RETLW 03h ;bDescriptorType 104
RETLW 00h ;bString[0] 105
RETLW 00h ;bString[1] 106
RETLW 00h ;bString[2] 107
RETLW 00h ;bString[3] 108
RETLW 00h ;bString[4] 109
RETLW 00h ;bString[5] 110
RETLW 00h ;bString[6] 111
RETLW 00h ;bString[7] 112
RETLW 00h ;bString[8] 113
RETLW 00h ;bString[9] 114
RETLW 00h ;bString[10] 115
RETLW 00h ;bString[11] 116
RETLW 00h ;bString[12] 117
RETLW 00h ;bString[13] 118
RETLW 00h ;bString[14] 119
RETLW 00h ;bString[15] 120
RETLW 00h ;bString[16] 121
RETLW 00h ;bString[17] 122
RETLW 00h ;bString[18] 123
RETLW 00h ;bString[19] 124
RETLW 00h ;bString[20] 125
RETLW 00h ;bString[21] 126
RETLW 00h ;bString[22] 127
RETLW 00h ;bString[23] 128

start:
CALL USB_Init
MOVLB Bank4
USB_WaitSetup:
BTFSS USB_STAT,5
goto USB_WaitSetup
BCF USB_STAT,4
MainLoop:
goto MainLoop

USB_Init:
MOVLB Bank1
CLRF TEMP0,F
USB_LoadDescr:
MOVFP TEMP0,DESC_ADR
MOVFP TEMP0,WREG
CALL USB_Descriptor
MOVFP WREG,DESC_DATA
INCF TEMP0,F
BTFSS TEMP0,7
goto USB_LoadDescr
MOVLB Bank0
MOVLW 40h
MOVWF EP1_CFG1
MOVWF EP2_CFG1
MOVLW 04h
MOVWF EP1_CFG2
MOVLW 02h
MOVWF EP2_CFG2
MOVLB Bank4
MOVLW 03h+08h
MOVWF USB_CTRL
RETURN

end


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание USB-устройства
СообщениеДобавлено: 2010-дек-06 11:32 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
ElectroAlex писал(а):
Добрый день. У меня проблема с написанием программы для USB-устройства сданным микроконтроллером. Написал шаблон с описаниями дескрипторов. Но при подсоединении к порту ОС пишет, что устройство не опознано. Запускаю USBView там все поля дескрипторов нулевые. Может что-нибудь подскажете. Тактирование - генератор 48МГц для USB, для ядра - режим LF. Сторожевой таймер отключен. Режим микроконтроллера.
end


Все USB устройства требуют не только правильно заполненного дескриптора, но и поддержки определенного протокола обмена командами и данными. Исключение составляют только устройства работающие с USB драйверами типа USBIO. И это относится не только к микроконтроллеру 1886ВЕ4, а ко всем микроконтроллерам с USB.
Выберите тип USB устройства которое Вы хотите реализовать, или тип USB драйвера с которым будете работать, и изучите соответствующую документацию.
Из стандартных USB устройств на микроконтроллере 1886ВЕ4 легко реализуется USB Mass Storage Devices.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-18 15:22 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
Здравствуйте! Буду очень признателен за помощь:
Отлаживаю программу для МК 1886ВЕ4.
Одна из функций программы - измерение частоты импульсов, поступающих на вход PORTA.0.
По этому входу активен обработчик прерываний, в котором ведется подсчет числа поступивших импульсов.
По достижению N импульсов считываются текущие показания таймера T0 и выводятся на ПК через USB.
Источником тактовых импульсов для таймера является внешний генератор.
Период регистрируемых импульсов достаточно большой, поэтому ведется учет переполнений таймера T0 в соответствующем обработчике прерываний.

Проблема вот в чем:
Замечено, что периодически пропускаются импульсы по входу А.0, а так же переполнения таймера, то есть обработчики соответствующих прерываний не вызываются.


В чем может быть дело? Я так понимаю, что если возникает прерывание по первому событию во время выполнения обработчика второго, соответствующий флаг должен выставиться и обработчик первого события выполнится по завершению второго, или я ошибаюсь?
Вот примерный каркас программы.


Код:
#include <1886VE4d.h>
#include "int17xxx.h"
#pragma origin 0x8

uns 8 ... //инициализация глобальных переменных
interrupt iServer(void)
{
multi_interrupt_entry_and_save
  PERIPHERIAL_service:
 
  TMR0_service:
  T0IF=0;
  //работа с переменными, портами ввода-вывода и периферией

  T0CKI_service:
  INT_service:
  if(INTF==1)
   {
   INTF=0;
   //работа с переменными, портами ввода-вывода и периферией
   }
interrupt_exit_and_restore
}

void main(void)
{
uns8 ...
uns 16 ... //инициализация переменных


//настройка портов ввода-вывода
//работа с портами

GLIND=1;
T0STA=0b01000100;
TMR0L=0;TMR0H=0;
T0IE=1;
INTE=1;
T0CKIE=0;
PEIE=0;
GLINTD=0;

//инициализация USB

while(1) //основной цикл работы программы
{
//работа с переменными, портами ввода-вывода
//чтение, запись в USB
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-19 12:04 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Один обработчик для нескольких источников - неудачная идея. Следует разделить прерывания, чтобы избежать проблем синхронизации, когда во время обработки прерывания возникает другое событие.
Код:
interrupt iServer(void)
{
multi_interrupt_entry_and_save
  PERIPHERIAL_service:
  TMR0_service:
  T0IF=0;
  ..
goto RESTORE_and_return;
  T0CKI_service:
  INT_service:
  INTF=0;
  ..
  RESTORE_and_return:
interrupt_exit_and_restore
}
- Тут прерывания будут обрабатываться по очереди. Можно также один из флагов анализировать в основном цикле.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-19 15:01 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
Исправил, как в Вашем примере.
Проблема осталась. По очереди обработчики не вызываются.
Для изучения возможных причин на время работы обоих обработчиков поднимаю сигнал на двух выходах МК и анализирую осциллографом.
Замечено, что если обработчик прерывания по входу (без учета макроса interrupt_exit_and_restore) завершается примерно за 1.5 мкс до переполнения таймера, то обработчик по переполнению не вызывается. Такое событие происходит достаточно редко, поэтому поймать его осциллографом достаточно тяжело и статистики набрать не получилось, но раз пять-шесть выловил.
И наоборот, если выполняется обработчик по переполнению таймера, и приходит импульс на вход, то обработчик по входу не вызывается.
Если это как-то поможет, могу прикрепить осциллограммы.

Еще вопрос.
Нужно ли глобально запрещать прерывания (GLINTD=1) на время выполнения обработчиков?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-19 15:34 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
oleg_snz писал(а):
Исправил, как в Вашем примере.
Проблема осталась. По очереди обработчики не вызываются.
Для изучения возможных причин на время работы обоих обработчиков поднимаю сигнал на двух выходах МК и анализирую осциллографом.
Замечено, что если обработчик прерывания по входу (без учета макроса interrupt_exit_and_restore) завершается примерно за 1.5 мкс до переполнения таймера, то обработчик по переполнению не вызывается. Такое событие происходит достаточно редко, поэтому поймать его осциллографом достаточно тяжело и статистики набрать не получилось, но раз пять-шесть выловил.
И наоборот, если выполняется обработчик по переполнению таймера, и приходит импульс на вход, то обработчик по входу не вызывается.
Если это как-то поможет, могу прикрепить осциллограммы.

Еще вопрос.
Нужно ли глобально запрещать прерывания (GLINTD=1) на время выполнения обработчиков?

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

А по проблеме. Пришлите сгенеренный ASM файл с полной программой обработки прерываний на togidny@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-19 19:50 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
отправил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-20 13:48 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
oleg_snz писал(а):
отправил

Я попробовал получить пропуски прерываний. Из Вашей программы выкинул вычисления, но оставил такую же настройку портов, прерываний и таймера. Подавал рядом расположенные импульсы на порты, разные варианты смещений друг относительно друга. Прерывания всегда отрабатывались (судя по PORTE,4 и PORTE,6).

Попробуйте тоже отключить всё "лишнее" и посмотреть не исчезнут ли пропуски.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-21 15:21 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
Пропуски остались, но минимальный объем вычислений и операций с портами пришлось оставить. Все равно арифметика и работа с портами не должны влиять на обработку прерываний.
Временно решил проблему костылем в виде обработки данных на компе, благо сбойных измерений немного и они легко обнаруживаются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-21 15:32 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
oleg_snz писал(а):
Пропуски остались, но минимальный объем вычислений и операций с портами пришлось оставить. Все равно арифметика и работа с портами не должны влиять на обработку прерываний.
Временно решил проблему костылем в виде обработки данных на компе, благо сбойных измерений немного и они легко обнаруживаются.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-фев-24 14:27 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
oleg писал(а):
Пришлите минимально возможную программу (ASM) и диаграмму импульсов, при которой возникают пропуски. Мне бы поймать эти пропуски, тогда возможно найдется причина.

Добрый день.
Все лишнее из программы выбросил, вот что осталось:
Открыть исходник программы
#include <1886VE4d.h>
#include "int17xxx.h"
#pragma origin 0x8
uns8 q1,w1,e1,q2,w2,e2;
interrupt iServer(void)
{
multi_interrupt_entry_and_save
PERIPHERIAL_service:
TMR0_service:
PORTE.4=1;
T0IF=0;
for(w1=0;w1<10;w1++)e1=w1;
PORTE.4=0;
goto RESTORE_and_return;
T0CKI_service:
INT_service:
PORTE.6=1;
INTF=0;
for(w2=0;w2<10;w2++)e2=w2;
PORTE.6=0;
RESTORE_and_return;
interrupt_exit_and_restore
}
void main(void)
{
GLINTD=1;
DDRC=0xff;
DDRD=0xff;
DDDRE=0b10101111;
T0STA=0b01000100;
TMR0L=0;
TMR0H=0;
T0IE=1;
INTE=1;
T0CKIE=0;
PEIE=0;
GLINTD=0;
while(1);
}
Закрыть


Пропуски наблюдаются примерно один раз в 30 секунд по обоим обработчикам. На вход A0 подаю импульсы с генератора 1кГц. На вход таймер T0 подаю 20МГц (потом делится на 4, так что остается 5МГц). Ядро МК тактируется от генератора USB (48/2)Мгц.
На осциллограммах показаны пропуски и примерное положение пропусков.
Извиняюсь за плохое качество картинок - они подверглись цифро-бумажно-цифровому преобразованию.


Вложения:
dia2.jpg
dia2.jpg [ 1.11 МБ | Просмотров: 3960 ]
dia1.jpg
dia1.jpg [ 1.28 МБ | Просмотров: 3960 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Таймер на 1886ВЕ4
СообщениеДобавлено: 2014-фев-28 15:35 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
Здравствуйте! Теперь такая проблема:
МК 1886ВЕ4. Тактовая частота 24МГц (половина частоты USB). Активны два прерывания - по переполнению таймера T0 и по входу A0. Источник тактовой частоты таймера - внешний генератор с частотой 20 МГц, после предделителя на четыре остается 5 МГц.
В обработчике по таймеру ведется учет числа переполнений.
При поступлении импульса на вход A0, в обработчике по данному входу читается текущее значения счетчика и передается по USB в ЭВМ.
Так вот, суть проблемы в том, что значения времени, получаемые на ЭВМ, не соответствую ожиданиям.
Например, если на вход A0 подать частоту 500 Гц, на ЭВМ получаем вот такие значения:

№__hi____lo_____TMR0H__TMR0L___t_фактич.,с___t_факт.к.0,с____t_ожидаемое.,с____отклонение, с
1___0____167____6_______237_____2.189257_____0______________0________________0
2___0____167____47______253_____2.191259_____0.0021024______0.002_____________0.000102
3___0____167____87______13______2.193359_____0.0041024______0.004_____________0.000102
4___0____167____126_____29______2.195359_____0.0061024______0.006_____________0.000102
5___0____167____163_____45______2.197257_____0.008__________0.008_____________0
6___0____167____202_____61______2.199257_____0.01___________0.010_____________0
7___0____167____243_____77______2.201359_____0.0121024______0.012_____________0.000102
. . . . . . . . . . . . . . . .

Замечено, что отклонение фактических значений времени от ожидаемых или близко к 0, или составляет 102 мкс, что соответствует 510 отсчетам таймера (при T=0,2 мкс).
Такая ситуация наблюдается на протяжении всего периода измерения, причем ошибка не накапливается.
Правильность вычислений и передачу данных на ПК вроде проверил.
Может я как-то криво читаю таймер?

Открыть исходник программы
#include <1886VE4d.h>
#include "int17xxx.h"
#pragma origin 0x8
uns8 q1,w1,e1,q2,w2,e2;
interrupt iServer(void)
{
multi_interrupt_entry_and_save
PERIPHERIAL_service:
TMR0_service:
T0IF=0;
if(lo==255)ho++;
lo++;
goto RESTORE_and_return;
T0CKI_service:
INT_service:
INTF=0;
EP3_REG=hi;
EP3_REG=lo;
EP3_REG=TMR0H;
EP3_REG=TMR0L;
RESTORE_and_return;
interrupt_exit_and_restore
}
void main(void)
{
GLINTD=1;
DDRC=0xff;
DDRD=0xff;
DDDRE=0b10101111;
TMR0L=0;
TMR0H=0;
T0STA=0b01000100;
T0IE=1;
INTE=1;
T0CKIE=0;
PEIE=0;
GLINTD=0;
init_usb();
while(1);
}
Закрыть


В спецификации на ВЕ4 сказано:
"Проблема считывания 16-разрядного значения регистров TMR0L и TMR0H
заключается в том, что после считывания младшего (или старшего) байта, его
значение может измениться от FFh к 00h. Для обеспечения однозначного
считывания состояния счетчика рекомендуется маскировать сигнал запроса на
обработку прерывания"
Не понятен смысл данного абзаца. Какое прерывание нужно маскировать и зачем?
Ведь даже если прерывания будут запрещены, есть вероятность переполнения одного из регистров после его чтения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер на 1886ВЕ4
СообщениеДобавлено: 2014-мар-02 11:34 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 944
Откуда: Тула
в ВЕ2 был буфер на чтение и запись таймера. в ВЕ4 такого разве нет?
при этом существовал определенный порядок записи и чтения. см спеку на ВЕ2.

даже если нет, то есть такой вариант: читаете старшую половину, потом младшую, потом опять старшую и сравниваете старшие выборки. Если не равны - повторяете.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1886ВЕ4У
СообщениеДобавлено: 2014-мар-02 20:28 
Не в сети

Зарегистрирован: 2012-фев-16 20:47
Сообщения: 11
prostoRoman,
в спецификации на ВЕ4 ничего про буфер не сказано. Но есть рекомендации по записи регистров таймера (сначала младший, потом старший), а так же по чтению - процитировал выше, но смысл не совсем ясен. Если говорить про ситуацию, когда после чтения одного из регистров, его значение меняется с FF на 00, тогда предложенный Вами вариант чтения позволит исключить неверное считывание результата.
Однако у меня другой случай - значение таймера отличается на 510 отсчетов от того, каое должно быть. Как будто вместо увеличения младшего регистра (TMR0L) на 2, произошло увеличение старшего (TMR0H).


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

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


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

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB