Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Формирование случайной импульсной последовательности

Чт дек 07, 2017 08:32:36

Как представляете себе работа двух кнопок на одном входе?

У вас должна быть одна кнопка, а програмным путем определять что она нажата/ненажата и работать далее.

Re: Формирование случайной импульсной последовательности

Чт дек 07, 2017 11:15:31

КРАМ писал(а):Светодиоды нельзя будет погасить оба
при условии, что сумма падений на них меньше напряжения питания. например при питании 3,6 вольта и суперярких светодиодах они оба будут погашены, если пин МК будет в третьем состоянии...

Re: Формирование случайной импульсной последовательности

Чт дек 07, 2017 22:00:05

Работа двух кнопок на одном входе - легко:
Не нажата кнопка включения - на входе лог. 0 (в протосе так же), горит красный светодиод, зеленый не должен гореть (но в протосе оба не горят...)
Нажата кнопка включения и не нажата кнопка выключения - на входе лог. 1 (в протосе так же), горит зеленый светодиод, красный совсем не горит.
Нажата кнопка выключения - горит красный светодиод, на входе лог. 0. Но в протосе не горит красный светодиод, почему-то напряжение высокого уровня показывает, при нажатой кнопке выключения, хотя на входе стоит лог. 0.

Этот Weak pull-up я так пытаюсь отключить - нифига не правильно, как я понял:

WPUA = 0;

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 05:05:49

Изображение
Ето два варианта - с подтяжкой к + и к земле. Подтяжка нужна, иначе все будет лезть на вход.
И мой вопрос: Какой силой нужно нажимать S2 и S3 дабы на вход появилось 0 (+Vdd) если они там уже есть.

В ету схему включения активна одна кнопка - противоположная на резистора подтяжки. Когда отпускаем активную кнопку на входе ЛЕ появляется потенциал с резистора подтяжки и всякое нажимание на кнопки S2 и S3 не имеет никакого смысла

Логика кода должна быть такая
If (нажата)
;
else //ненажата
;

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 05:25:48

Что касается вопроса о кнопках:
"На борту" этого контроллера есть АЦП...
Можно хоть 20-ть кнопок "повесить" на один вход (ANx) контроллера /как делают в автомагнитолах и т.п./.

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 16:21:25

Прочитал я даташит, прочитал комментарии, пересобрал схему, изменил код. Все равно, я не могу установить ноль на выходе ножке RA3. Я не понимаю, что это за магия и как убрать эти 2,5 с этой ножки. Диоды не горят, вообще. Входы RA0 и RA1 имеют лог. 0 при нажатых кнопок, а диоды не горят, никакие.

Схема:

СпойлерИзображение


Код:
Спойлер
Код:
// Подключение нужных библиотек
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц

#define SIGNAL 30 // Длительность сигнала в мкс
#define DELMIN 100 // Максимальная задержка в мкс
#define DELMAX 400000 // Максимальная задержка в мкс

// PIC10F322 Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = EC        // Oscillator Selection bits (EC: CLKIN function enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = ON          // Code Protection bit (Program memory code protection is enabled)
#pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
#pragma config LPBOR = ON       // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

void Prepare(); // Функция подготовки МК

int main()
{
    Prepare(); // Запуск функции подготовки     
    int K = 4;
    while(1) // Бесконечный цикл работы
    {   
        if(RA0 == 0 && RA1 == 1) // Проверка на нажатые кнопки
        {
            RA3 = 1; // Зажигаем зеленый светодиод
            //srand(K); // Инициализация генератора случайных импульсов
            //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
            //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
            __delay_us(SIGNAL-4); // Определяем задержку
            RA2 = 1; // Подаем на выход лог. единицу
            __delay_us(SIGNAL-2); // Определяем длительность сигнала
            RA2 = 0; // Подаем на выход лог. ноль   
        }
        else
        {
            RA3 = 0; // Зажигаем красный светодиод
            RA2 = 0; // На выход ставил лог. ноль
        }       
    }
    return 0;   
}

// Функция подготовки
void Prepare()
{
    TRISA = 0b0011; // Направление работы ножек порта А (вход)
    PORTA = 0b0000; // очищаем порт А
    OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
    WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
}

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 16:32:08

