Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 137 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-05 09:43 
Не в сети

Зарегистрирован: 2015-июн-19 13:11
Сообщения: 10
Спасибо. При необходимости откажемся от внешней подтяжки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-14 11:20 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Здравствуйте. Осваиваю микросхему 1636РР2АУ, столкнулся со сложностью при работе в последовательном режиме. Подаю команду на чтение, а ответа нет (микросхема новая, ни разу не записывалась).
Формат команды следующий:
NUM3..NUM0 - нули (выбираем первый сектор);
CEB = 0;
NVRB = 1;
OEB = 0;
WEB = 1;
TMEN = 0;
BYTEB = 0;
VREAD = 0;
Обмен через SPI по протоколу Motorola. Длина посылки для команды 15 бит (2 стартовых, 11 команда, 1 17-й бит адреса, 1 пустой для обеспечения сдвига на сигнал строба). В спойлерах снимки с осциллографа и фрагмент кода.

Подскажите, пожалуйста, что я делаю не так.
Открыть Код
SPI1->SSPx_CR1 = 0x00; // Выключение SPI
// Передача 15 бит, скорость 5 МГц
SPI1->SSPx_CR0 = (progCR0<<8) | (1<<7) | (1<<3) | (1<<2) | (1<<1);
SPI1->SSPx_CPSR = progCPSR;

PORTB->OE = (1<<15) | (1<<12) | (1<<13) | (1<<11) ;
PORTB->FUNC |= (1<<31) | (1<<29) | (1<<27);
PORTB->ANALOG = 0xFFFF;
PORTB->PULL = 0x00;
PORTB->PWR = (1<<31) | (1<<29) | (1<<27) | (1<<25) | (1<<23);

cmd[0] = 0b10000101000000; // команда
addr[0] = 0x00; // адрес

delay = 2;
PORTB->RXTX |= (1<<11); // MRST
//SPI1->SSPx_CR1 = (1<<1) ;
PORTB->RXTX |= (1<<12); // STROBE

SPI1->SSPx_DR = cmd[0];
SPI1->SSPx_CR1 = (1<<1) ;
while (delay>0) // цикл для задания ширины строба
{delay--;}
PORTB->RXTX &= ~(1<<12);
SPI1->SSPx_CR0 |= (0x0F<<0);
while ((SPI1->SSPx_SR & 0x01) != 0x01)
{;}
SPI1->SSPx_DR = addr[0];


while ((SPI1->SSPx_SR & 0x01) != 0x01)
{;}
Закрыть

Открыть Осцилограммы
Вложение:
Комментарий к файлу: А - сигнал тактирования
В - TDI
D - сигнал строба

IMAGE001.BMP
IMAGE001.BMP [ 225.05 КБ | Просмотров: 1762 ]

Вложение:
Комментарий к файлу: Увеличено
IMAGE002.BMP
IMAGE002.BMP [ 225.05 КБ | Просмотров: 1762 ]
Закрыть

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-15 13:51 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
Если только начинаете использовать, то лучше применять 1636РР4, в ней нормальный SPI, которого нет в 1626РР2. А программы подобного рода уже много раз писались различными пользователями. Вот один из таких примеров. Внутри архива схема включения в visio с МК 1986ВЕ91 при применении его SPI и исходники программы.
Правда пример для 1636РР1 но адаптировать можно и для 1636РР2 логика одинаковая.


Вложения:
1636.zip [36.11 КБ]
Скачиваний: 101
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-19 12:08 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
1636РР4 пока не закупили, а архив уже имеется, но всё равно не работает

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-23 14:26 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Появилось ещё несколько вопросов, но уже про использование в паре с МК 1986ВЕ91Т по параллельному интерфейсу.
Случай первый. Выводы настроены на функцию порта. Подаём команды согласно спецификации и не наблюдаем переключения бита D6, соответственно при считывании имеем чистую микросхему. При работе даже на частоте 80 МГц не получается попасть во временные интервалы, указанные на диаграммах.
Вопрос. Почему не переключается бит D6 (может есть какие-то нюансы)? Обязательно ли выдерживать временные интервалы? Если да, то как этого можно добиться?

