Перейти к содержанию
    

On 9/28/2023 at 7:11 PM, EdgeAligned said:

 "Язык программирования Си" авторов Ритчи и Кернигана. 

Мне стилистика изложения не понравилась.
Не стал ее читать.
Читал других авторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Pjatruha said:

Спасибо за совет. Скачал ее практически сразу как пришел сюда.

Стивен Прата хорошо читается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, dimka76 сказал:

Читал других авторов.

А что вы читали?

Т.к я ничего не знаю в этой теме, то мне сложно было выбирать. Одни люди Хают эту гнигу, другие говорят, что это бестселлер. Сколько людей - столько и мнений. И это нормально. В любом случае, эта книга вызвала возле себя много отзывов, мнений и суждений. О ней знают многие. Поэтому я решил, что стоит начать с нее.

19 минут назад, izerg сказал:

Стивен Прата хорошо читается.

Вы о ней говорите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/29/2023 at 1:26 PM, Pjatruha said:

А что вы читали?

Не помню, давно это было.

Сейчас и в интернете много сайтов оформленных в виде учебников.

Вот, например - http://cpp.com.ru/shildt_spr_po_c/index.html

Можно просто тупо стандарт читать )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, Pjatruha said:

Вы о ней говорите?

да, обычно к ней упражнения в архиве.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решил посмотреть осциллографом форму сигнала на ножках ЖКИ. Что-то мне она не очень нравится. Наблюдаются всплески при переключении. А на COM выводах присутствует шум в среднем положении. С чем это может быть связано, со схемотехникой отладочной платы? Пульсации по лини 3.3 вольт в пределах 0,002 вольт(осцоллограф их не видит) пробовал запитывал плату от USB ноутбука, от повербанка и от программатора ST-Link. Результат во всех случаях одинаковый.

Но есть и положительный момент. Частота совпадает с частотой в паяльнике. 😊

Спойлер

Осциллограмма по питанию 3.3 вольта. Предел осциллографа выставлен  на 0,01В\дел

1695994123399.thumb.jpg.95bba2ac5dff33c310b2957cba611768.jpg

Осциллограмма на COM выводе

1695994123359.thumb.jpg.94cafd4614b56a05f81b4e14410c64c3.jpg

Осциллограмма на SEG выводе.

1695994123337.thumb.jpg.b78a791f894d09bc71609286e9d5c917.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/29/2023 at 4:55 PM, Pjatruha said:

Решил посмотреть осциллографом форму сигнала на ножках ЖКИ. Что-то мне она не очень нравится. Наблюдаются всплески при переключении. А на COM выводах присутствует шум в среднем положении. С чем это может быть связано, со схемотехникой отладочной платы? Пульсации по лини 3.3 вольт в пределах 0,002 вольт(осцоллограф их не видит) пробовал запитывал плату от USB ноутбука, от повербанка и от программатора ST-Link. Результат во всех случаях одинаковый.

 

Теплый ламповый осциллограф :sarcastic:

На одно канале не очень информативно. Не видно как переключаются SEG относительно COM.

Всплески на фронтах - не согласованный щуп.

Шум в среднем положении - как как у вас это среднее положение организовано ? Резистивный делитель ?

Выключите паяльник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, dimka76 сказал:

Не видно как переключаются SEG относительно COM.

Что есть, то есть. Но судя по тому, что на ЖКИ отображается то, что было задумано, то переключение SEG и COM относительно друг друга корректное.

12 часов назад, dimka76 сказал:

Всплески на фронтах - не согласованный щуп.

Почему тогда осциллограммы снятые этим же щупом щупом в схеме паяльника таких всплесков не имеют(см. осциллограммы на стр.5 этого форума)? Возможно дело в том, что в схеме паяльника осциллограммы я снимал без ЖКИ? Осциллограммы снятые с макетной платы  были сделаны с подключенным ЖКИ. На сколько я понял, ЖКИ это конденсатор. Наверное поэтому и всплески.

А вот про шум на COM линиях объяснений у меня пока нет. Средняя точка образована резистивными делителями с такими же номиналами, как и в оригинальной схеме(см. стр. 4)

Спойлер

Фото отладочной платы

1696005460277.thumb.jpg.b515b50941ac26b94e1a13e4dfa96845.jpg

 

Изменено пользователем Pjatruha
опечатки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Pjatruha said:

Что есть, то есть. Но судя по тому, что на ЖКИ отображается то, что было задумано, то переключение SEG и COM относительно друг друга корректное.

Почему тогда осциллограммы снятые этим же щупом щупом в схеме паяльника таких всплесков не имеют(см. осциллограммы на стр.5 этого форума). Возможно дело в том, что в схеме паяльника осциллограммы я снимал без ЖКИ. Осциллограммы снятые с макетной платы  были сделаны с подключенным ЖКИ. На сколько я понял, ЖКИ это конденсатор. Наверное поэтому и всплески.

А вот про шум на COM линиях объяснений у меня пока нет. Средняя точка образована резистивными делителями с такими же номиналами, как и в оригинальной схеме(см. стр. 4)

