Easyelectronics.ru • Просмотр темы - dps310 датчик давления и температуры

Easyelectronics.ru

Электроника для всех
Текущее время: 15 авг 2018, 22:06

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 24 ] 
Автор Сообщение
 Заголовок сообщения: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 12:20 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
Здравствуйте.
Подключил датчик к STM32.
Регистры записывает/читает все хорошо.

Но когда считываю температуру то показания какие то странные.
При нагревании датчика значение температуры падают.
Просто считываю значения из ячейки температуры (без деления на коэффициенты и тд)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 14:18 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
Может дело в дополнении до двух.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 14:50 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
T_shift?
Note: Must be set to '1' when the oversampling rate is >8 times

я пробовал и с rate меньше 8. тоже самое

Или Вы о чем то другом ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 15:15 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
https://en.wikipedia.org/wiki/Two%27s_complement


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 15:17 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
И причем тут этот датчик и то что Вы прислали ?
в даташите на датчик не сказано дополнить полученные данные


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 15:26 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
r0cket писал(а):
И причем тут этот датчик и то что Вы прислали ?
в даташите на датчик не сказано дополнить полученные данные

Да ладно? А может кто-то не читал даташит. Черным по белому написано:
Цитата:
The Temperature Data registers contain the 24 bit (3 bytes) 2's complement temperature measurement value ( unless the FIFO is enabled, please see FIFO operation ) and will not be cleared after the read.


PS: А еще там сказано, что надо регистры коэф. поправки читать и применять поправку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 15:31 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
Извиняюсь. Первый раз вижу такое "2's complement".
Да. Про поправки читал.

Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 15:38 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
Как-то так:
Код:
#define C 0b10000000

int8_t b1;
b1 = (C ^ readReg()) + C;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 06 июн 2018, 16:16 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
Это не решило моего вопроса.

Traw = getTemperature(); // 24bit two's complement value out of reg 3-5
if (Traw > 8388607u) // convert to signed int (Traw > (pow(2, 23) - 1))
{
Traw = Traw - 16777216u; //Traw - pow(2, 24)
} такая логика преобразования в примере

Я считываю значение меньше 8388607. Значит это уже правильное значение температуры.
И когда я нагреваю датчик, это значение еще и падает.

Или ноль это 2 в 24 ? и все что меньше идет в плюс, а все что больше в минус ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 14:45 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
NStorm писал(а):
Как-то так:
Код:
#define C 0b10000000

int8_t b1;
b1 = (C ^ readReg()) + C;


Сделал так. Все равно при нагреве показания датчика уменьшаются


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 15:35 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
А конкретнее? "Чистые" трехбайтные значения разных температур для примера есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 16:23 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
force_major писал(а):
А конкретнее? "Чистые" трехбайтные значения разных температур для примера есть?


делаю так
Код:
spi_send(0x0C);
sendData = spi_send( 0x09); //ресет

spi_send(0x07); // настройка регистра температуры
sendData = spi_send( 0x00);

spi_send(0x08); // MEAS_CFG
sendData = spi_send( 0x00);

spi_send(0x09); // CFG_REG
sendData = spi_send( 0x00);

spi_send(0x08); //преобразовать температуру
sendData = spi_send( 0x02);

while (1)
{
spi_send(0x88); //ждем TMP_RDY (COEF_RDY и SENSOR_RDY к этому моменту равны 1)
sendData = spi_send( 0xaa);
}

         spi_send(0x83); //читаем 3 регистра
         register0 = spi_send( 0xaa);
         spi_send(0x84);
         register1 = spi_send( 0xaa);
         spi_send(0x85);
         register2 = spi_send( 0xaa);

         test_p=(uint32_t)(register0<<16 | register1<<8 | register2);
         b1 = (C ^ test_p) + C;

         Traw_sc = (float)test_p / 524288;
         Traw_sc1 = (float)b1 / 524288;




в итоге чистые данные в регистрах получаются

register0 = 1 всегда
register1 = ~200 всегда
register2 = ~200 при комнатной температуре и падает если держаться за него рукой

Грел датчик феном - тогда уменьшается и register1 тоже


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 16:56 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
Для 3 байт #define C 0x800000

EDIT:
Цитата:
register0 = 1 всегда
register1 = ~200 всегда
register2 = ~200 при комнатной температуре и падает если держаться за него рукой

Что-то вы не то читаете видимо, раз MSB (register0) не меняется при нагреве. Проверьте адреса регистров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 17:20 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
The highest byte of the three bytes measured temperature value.
TMP_B2 Address: 03H
для чтения 7 бит ставлю 1 и получаю 83 84 85 это я читаю 3 4 и 5 регистры