Случай второй. Подключена одна микросхема памяти к внешней шине данных, используется для хранения данные, программа с неё не выполняется. При считывании имеем 0х0F. После попытки записи картина не меняется. При работе используем функции из примера для отладочной платы с незначительными изменениями.
Вопрос. Будет ли работать память при подобном подключении?

Надеюсь на помощь. Заранее спасибо.

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-23 14:50 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1260
Откуда: АО "ПКК Миландр"
KIA писал(а):
Появилось ещё несколько вопросов, но уже про использование в паре с МК 1986ВЕ91Т по параллельному интерфейсу.
Случай первый. Выводы настроены на функцию порта. Подаём команды согласно спецификации и не наблюдаем переключения бита D6, соответственно при считывании имеем чистую микросхему. При работе даже на частоте 80 МГц не получается попасть во временные интервалы, указанные на диаграммах.
Вопрос. Почему не переключается бит D6 (может есть какие-то нюансы)? Обязательно ли выдерживать временные интервалы? Если да, то как этого можно добиться?

Случай второй. Подключена одна микросхема памяти к внешней шине данных, используется для хранения данные, программа с неё не выполняется. При считывании имеем 0х0F. После попытки записи картина не меняется. При работе используем функции из примера для отладочной платы с незначительными изменениями.
Вопрос. Будет ли работать память при подобном подключении?

Надеюсь на помощь. Заранее спасибо.


Осциллограмму бы увидеть, и схему включения. Ну и программный код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-26 10:18 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Пожалуйста. Материалы по первому случаю, когда ножки МК настроены как порт.

Открыть Осцилограмма
Вложение:
Комментарий к файлу: A -CE
B - OE
C - D6
D - WE
Может быть не очень информативно в плане переданной информации, но другого способа снять осцилограмму нет

IMAGE003.BMP
IMAGE003.BMP [ 225.05 КБ | Просмотров: 1678 ]
Закрыть

Открыть Схема подключения
Вложение:
Схема.jpg
Схема.jpg [ 364.33 КБ | Просмотров: 1678 ]
Закрыть

Открыть Текст
#include <1986be91.h>
#include <1986be91_rst_clk.h>
#include <1986be91_port.h>
#include <1986be91_uart.h>

void erase (void);
void write (void);
unsigned char read (void);
void opros (void);

unsigned int schet;
unsigned char data;
unsigned char status[5];

unsigned char read (void)
{
PORTA->OE = 0x200;
PORTC->RXTX = 1<<2;
PORTF->RXTX = 0x02;
data = (PORTA->RXTX & 0xFF);
while (UART2->IFLS == 0x08)
{;}
UART2->DR = data;
return data;
}

void erase (void)
{
PORTA->OE = 0xC3FF; // Порт данных на выход
PORTC->RXTX |= (1<<2); // WE установить
// 1 команда
PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0xAA; // Данные
PORTC->RXTX |= (1<<1); // OE установить
PORTA->RXTX |= (1<<14); // СЕ установить
//PORTC->RXTX |= (1<<2); // WE установить
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 2 Команда
PORTF->RXTX = 0x2AA; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0x55; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 3 команда
PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0x80; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 4 команда
PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0xAA; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 5 команда
PORTF->RXTX = 0x2AA; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0x55; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 6 команда
PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0x10; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
PORTF->RXTX = 0x00; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX = 0x00; // Данные
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<1); // OE сбросить
schet = 160;
while (schet>0)
{schet--;}

}