элементы исходной схемы и макетной схемы - одинаковы? 

Схема соединения и номиналы одинаковы? 

в чем отличие? ... пучек проводов + разъемы макета - против коротких соединений исходной схемы? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, izerg сказал:

пучек проводов + разъемы макета - против коротких соединений исходной схемы?

Да, отличия только в этом. Ну и схема питания МК отличается. Отличаются линейные стабилизаторы на 3.3 вольта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/29/2023 at 9:59 PM, Pjatruha said:

Да, отличия только в этом. Ну и схема питания МК отличается. Отличаются линейные стабилизаторы на 3.3 вольта.

Извините, лень перечитывать всю тему.

А что у вас за микроконтроллер ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dimka76, тема действительно разрослась. 🙂

В схеме паяльника установлен STM8S003F3P6, а на отладочной плате стоит STM8S103F3P6. Если я не ошибаюсь, отличаются они только количеством циклов перезаписи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, Pjatruha сказал:

Осциллограммы снятые с макетной платы  были сделаны с подключенным ЖКИ.

Да, дело было именно в этом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настало время вывода осмысленной информации на ЖКИ.  🙂

Спойлер

Эту программу я написал как благодарность всем неравнодушным к моему рвению. Большое вам спасибо, за то что поделились со мной своими знаниями.

Спойлер
#include "IOSTM8S103F3.h"
volatile int x=0;
volatile char i=1,j=0,k=1;

void interrupt_init(void);

#pragma vector=TIM1_OVR_UIF_vector
 __interrupt void Pin6_interrupt(void) 
{
 x++;
 k++;
 if (k == 9)
 {
   k=1;
 }
 j=k-1;
 
  if (x == 10000)
 {
   x=0;
 }
  TIM1_SR1_bit.UIF = 0; //Cброс флага прерывания
}

void com_D12()
{
   if (PC_DDR_bit.DDR3 == 1)
     {
        PC_DDR_bit.DDR3 = 0; // Вход com D9
        PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен
     }
      
   PC_DDR_bit.DDR6 = 1; // Выход com D12
   PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе
   PC_CR1_bit.C16 = 1; // push-pull
}

void com_D12_()
{
      PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе com D12
}

void com_D11()
{
   PC_DDR_bit.DDR5 = 1; // Выход com D11
   PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе
   PC_CR1_bit.C15 = 1; // push-pull
   
   PC_DDR_bit.DDR6 = 0; // Вход com D12
   PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен
}

void com_D11_()
{
   PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе com D11
}

void com_D10()
{
   PC_DDR_bit.DDR4 = 1; // Выход com D10
   PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе
   PC_CR1_bit.C14 = 0; // push-pull
   
   PC_DDR_bit.DDR5 = 0; // Вход com D11
   PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен
}

void com_D10_()
{
   PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе com D10
}

void com_D9()
{
   PC_DDR_bit.DDR3 = 1; // Выход com D9
   PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе
   PC_CR1_bit.C13 = 1; // push-pull
      
   PC_DDR_bit.DDR4 = 0; // Вход com D10
   PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен
}

void com_D9_()
{
   PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе com D9
}

void COM()
{
  if (k == 1)
   {
     com_D12();
   }
   if (k == 2)
   {
     com_D12_();
   }
   
   if (k == 3)
   {
     com_D11();
   }
   if (k == 4)
   {
     com_D11_();
   }
   
   if (k == 5)
   {
     com_D10();
   }
   if (k == 6)
   {
     com_D10_();
   }
   
   if (k == 7)
   {
     com_D9();
   }
   if (k == 8)
   {
     com_D9_();
   }
   
   if (j == (k-2))
   {
     j=k-1;
   }
}

char DIGIT_PUSTO[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {1,0, 1,0, 1,0, 1,0}, // (0)
             {1,0, 1,0, 1,0, 1,0}, // (1)
};

char DIGIT_C[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {0,1, 1,0, 1,0, 1,0}, //14 (1)           
             {0,1, 1,0, 0,1, 0,1}, //13 (0)
};

char DIGIT_P[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
            //12   11   10   09
             {0,1, 0,1, 0,1, 1,0}, //14 (1)
             {0,1, 1,0, 0,1, 1,0}, //13 (0)
};

char DIGIT_A[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {0,1, 0,1, 0,1, 1,0}, //14 (1)
             {0,1, 0,1, 0,1, 1,0}, //13 (0)
};

char DIGIT_I[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {1,0, 0,1, 0,1, 1,0}, //14 (1)
             {0,1, 1,0, 0,1, 0,1}, //13 (0)
};

char DIGIT_B[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {0,1, 1,0, 0,1, 1,0}, //14 (1)
             {0,1, 0,1, 0,1, 0,1}, //13 (0)
};

char DIGIT_O[2][8] =
{           //0 1  2 3  4 5  6 7
            //1 2  3 4  5 6  7 8
	    //12   11   10   09
             {0,1, 0,1, 0,1, 1,0}, //14 (1)
             {0,1, 1,0, 0,1, 0,1}, //13 (0)
};