SpeedFighter писал(а):не могу установить ноль на выходе ножке RA3
RA3 не может быть выходом!!!
Изображение

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 16:35:43

SpeedFighter писал(а):не могу установить ноль на выходе ножке RA3
RA3 не может быть выходом!!!
Изображение

Хорошо, тогда она может быть нормальным человеческим входом для одной кнопки?

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 16:36:27

Конечно, но для этого его надо назначить в Config-е как вход (_MCLRE_OFF).
!!! Но, некоторые самодельные программаторы не смогут потом "залить" новую прошивку!!!

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 16:52:17

Теперь генерация сигнала есть, горит зеленый светодиод, НО:

1. Зеленый светодиод горит даже тогда, когда кнопка старт не нажата.
2. Красный светодиод не горит, когда не нажата кнопка старта или нажата кнопка стоп.

Код:
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) - выключено


Схема:

СпойлерИзображение


Код:

Спойлер
Код:
// Подключение нужных библиотек
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц

#define SIGNAL 30 // Длительность сигнала в мкс
#define DELMIN 100 // Максимальная задержка в мкс
#define DELMAX 400000 // Максимальная задержка в мкс

// PIC10F322 Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = EC        // Oscillator Selection bits (EC: CLKIN function enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = ON          // Code Protection bit (Program memory code protection is enabled)
#pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
#pragma config LPBOR = ON       // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

void Prepare(); // Функция подготовки МК

int main()
{
    Prepare(); // Запуск функции подготовки     
    int K = 4;
    while(1) // Бесконечный цикл работы
    {   
        if((RA0 == 0) && (RA3 == 1)) // Проверка на нажатые кнопки
        {
            RA1 = 0; // Зажигаем зеленый светодиод
            //srand(K); // Инициализация генератора случайных импульсов
            //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
            //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
            __delay_us(SIGNAL-4); // Определяем задержку
            RA2 = 1; // Подаем на выход лог. единицу
            __delay_us(SIGNAL-2); // Определяем длительность сигнала
            RA2 = 0; // Подаем на выход лог. ноль   
        }
        else
        {
            RA1 = 1; // Зажигаем красный светодиод
            RA2 = 0; // На выход ставил лог. ноль
        }       
    }
    return 0;   
}

// Функция подготовки
void Prepare()
{
    TRISA = 0b1001; // Направление работы ножек порта А (вход)
    PORTA = 0b0000; // очищаем порт А
    OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
    WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
}

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:03:23

В Си не подскажу, но предполагаю, что к выходу RA1 идёт обращение как к PORTA, а не LATA.

Добавлено after 2 minutes 27 seconds:
P.S.
Обращение к PORTA - это чтение; LATA - запись.

Добавлено after 2 minutes 8 seconds:
P.P.S.
Не вижу записи в ANSELA.

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:07:05

Тогда почему работает генератор, но не работает выход светодиода?

Какой записи? О.о

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:11:55

Тогда почему работает генератор, но не работает выход светодиода?
В симуляторе или на реальном "железе"?
СпойлерИзображение

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:25:00

В симуляторе (Prouteus).

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

НО:

При нажатой кнопке стоп не горит красный светодиод, он вообще не горит:

Код:


Спойлер
Код:
// Подключение нужных библиотек
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

// Параметры микроконтроллера
#define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц

// Параметры сигнала
#define SIGNAL 30 // Длительность сигнала в мкс
#define DELMIN 100 // Максимальная задержка в мкс
#define DELMAX 400000 // Максимальная задержка в мкс

// Обознаение выводов и кнопок
#define START RA0 // Кнопка запуска работы МК
#define STOP RA3 // Кнопкка остановки работы МК
#define LED RA1 // Вывод на светодиоды
#define GREEN 0 // Сигнал для зеленого светодиода
#define RED 1 // Сигнал для красного светодиода
#define GENERATOR RA2 // Выход генератора

// PIC10F322 Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = EC        // Oscillator Selection bits (EC: CLKIN function enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = ON          // Code Protection bit (Program memory code protection is enabled)
#pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
#pragma config LPBOR = ON       // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

void Prepare(); // Функция подготовки МК