void write (void)
{
// Запись в память
PORTA->OE = 0xC3FF; // Порт данных на выход
PORTC->RXTX = 0x00;
// 1 команда
PORTC->RXTX |= (1<<2); // WE установить
PORTA->RXTX |= (1<<14); // СЕ установить

PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес

PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTC->RXTX |= (1<<1); // OE установить
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTA->RXTX = 0xAA; // Данные
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 2 Команда
PORTF->RXTX = 0x2AA; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX = 0x55; // Данные
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// 3 команда
PORTF->RXTX = 0x555; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX = 0xA0; // Данные
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
// Команда записи данных
PORTF->RXTX = 0x02; // Адрес
PORTE->RXTX = 0x00; // Адрес
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<2); // WE сбросить
PORTA->RXTX = 0x03; // Данные
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<2); // WE установить
PORTA->RXTX &= ~(1<<14); // СЕ сбросить
PORTC->RXTX &= ~(1<<1); // OE сбросить
PORTA->RXTX |= (1<<14); // СЕ установить
PORTC->RXTX |= (1<<1); // OE установить

opros();
}

void opros (void)
{
unsigned char ok;
PORTA->OE = 0x200; // Настройка порта для опроса статусных бит

// Опрос переключающегося бита
PORTF->RXTX = 0x02; // Адрес
PORTE->RXTX = 0x00; // Адрес
status[0] = PORTA->RXTX & 0x40;
status[1] = PORTA->RXTX & 0x40;
while (status[0]==status[1])
{
status[0] = PORTA->RXTX & 0x40;
status[1] = PORTA->RXTX & 0x40;
}
}

unsigned char opros_erase (void)
{
PORTA->OE = 0x200; // Настройка порта для опроса статусных бит

// Опрос переключающегося бита
PORTF->RXTX = 0x02; // Адрес
PORTE->RXTX = 0x00; // Адрес
if ((PORTA->RXTX & 0xFF) == 0xFF)
{
return 1;
}
else return 0;
}


void main (void)
{
RST_CLK->PER_CLOCK = 0xFFFFFFFF;
RST_CLK->HS_CONTROL |= 1<<0;
while ((RST_CLK->CLOCK_STATUS & 0x04) != 0x04) //Ждать выхода на режим кварца
{schet--;}
/*RST_CLK->PLL_CONTROL = (0x04<<8) // коэффициент умножения = 5. Имеем частоту 80 Гц
| (1<<2); // умножение включено
while ((RST_CLK->CLOCK_STATUS & 0x06) != 0x06) // Ждать выхода на режим умножителя
{;} */
RST_CLK->CPU_CLOCK = (1<<8) // Выбор тактовой частоты CPU_C3
// CPU_C2 = PLLCPU | (1<<2)
| (1<<1); // CPU_C1 = HSE

// Порт данных, управляющие сигналы. Изначально на вход. Диод
PORTA->OE = 0x200; //для выхода 0xC3FF;
PORTA->FUNC = 0x00;
PORTA->ANALOG = 0xFFFFFFFF;
PORTA->PULL = 0xFFFF;
PORTA->PD = 0x00;
PORTA->PWR = 0x55555555;

// Порты адреса. Выход, без подтяжки
PORTF->OE = 0xFF;
PORTF->FUNC = 0x00;
PORTF->ANALOG = 0xFFFFFFFF;
PORTF->PULL = 0x00;
PORTF->PD = 0x00;
PORTF->PWR = 0x55555555;

PORTE->OE = 0x0F;
PORTF->FUNC = 0x00;
PORTF->ANALOG = 0xFFFFFFFF;
PORTF->PULL = 0x00;
PORTF->PD = 0x00;
PORTF->PWR = 0x5555;

// Упарвляющие сигналы порта С.
PORTC->OE = 0x06;
PORTC->FUNC = 0x00;
PORTC->ANALOG = 0xFFFFFFFF;
PORTC->PULL = 0x00;
PORTC->PD = 0x00;
PORTC->PWR = 0x14;

// Порты UART
PORTD->OE = 0x02;
PORTD->FUNC = 0x0A;
PORTD->ANALOG = 0xFFFFFFFF;
PORTD->PULL = 0x00;
PORTD->PD = 0x00;
PORTD->PWR = 0x0A;

PORTA->RXTX = 0x200;

// Настройка UART. Скорость 19200
RST_CLK->UART_CLOCK = (1<<25 | 1<<8);
UART2->IBRD = 0x1A; // Цела часть коэф деления = 5
UART2->FBRD = 0x03; // Дробная часть = 28
UART2->LCR_H |= (1<<6 | 1<<5 | 1<<4); //Буфер включен. Посылка 8 бит
UART2->CR |= (1<<8) | (1<<9) | (1<<0); // UART настроен на приём и передачу
// Проверка настройки
while (UART2->IFLS == 0x08)
{;}
UART2->DR = 0x02;

schet = 0;
write (); // Записать данные
read (); // Считать память

while (1)
{;}
}
Закрыть

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-26 11:09 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1260
Откуда: АО "ПКК Миландр"
Если я правильно понял, то вы ожидаете что D6 просто будет переключаться ?
Нет, это не совсем так, необходимо выполнять раздельные чтение из микросхемы (переключать OE) и при каждом новом чтении D6 будет переключаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-26 13:05 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Спасибо, попробую.

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-28 14:40 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Очень помог Ваш совет, однако что-то мне не нравится задний фронт бита D6 во время переключения, из-за чего микроконтроллер не может корректно воспринять информацию. Это какой-то брак микросхемы памяти или может переключаю ОЕ?