int main (void) 
{ 
   
   PC_DDR_bit.DDR3 = 0; // Вход com D9
   PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C23 = 0; // Прерывая запрещены   
      
   PC_DDR_bit.DDR4 = 0; // Вход com D10
   PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C24 = 0; // Прерывая запрещены 
   
   PC_DDR_bit.DDR5 = 0; // Вход com D11
   PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C25 = 0; // Прерывая запрещены 
   
   PC_DDR_bit.DDR6 = 0; // Вход com D12
   PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен
   PC_CR2_bit.C26 = 0; // Прерывая запрещены
        
   PC_DDR_bit.DDR7 = 1; // Выход SEG D13
   PC_CR1_bit.C17 = 1; // push-pull
   PC_CR2_bit.C27 = 0; // Cкорость переключения 2МГц
   
   PD_DDR_bit.DDR2 = 1; // Выход SEG D14
   PD_CR1_bit.C12 = 1;
   PD_CR2_bit.C22 = 0;
  
   PD_DDR_bit.DDR6 = 1; // Выход SEG D5
   PD_CR1_bit.C16 = 1;  
   PD_CR2_bit.C26 = 0;
  
   PA_DDR_bit.DDR1 = 1; // Выход SEG D6
   PA_CR1_bit.C11 = 1; 
   PA_CR2_bit.C21 = 0;
  
   PA_DDR_bit.DDR2 = 1; // Выход SEG D7
   PA_CR1_bit.C12 = 1; 
   PA_CR2_bit.C22 = 0;
   
   PA_DDR_bit.DDR3 = 1; // Выход SEG D8
   PA_CR1_bit.C13 = 1; 
   PA_CR2_bit.C23 = 0;
   
   PB_DDR_bit.DDR5 = 1; // Настройка 5-го бита порта B на вывод.
   PB_ODR_bit.ODR5 = 1; // Гашение светодиода.
   PB_CR1_bit.C15 = 1; // Переключение порта в режим push-pull. 
   PB_CR2_bit.C25 = 0; // Cкорость переключения до 2 МГц
   
   //Частота переполнений = 2000000Гц / 4 / 500 = 1000 Гц(1 мс)
  TIM1_PSCRH = 0x00;//записываем 2 старших байта числа 3(4-1) в hex формате в регистр предделителя
  TIM1_PSCRL = 0x03;//записываем 2 младших байта числа 3(4-1)в hex формате в регистр предделителя
  TIM1_ARRH = 0x01; //записываем 2 старших байта числа 500 в hex формате в регистр автоперезагруски
  TIM1_ARRL = 0xF4; //записываем 2 младших байта числа 500 в hex формате в регистр автоперезагруски

  TIM1_CR1_bit.DIR = 0; // Cчет вверх
  TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика
  TIM1_EGR_bit.UG = 1;  //Вызываем Update Event для загрузки предделителя

  TIM1_IER_bit.UIE = 1; //Разрешаем прерывание
  TIM1_CR1_bit.CEN = 1; //Запускаем таймер

  asm("rim");
  
  while(1)
  {
    if (x < 1000) // _ _ С
 {
     COM();

//   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_C[i][j]; // seg D13
     
//   DIGIT_2
     i=!i;
     PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7
 }
 
 if (x >= 1000 && x < 2000) // _ С П
 {
     COM();
   
//   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_P[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_P[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_C[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_C[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7

 }
 
 if (x >= 2000 && x < 3000) // С П А
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_A[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_A[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_P[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_P[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_C[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D7
   
 }
 
 if (x >= 3000 && x < 4000) // П А С
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_C[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_A[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_A[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_P[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_P[i][j]; // seg D7

 }
 
 if (x >= 4000 && x < 5000) // А С И
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_I[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_I[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_C[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_C[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_A[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_A[i][j]; // seg D7

 }
 
 if (x >= 5000 && x < 6000) // С И Б
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_B[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_B[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_I[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_I[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_C[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D7

 }
 
 if (x >= 6000 && x < 7000) // И Б О
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_O[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_O[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_B[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_B[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_I[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_I[i][j]; // seg D7

 }
 
 if (x >= 7000 && x < 8000) // Б О _
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_O[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_O[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_B[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_B[i][j]; // seg D7

 }
 
  if (x >= 8000 && x < 9000) // О _ _
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_O[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_O[i][j]; // seg D7

 }

 if (x >= 9000 && x < 10000) // _ _ _
 {
   COM();
   
   //   DIGIT_1
     i=!i;
     PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14
     i=!i;
     PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13
   
//   DIGIT_2
        i=!i;
     PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5
     i=!i;
     PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6

//   DIGIT_3
        i=!i;
     PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8
     i=!i;
     PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7

 }
  }
}

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, Pjatruha said:

Настало время вывода осмысленной информации на ЖКИ.  🙂

::)  а Цифры то - где ?:) 

раз уже буквы получились, то с цифрами то вообще проблемы не должно было быть ?:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...