spi_send(0x83); //читаем 3 регистра
register0 = spi_send( 0xaa);
spi_send(0x84);
register1 = spi_send( 0xaa);
spi_send(0x85);
register2 = spi_send( 0xaa);

С сразу исправил для 3 байт до такого вида
#define C 0b100000000000000000000000


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 17:38 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
Я конечно не силен но
spi_send(0x08); //преобразовать температуру
sendData = spi_send( 0x02);
это вроде по запросу(один раз),а
110 - Continous temperature measurement
это вроде само.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 18:02 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
Да вроде адреса правильные. Может в функции spi_send() дело?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 07 июн 2018, 18:19 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
Всмысле вроде правильнее
spi_send(0x08); //преобразовать температуру
sendData = spi_send( 0x06);

Command Mode
- One temperature or pressure measurement is performed according to the selected precision.
- The sensor will return to Standby Mode when the measurement is finished, and the measurement result
will be available in the data registers.
Background Mode
- Pressure and/or temperature measurements are performed continuously according to the selected
measurement precision and rate. The temperature measurement is performed immediately aȇer the
pressure measurement.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 08 июн 2018, 11:25 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
spi send вроде стандартная
Код:
uint8_t spi_send (uint8_t data)
{
  while (!(SPI1->SR & SPI_SR_TXE));     
  SPI1->DR = data;                     
  while (!(SPI1->SR & SPI_SR_RXNE));   
  return (SPI1->DR);               
}



а температуру я преобразовываю по запросу. потом жду флага завершения преобразования. и потом уже считываю данные


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 08 июн 2018, 14:08 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
r0cket писал(а):
b1 = (C ^ test_p) + C;

Так не получится кстати. Потому что переменная 32-битная, а значение 24-битное. Не произойдет переполнения, чтобы получать отрицательные значения.
Надо вот так тогда делать:
Код:
    int32_t test_p;
...
    if(test_p & ((uint32_t)1 << 23))
    {
        test_p -= (uint32_t)1 << 24;
    }


Но всё-равно надо еще читать коэф. и по формуле дальше считать видимо. Т.к. в 24-битном 2's максимальное положительное значение - 0x7FFFFF (127,255,255 по байтам). Это будет 16, если разделить на коэф. 524288, явно не максимально допустимая температура.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 08 июн 2018, 14:29 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
В примере так сделано.

Код:
Traw = getTemperature();   // 24bit two's complement value out of reg 3-5
if (Traw > 8388607u)   // convert to signed int (Traw > (pow(2, 23) - 1))
{
Traw = Traw - 16777216u;   //Traw - pow(2, 24)
}


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

Какой то засадный датчик


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 09 июн 2018, 00:49 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 849
Тоже самое, что я написал.
А коэф. какие считываются всё-таки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 09 июн 2018, 12:18 
Только пришел

Зарегистрирован: 06 июн 2018, 14:12
Сообщения: 6
id правильно читается? что записано в TMP_COEF_SRCE(7)?
И правильно ли spi send дрыгает ногой CS?
Я языков и реализаций не знаю, но смущает
spi_send(0x83(b10000011)); //читаем 3 регистра
register0 = spi_send( 0xaa(b10101010));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 17 июл 2018, 13:31 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
Спустя сто тыщ мильёнов лет все заработало.

Пришлось перейти на i2c. Потому что по SPI ID микрухи всегда считывался FF. А он 0x10.
При увеличении температуры показания действительно падают.
Потому что по формуле temperature = c0*0.5 + c1*Traw_sc;
коэффициент C1 отрицательный. А C0 примерно 200.
Давление датчик показывает в паскалях. А не в гектопаскалях. Почему то я думал про гектопаскали читая даташит.

Рабочий код. Вдруг кому пригодится.

UB_I2C1_WriteByte(0xee,0x0c,0x89); //запись
0xee - адрес датчика на шине
0x0c - адрес регистра
0x89 - значение регистра
UB_I2C1_ReadByte(0xee,0x13); //чтение
0xee - адрес датчика на шине
0x13 - адрес регистра