Открыть Осцилограмма
Вложение:
Комментарий к файлу: А - СЕ
В - ОЕ
С - D6
D - WE

IMAGE007.BMP
IMAGE007.BMP [ 225.05 КБ | Просмотров: 1640 ]
Закрыть


Ещё один уточняющий вопрос. В спецификации в алгоритме программирования сказано делать задержку 10 мкс. Что будет если её не делать?

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-28 16:57 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1260
Откуда: АО "ПКК Миландр"
KIA писал(а):
Очень помог Ваш совет, однако что-то мне не нравится задний фронт бита D6 во время переключения, из-за чего микроконтроллер не может корректно воспринять информацию. Это какой-то брак микросхемы памяти или может переключаю ОЕ?

Открыть Осцилограмма
Вложение:
IMAGE007.BMP
Закрыть


Ещё один уточняющий вопрос. В спецификации в алгоритме программирования сказано делать задержку 10 мкс. Что будет если её не делать?


СЕ и ОЕ не должны пересекаться, из-за этого возможны конфликты драйверов по шине данных.
Микроконтроллер должен сначала зафиксировать данные по шине данных, а затем только поднять OE в единицу.
Про 10 мкс - уточните что именно имеется ввиду, нет времени искать. Возможно, имеется ввиду время после завершения программирования и перехода к чтению данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-29 09:52 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
-=Sergei=- писал(а):
СЕ и ОЕ не должны пересекаться

Т.е. СЕ всегда в нуле, ОЕ поднимаем когда надо? В принципе сейчас так и есть.

Фронт заваливается когда порт микроконтроллера настроен на вход, при настройке на выход фронт нормальный, но данные, естественно, не считываются. Подтяжка вниз в обоих случаях, выключение подтяжки при настройке на вход ситуацию не меняет

-=Sergei=- писал(а):
Про 10 мкс - уточните что именно имеется ввиду

Рис. 2 после командной последовательности программирования.

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-окт-29 10:35 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1260
Откуда: АО "ПКК Миландр"
очепятался, не CE, а WE имелось ввиду. нельзя WE=0 и OE=0.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-ноя-05 10:09 
Не в сети

Зарегистрирован: 2015-янв-22 09:49
Сообщения: 22
Заметил ещё одну интересную вещь: бит D6 переключается только когда выводы микроконтроллера подтянуты на землю, при этом имеем заваленный задний фронт. Если подтяжку отключить, то переключения не происходит.

_________________
Лишь тот во всеоружии, кто в совершенстве владеет оружием.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1636РР2У и 1636РР4У (ПЗУ Flash-типа)
СообщениеДобавлено: 2015-ноя-05 10:15 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1260
Откуда: АО "ПКК Миландр"
KIA писал(а):
Заметил ещё одну интересную вещь: бит D6 переключается только когда выводы микроконтроллера подтянуты на землю, при этом имеем заваленный задний фронт. Если подтяжку отключить, то переключения не происходит.


Диаграмму и код надо смотреть, такого не должно быть.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 137 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.

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


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

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


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

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