int main()
{
    Prepare(); // Запуск функции подготовки     
    int K = 4;
    while(1) // Бесконечный цикл работы
    {   
        if((START == 0) && (STOP == 1)) // Проверка на нажатые кнопки
        {
            LED = 0; // Зажигаем зеленый светодиод
            //srand(K); // Инициализация генератора случайных импульсов
            //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
            //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
            __delay_us(SIGNAL-4); // Определяем задержку
            GENERATOR = 1; // Подаем на выход лог. единицу
            __delay_us(SIGNAL-2); // Определяем длительность сигнала
            GENERATOR = 0; // Подаем на выход лог. ноль   
        }
        else
        {
            LED = 1; // Зажигаем красный светодиод
            GENERATOR = 0; // На выход ставил лог. ноль
        }       
    }
    return 0;   
}

// Функция подготовки
void Prepare()
{
    TRISA = 0b1001; // Направление работы ножек порта А (вход)
    PORTA = 0b0000; // очищаем порт А
    OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
    WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
    ANSELA&=~((1<<0)|(1<<1)|(1<<2));
}


Схема:

Спойлер

Изображение

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:38:22

Попробуйте просто включить красный светодиод (без условий).
В ANSEL пропишите "0". Всё равно аналоговыми входами вы не пользуетесь.

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:43:29

Сделал, но все равно, почему-то, при нажатии на кнопку стоп красный светодиод гаснет. Хотя я программно не выключаю его!

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 17:47:27

Можете сделать Disassembly listing?

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 18:01:04

Что-то не нашел инфы, как в MPLAB X сделать это...

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 18:09:14

Тогда, выкладывайте проект MPLABX но, вначале, пройдитесь по шагам в Debugger-е и постарайтесь сами найти ошибку.

Re: Формирование случайной импульсной последовательности

Пт дек 08, 2017 18:38:38

Нашел, вот:

Спойлер
Код:
17:            // Подключение нужных библиотек
18:            #include <stdio.h>
19:            #include <stdlib.h>
20:            #include <xc.h>
21:           
22:            // Параметры микроконтроллера
23:            #define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц
24:           
25:            // Параметры сигнала
26:            #define SIGNAL 30 // Длительность сигнала в мкс
27:            #define DELMIN 100 // Максимальная задержка в мкс
28:            #define DELMAX 400000 // Максимальная задержка в мкс
29:           
30:            // Обознаение выводов и кнопок
31:            #define START RA0 // Кнопка запуска работы МК
32:            #define STOP RA3 // Кнопкка остановки работы МК
33:            #define LED RA1 // Вывод на светодиоды
34:            #define GREEN 0 // Сигнал для зеленого светодиода
35:            #define RED 1 // Сигнал для красного светодиода
36:            #define GENERATOR RA2 // Выход генератора
37:           
38:            // PIC10F322 Configuration Bit Settings
39:           
40:            // 'C' source line config statements
41:           
42:            // CONFIG
43:            #pragma config FOSC = EC        // Oscillator Selection bits (EC: CLKIN function enabled)
44:            #pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
45:            #pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
46:            #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
47:            #pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
48:            #pragma config CP = ON          // Code Protection bit (Program memory code protection is enabled)
49:            #pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
50:            #pragma config LPBOR = ON       // Brown-out Reset Selection bits (BOR enabled)
51:            #pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
52:            #pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
53:           
54:            // #pragma config statements should precede project file includes.
55:            // Use project enums instead of #define for ON and OFF.
56:           
57:            void Prepare(); // Функция подготовки МК
58:           
59:            int main()
60:            {
61:                Prepare(); // Запуск функции подготовки     
01E7  21DC     CALL 0x1DC
62:                int K = 4;
01E8  3004     MOVLW 0x4
01E9  00C2     MOVWF K
01EA  3000     MOVLW 0x0
01EB  00C3     MOVWF 0x43
63:                LED = RED;
01EC  1485     BSF PORTA, 0x1
64:                while(1) // Бесконечный цикл работы
65:                {   
66:                    if((START == 0) && (STOP == 1)) // Проверка на нажатые кнопки
01ED  29FB     GOTO 0x1FB
01EE  1D85     BTFSS PORTA, 0x3
01EF  29FA     GOTO 0x1FA
01FB  1C05     BTFSS PORTA, 0x0
01FC  29EE     GOTO 0x1EE
67:                    {
68:                        //LED = GREEN; // Зажигаем зеленый светодиод
69:                        //srand(K); // Инициализация генератора случайных импульсов
70:                        //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
71:                        //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
72:                        __delay_us(SIGNAL-4); // Определяем задержку
01F0  3022     MOVLW 0x22
01F1  00C1     MOVWF 0x41
01F2  0BC1     DECFSZ 0x41, F
01F3  29F2     GOTO 0x1F2
01F4  0000     NOP
73:                        GENERATOR = 1; // Подаем на выход лог. единицу
01F5  1505     BSF PORTA, 0x2
74:                        __delay_us(SIGNAL-2); // Определяем длительность сигнала
01F6  3025     MOVLW 0x25
01F7  00C1     MOVWF 0x41
01F8  0BC1     DECFSZ 0x41, F
01F9  29F8     GOTO 0x1F8
75:                        GENERATOR = 0; // Подаем на выход лог. ноль   
01FA  1105     BCF PORTA, 0x2
76:                    }
77:                    else
01FD  29FA     GOTO 0x1FA
78:                    {
79:                        //LED = RED; // Зажигаем красный светодиод
80:                        GENERATOR = 0; // На выход ставил лог. ноль
81:                    }       
82:                }
83:                return 0;   
84:            }
85:           
86:            // Функция подготовки
87:            void Prepare()
88:            {
89:                TRISA = 0b1001; // Направление работы ножек порта А (вход)
01DC  3009     MOVLW 0x9
01DD  0086     MOVWF TRISA
90:                PORTA = 0b0000; // очищаем порт А
01DE  0185     CLRF PORTA
91:                OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
01DF  3070     MOVLW 0x70
01E0  0090     MOVWF OSCCON
92:                WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
01E1  30F0     MOVLW 0xF0
01E2  00C0     MOVWF __pcstackBANK0
01E3  0840     MOVF __pcstackBANK0, W
01E4  0589     ANDWF WPUA, F
93:                ANSELA = 0; // Отключение аналоговой части
01E5  0188     CLRF ANSELA
94:            }
01E6  0008     RETURN