Код:
int16_t wert;

    while(1)
    {



    delay();
    UB_I2C1_WriteByte(0xee,0x0c,0x89);
     delay();
   c0 = UB_I2C1_ReadByte(0xee,0x10)<<4 | UB_I2C1_ReadByte(0xee,0x11)>>4;
   if (c0 > (pow(2, 11) - 1))   c0 = c0 - pow(2, 12);
   uint8_t c1_ = UB_I2C1_ReadByte(0xee,0x11);   // "delete" bit7 - bit4
   c1 = c1_<<4 | UB_I2C1_ReadByte(0xee,0x12);
   if (c1 > (pow(2, 11) - 1))   c1 = c1 - pow(2, 12);

   delay();

      c00 = UB_I2C1_ReadByte(0xee,0x13)<<12 | UB_I2C1_ReadByte(0xee,0x14)<<4 | UB_I2C1_ReadByte(0xee,0x15)>>4;
        if (c00 > (pow(2, 19) - 1))   c00 = c00 - pow(2, 20);
        uint8_t c10_ = UB_I2C1_ReadByte(0xee,0x15) <<4;   // "delete" bit7 - bit4
        c10 = c10_<<12 | UB_I2C1_ReadByte(0xee,0x16)<<8 | UB_I2C1_ReadByte(0xee,0x17);
        if (c10 > (pow(2, 19) - 1))   c10 = c10 - pow(2, 20);
        c01 = UB_I2C1_ReadByte(0xee,0x18)<<8 | UB_I2C1_ReadByte(0xee,0x19);
        if (c01 > (pow(2, 15) - 1))   c01 = c01 - pow(2, 16);
        c11 = UB_I2C1_ReadByte(0xee,0x1a)<<8 | UB_I2C1_ReadByte(0xee,0x1b);
        if (c11 > (pow(2, 15) - 1))   c11 = c11 - pow(2, 16);
        c20 = UB_I2C1_ReadByte(0xee,0x1c)<<8 | UB_I2C1_ReadByte(0xee,0x1d);
        if (c20 > (pow(2, 15) - 1))   c20 = c20 - pow(2, 16);
        c21 = UB_I2C1_ReadByte(0xee,0x1e)<<8 | UB_I2C1_ReadByte(0xee,0x1f);
        if (c21 > (pow(2, 15) - 1))   c21 = c21 - pow(2, 16);
        c30 = UB_I2C1_ReadByte(0xee,0x20)<<8 | UB_I2C1_ReadByte(0xee,0x21);
        if (c30 > (pow(2, 15) - 1))   c30 = c30 - pow(2, 16);

   
      delay();
        UB_I2C1_WriteByte(0xee,0x0c,0x89);
        delay();
       UB_I2C1_ReadByte(0xee,0x0D);
       delay();
       UB_I2C1_WriteByte(0xee,0x06,0x00);
       delay();
       UB_I2C1_WriteByte(0xee,0x07,0x00);
       delay();
       UB_I2C1_WriteByte(0xee,0x08,0x07);
       delay();
       UB_I2C1_WriteByte(0xee,0x09,0x00);
       delay();


       while (1)
       {


           delay();
           uint8_t x08 = UB_I2C1_ReadByte(0xee,0x08);
           if (x08>>4 == 15)

           {


               uint32_t     register7 = UB_I2C1_ReadByte(0xee,0x00);
           
                uint32_t    register8 = UB_I2C1_ReadByte(0xee,0x01);
           
                uint32_t    register9 = UB_I2C1_ReadByte(0xee,0x02);
           
                   //Read Pressure end------------------------------------------------------------------------------------------------------------------------------
                uint32_t test_p = (register7<<16 | register8<<8 | register9);


              Praw = test_p;
              if (Praw > 8388607u)            // convert to signed int (Praw > (pow(2, 23) - 1))
              {
                 Praw = Praw - 16777216u;      //Praw - pow(2, 24)
              }


                  uint32_t register3 = UB_I2C1_ReadByte(0xee,0x03);
           
                    uint32_t register4 = UB_I2C1_ReadByte(0xee,0x04);
           
                   uint32_t register5 = UB_I2C1_ReadByte(0xee,0x05);
           
                   //Read Temp end------------------------------------------------------------------------------------------------------------------------------
                   uint32_t Traw = (register3<<16 | register4<<8 | register5);

                 if (Traw > 8388607u)            // convert to signed int (Traw > (pow(2, 23) - 1))
                 {
                    Traw = Traw - 16777216u;      //Traw - pow(2, 24)
                 }


                 Traw_sc = (float)Traw/1572864;
                 temperature = c0*0.5 + c1*Traw_sc;
                 // calculate physical pressure Pcomp [Pa]
                 Praw_sc = (float)Praw/524288;
pressure = c00 + Praw_sc*(c10 + Praw_sc *(c20+ Praw_sc *c30)) + Traw_sc*c01 + Traw_sc *Praw_sc *(c11+Praw_sc*c21);

}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: dps310 датчик давления и температуры
СообщениеДобавлено: 17 июл 2018, 14:08 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 233
и кучку дефайнов

Код:
#define DPS310_USIC XMC_I2C0_CH1 ///I2C-Channel for DPS
#define DPS310_USIC_CH_PIN_SDA USIC0_C1_DX0_P2_5
#define DPS310_USIC_CH_PIN_SCL USIC0_C1_DX1_P2_4
#define DPS310_Address (0x77<<1)

#define PRS_CFG 0x06 ///pressure config register
#define TMP_CFG 0x07 ///temperature config register
#define MEAS_CFG 0x08 ///Sensor Operating mode register
#define CFG_REG 0x09///Interrupt and FIFO-config
#define INT_STS 0x0A///Interrupt status register
#define RESET_REGISTER 0x0C///reset register of sensor
#define COEF_SRC 0x28///Temperature coefficient source

//reset
#define SOFT_RESET 0x09///sequence to perform soft-reset
#define FIFO_FLUSH 0x80///flush FIFO-Buffer

//sensor interrupt and fifo configuration
#define GENERATE_IR_T_SHIFT_P_SHIFT 0x2C///Generate interrupt if new pressure-value is available + shift values right(see datasheet for info)
#define GENERATE_IR_PR 0x20 ///Generate Interrupt if new pressure-value is available, without T_SHIFT and P_SHIFT

//sensor operating mode and status register-config
#define MEAS_CTRL_CONTINUES_TEMP_PRESSURE 0x07
#define MEAS_CTRL_CONTINUES_TEMP 0x06
#define MEAS_CTRL_CONTINUES_PRESSURE 0x05

//pressure-config
#define PM_RATE_128 0x70 ///128 messungen/sec
#define PM_PRC_128 0x07 ///pressure oversampling rate -128 times

#define PM_RATE_64 0x60 ///64 messungen/sec
#define PM_PRC_64 0x06 ///pressure oversampling rate -64 times

#define PM_RATE_32 0x50 ///32 messungen/sec
#define PM_PRC_32 0x05 ///pressure oversampling rate -32 times

#define PM_RATE_16 0x40 ///16 messungen/sec
#define PM_PRC_16 0x04 ///pressure oversampling rate -16 times

#define PM_RATE_8 0x30 ///8 messungen/sec
#define PM_PRC_8 0x03 ///pressure oversampling rate -8 times

#define PM_RATE_4 0x20 ///4 messungen/sec
#define PM_PRC_4 0x02 ///pressure oversampling rate -4 times

#define PM_RATE_2 0x10 ///2 messungen/sec
#define PM_PRC_2 0x01 ///pressure oversampling rate -2 times

#define PM_RATE_1 0x00 ///1 messungen/sec
#define PM_PRC_1 0x00 ///pressure oversampling rate -1 time

//temp-config
#define TMP_RATE_128 0x70 ///128 messungen/sec
#define TMP_PRC_128 0x07 ///temp oversampling rate -128 times

#define TMP_RATE_64 0x60 ///64 messungen/sec
#define TMP_PRC_64 0x06 ///temp oversampling rate -64 times

#define TMP_RATE_32 0x50 ///32 messungen/sec
#define TMP_PRC_32 0x05 ///temp oversampling rate -32 times

#define TMP_RATE_16 0x40 ///16 messungen/sec
#define TMP_PRC_16 0x04 ///temp oversampling rate -16 times

#define TMP_RATE_8 0x30 ///8 messungen/sec
#define TMP_PRC_8 0x03 ///temp oversampling rate -8 times

#define TMP_RATE_4 0x20 ///4 messungen/sec
#define TMP_PRC_4 0x02 ///temp oversampling rate -4 times

#define TMP_RATE_2 0x10 ///2 messungen/sec
#define TMP_PRC_2 0x01 ///temp oversampling rate -2 times

#define TMP_RATE_1 0x00 ///1 messungen/sec
#define TMP_PRC_1 0x00 ///temp oversampling rate -1 time

uint32_t kP = 0;   /**< compensation scale factor for pressure measurement (data sheet page 15, table 9) */
uint32_t kT = 0;



int32_t c0 = 0;      /**< coefficients to calculate physical values */
int32_t c1 = 0;

int32_t c00 = 0;   /**< coefficients to calculate physical values */
int32_t c10 = 0;   /**< coefficients to calculate physical values */
int32_t c20 = 0;   /**< coefficients to calculate physical values */
int32_t c30 = 0;   /**< coefficients to calculate physical values */
int32_t c01 = 0;   /**< coefficients to calculate physical values */
int32_t c11 = 0;   /**< coefficients to calculate physical values */
int32_t c21 = 0;   /**< coefficients to calculate physical values */

int32_t Praw = 0;   /**< pressure raw value */
int32_t Traw = 0;   /**< temperature raw value */

// variables for calculation
float Praw_sc = 0.0f;   /**< variable for pressure calculations */
float Traw_sc = 0.0f;   /**< variable for temperature calculations */
float h = 0.0f;
float h1 = 0.0f;
float pressure; /**< pressure for AttitudeController */
float temperature; /**< temperature for AttitudeController */



Спасибо force_major и NStorm за помощь.


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

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


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

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


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

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

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