А вот так работает, но не при нажатых клавишах, а на нажатие работает, хотя я этого не делал:

Спойлер
Код:
// Подключение нужных библиотек
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

// Параметры микроконтроллера
#define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц

// Параметры сигнала
#define SIGNAL 30 // Длительность сигнала в мкс
#define DELMIN 100 // Максимальная задержка в мкс
#define DELMAX 400000 // Максимальная задержка в мкс

// Обознаение выводов и кнопок
#define BUTTON RA0 // Кнопка МК
#define LED RA1 // Вывод на светодиоды
#define GREEN 0 // Сигнал для зеленого светодиода
#define RED 1 // Сигнал для красного светодиода
#define GENERATOR RA2 // Выход генератора

// PIC10F322 Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = EC        // Oscillator Selection bits (EC: CLKIN function enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = ON          // Code Protection bit (Program memory code protection is enabled)
#pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
#pragma config LPBOR = ON       // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

void Prepare(); // Функция подготовки МК

int main()
{
    Prepare(); // Запуск функции подготовки     
    int K = 4;
    while(1) // Бесконечный цикл работы
    {   
        if(BUTTON == 1) // Проверка на нажатые кнопки
        {
            LED = GREEN; // Зажигаем зеленый светодиод
            //srand(K); // Инициализация генератора случайных импульсов
            //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
            //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
            __delay_us(SIGNAL-4); // Определяем задержку
            GENERATOR = 1; // Подаем на выход лог. единицу
            __delay_us(SIGNAL-2); // Определяем длительность сигнала
            GENERATOR = 0; // Подаем на выход лог. ноль   
        }
        else
        {
            LED = RED; // Зажигаем красный светодиод
            GENERATOR = 0; // На выход ставил лог. ноль
        }   
    }
    return 0;   
}

// Функция подготовки
void Prepare()
{
    TRISA = 0b1001; // Направление работы ножек порта А (вход)
    PORTA = 0b0000; // очищаем порт А
    OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
    WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
    ANSELA = 0; // Отключение аналоговой части
}


СпойлерИзображение
Последний раз редактировалось SpeedFighter Пт дек 08, 2017 19:14:41, всего редактировалось 1 раз.
Ответить