Например TDA7294

Форум РадиоКот • Просмотр темы - Програмирование pic на СИ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 16, 2025 13:43:35

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1364 ]     ... , , , 58, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт май 10, 2022 19:34:54 
Родился

Зарегистрирован: Вт май 10, 2022 19:26:55
Сообщений: 2
Рейтинг сообщения: 0
Здравствуйте.
Ситуация такая, написал простенькую программу для PIC12F675. Программа компилируется без ошибок в MPLAB X там же в отладчике она работает как и должна. Далее загружаю полученный hex в proteus и там... она работает неправильно. В чем дело не понял, ту же самую программу адаптировал для microC и получил такой же результат - в отладчике microC работает как и должна, а в proteus - опять неправильно. Попробовал загрузил в контроллер - результат как в proteus работает неправильно. Где искать причину. Не ругайте сильно я только начал программировать.

СпойлерMPlabX v6.0
Код:
/*
 * File:   main.c
 * Author: Roo
 *
 * Created on 8 ??? 2022 ?., 11:29
 */

#include <stdio.h>
#include <stdlib.h>

/*
 *
 */
// CONFIG
#pragma config FOSC = INTRCIO   // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-Up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = ON       // GP3/MCLR pin function select (GP3/MCLR pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

#define _XTAL_FREQ 4000000                  // Fosc  frequency for _delay()  library

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

int main(int argc, char** argv) {
    ANSEL = 0b00000000;
    ADCON0 = 0b00000000;
    nGPPU = 0b00000000;
    WPU = 0b00000000;
    TRISIO = 0b00001111;
    GPIO = 0b00000000;
    GIE = 0;
    unsigned char Q = 0; //start status
while (1)
        {
        if (GPIO2) {
            GPIO4 = 0;
            GPIO5 = 1;
            __delay_ms(500);
            GPIO5 = 0;
            __delay_ms(500); }
       else if (!GPIO0 && GPIO1) {
            GPIO4 = 0;
            GPIO5 = 1; }
      else if (GPIO0 && GPIO1) {
            GPIO4 = 0;
            GPIO5 = 0;
            Q = 1; }       
      else if ((!GPIO0 && !GPIO1) || (GPIO0 && !GPIO1 && !Q)) {
            GPIO4 = 1;
            GPIO5 = 0;
            Q = 0; }
    }
    return (EXIT_SUCCESS);
}

СпойлерMicroC 6.2.1.0
Код:
 void main()
 {
    unsigned char  Q=0; /*start status  */
    ANSEL = 0b00000000;
    ADCON0 = 0b00000000;
 /*   GPPU = 0b00000000; */
    WPU = 0b00000000;
    TRISIO = 0b00001111;
    GPIO = 0b00000000;
 /*   GIE = 0;             */

while (1)
        {
        if (GPIO.GP2) {
//            GPIO.GP4 = 0;
            GPIO.GP4 = 0;
            GPIO.GP5 = 1;
            Delay_ms(500);
            GPIO.GP5 = 0;
            Delay_ms(500); }
       else if (!GPIO.GP0 && GPIO.GP1) {
            GPIO.GP4 = 0;
            GPIO.GP5 = 1; }
      else if (GPIO.GP0 && GPIO.GP1) {
            GPIO.GP4 = 0;
            GPIO.GP5 = 0;
            Q = 1; }
      else if ((!GPIO.GP0 && !GPIO.GP1) || (GPIO.GP0 && !GPIO.GP1 && !Q)) {
            GPIO.GP4 = 1;
            GPIO.GP5 = 0;
            Q = 0; }
    }
//    return ();
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 11, 2022 17:24:45 
Родился

Зарегистрирован: Вт май 10, 2022 19:26:55
Сообщений: 2
Рейтинг сообщения: 0
Вопрос решен, надо было отключить компаратор
Код:
CMCON = 0b00000111;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн дек 12, 2022 13:49:28 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: Ivanovo
Рейтинг сообщения: 0
Подскажите, пожалуйста, возможно ли на pic16f628 (или 648) реализовать следующую задачу:
На входе сигнал стандартный для сервомашинок (частота 50 Гц, продолжительность импульса от 1 до 2 мс (0-100%)).
На выходе нужно получить ШИМ с максимально возможной для МК частотой со скважностью от 0 до 100% соответственно сигналу на входе.
Вроде как в этих пиках 2 таймера.
Выбор МК обусловлен их наличием (выкинуть жалко)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн дек 12, 2022 17:45:21 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
spongebob, возможно.
Одним таймером измеряем длину импульса (с помощью внешнего прерывания), а вторым - ШИМим.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн дек 12, 2022 18:17:13 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 777
Зарегистрирован: Сб янв 28, 2006 22:47:24
Сообщений: 5176
Рейтинг сообщения: 0
На выходе нужно получить ШИМ с максимально возможной для МК частотой со скважностью от 0 до 100% соответственно сигналу на входе.

Есть зависимость минимального шага изменения скважности от необходимой частоты.

_________________
Астролябия-сама меряет, было бы что мерять!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн дек 12, 2022 18:59:07 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1646
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Дайте краткое описание устройства, для которого предназначен этот узел. Какое разрешение сервомашинки? 125 шагов за 180 градусов ОК? Дайте примерные данные и для "ШИМ с максимально возможной для МК частотой". У PIC16F628A есть три таймера.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт дек 13, 2022 06:27:06 
Нашел транзистор. Понюхал.

Карма: -8
Рейтинг сообщений: 17
Зарегистрирован: Сб апр 24, 2021 18:42:11
Сообщений: 155
Рейтинг сообщения: 0
У этих PIC имеется аппаратный модуль PWM, частота известна, нужно знать период. Таймеров 3, на все должно хватить. Во вложении переводной даташит, там все есть.

P.S. Данный документ для PIC16F648 тоже должен подойти. Отличаются от 627/628 только увеличенным объемом FLASH/RAM/EEPROM вроде.


Вложения:
pic16f62x.pdf [2.64 MiB]
Скачиваний: 79
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 10:45:36 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: Ivanovo
Рейтинг сообщения: 0
а не подскажете по коду на С?
а то я с пиками давно дел не имел, позабыл всё.

что-то типа такого:
Код:
void main()
{
...
  INTCON=0b11001000;
  // инициализация таймеров (0 и 2)
...
}

void interrupt isr(void)
{
if(RBIF) {
  if(RB7==1) // вход сигнала на B7 (например)
      //запуск таймера
  if(RB7==0)
      // остановка таймера, запись значения счётчика в регистр таймера ШИМ (не напрямую конечно, а после вычислений, учёта "мёртвых зон" и т.д.), сброс таймера
}
RBIF=0; // сброс флага прерывания
}


а вот инициализация таймеров для меня пока вопрос...


Последний раз редактировалось spongebob Чт дек 15, 2022 11:05:35, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 11:01:01 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23988
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
Какая связь между Си и моделью МК?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 11:06:30 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: Ivanovo
Рейтинг сообщения: 0
Какая связь между Си и моделью МК?

Си я знаю. Ассемблер нет.
МК валяется куча. Выбросить жалко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 11:23:25 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23988
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Вы же спросили о Си. Причем тут ассемблер?
Нюансы компилятора XC8 изложены в мануале на этот компилятор. Си применяется как есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 11:29:51 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: Ivanovo
Рейтинг сообщения: 0
причём тут вообще всё?
причём тут нюансы?
я спросил что в какие регистры писать.
просто я привык к CMSIS и, возможно, изъясняюсь на непонятном вам языке, когда прошу "подсказать по коду на С"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 11:53:12 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23988
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
Регистры никакого отношения к Си не имеют. Что куда писать изложено в даташите на контроллер. И это зависит от поставленной задачи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт дек 15, 2022 13:25:36 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 483
Зарегистрирован: Чт авг 10, 2017 20:57:51
Сообщений: 1495
Рейтинг сообщения: 0
spongebob, даю Вам алгоритм так как я его вижу.
Изображение

spongebob писал(а):
я спросил что в какие регистры писать.

Читайте документацию

Я на алгоритме написал
CCP1 - capture, rise mode - в какие регистры писать сказано в док.
Как и From PPM-pulse calc value from
TMR2, PR2 and start PWM
- тоже

Вы также должны сообразить какая ножка является вход, выход. Про компараторов не забывай. И т.д. Также и Loop Ваше дело.
Все написано в PDF. Вам его дали выше.

Удачи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс июн 11, 2023 17:50:59 
Родился

Зарегистрирован: Вс май 07, 2023 17:27:42
Сообщений: 1
Рейтинг сообщения: 0
Привет, ребят. Засиделся на xc8 версии 1.4 в PRO оптимизации
1) Есть ли существенная функциональная разница современных версий си компилятора и тех прошлых? Сейчас меня ничего не ограничивает от использования 1.4, однако, возможно, есть какие-то существенные автоматизации, улучшения и проч.
2) Раздают ли где кряк на современные версии хс8?
Спасибо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн июл 24, 2023 21:56:41 
Родился

Зарегистрирован: Вс янв 03, 2021 21:35:39
Сообщений: 17
Откуда: Южный Урал
Рейтинг сообщения: 0
Привет всем кто в теме. Набрал код часов на ГРИ ИН-14 и мк PIC16F628, часики тикают от TMR1 в асинхронном режиме с внешнего кварца на 32768. TMR0 работает совместно с ШИМ для динамики ГРИ. В принципе, схема часов стандартная, наверное не раз рассмотренная на этом сайте. Но я не ищу легких путей, поэтому код на СИ пишу сам. Часы работают. Проблема моя в той части кода, которая связана с настройкой-установкой часов и минуты, никак не могу разобраться. В режиме установки (корректировки) часов при нажатии на кнопку PLUS показания часов инкрементируются до 23 и потом сброс на 0 и далее по возрастанию, т.е. все как надо. А вот при нажатии на кнопку MINUS идет декримент до 0 и все на этом стопорится, а надо чтобы дошло до 0 и потом произошел переход на 23 и снова по нисходящей. Тоже самое при настройке минут, при нажатии на MINUS доходит до 0 и счет останавливатся, а надо что бы был переход на 59 и далее счет вниз по кругу. При нажатии на плюс все нормально.

Прошу помощи - в чем может быть ошибка в коде, куда копать чтобы все работало как надо? Код main.c прикладываю, там где Установка Часов и Установка Минут в комментариях указал, где код не работает. Код пишу в MPLAB IDE v4.01., компилятор XC8.

Спойлер
Код:
/*
 * File:   Clock_IN14_test
 * Author: SolderCat
 * v.1.01
 * Created on 24 Jule 2023, 22:45
 * MCU PIC16F628A
 */

#include "main.h"

//----------
unsigned char secs=0; 

char hour=12, min=30;
unsigned char a[4];
volatile unsigned char bt;
unsigned char pwm_val;

//----------
#define OK   (bt==1)   //(buttons==1)
#define PLUS (bt==2)   //(buttons==2)
#define MINUS (bt==3)  //(buttons==3)
#define CLOCKMODE0   0
#define CLOCKMODEHOUR 1
#define CLOCKMODEMIN 2
#define CLOCKMODESEC 3
#define CLOCKMODEPWM 4
//----------
unsigned char button1state=0;     
unsigned char clockmode=CLOCKMODE0;
//----------
void interrupt isr(void){
    if(T0IF){
     TIM0_Callback();
     T0IF=0;
    }
    if(TMR1IF){
//      TMR1L=0x00;
      TMR1H=0x80;
      TMR1IF=0;
      secs++;
     
      if (secs >= 60){
      min++;
      secs=0;
      }
      if (min >= 60){
       min =0;
       hour++;
      }
      if (hour >= 24){
       hour =0;
      }   
    }
}
//----------
void main(void){
    PCONbits.OSCF = 1; // set Internal 4MHz
    TRISB = 0x00; 
    PORTB = 0x00;
    PORTA = 0x00;
    TRISA = 0b00100010; // RA1 & RA5 to input
    OPTION_REG=0b00000011; //Prescaler_16 4astota dynamiki
    CMCON = 0x07;
    T1CKPS0=0; //Prescaler 1 (32768/(corr)/1 = 1Hz)
    T1CKPS1=0;
    T1OSCEN=1;  // enable clock
    T1CONbits.nT1SYNC=1;   //asynchron mode
    TMR1CS=1;   //External clock
    TMR1L=0x00;
    TMR1H=0x80;
    T0IE=1;
    PR2=0x3A;
    pwm_val=eeprom_read(0x00);
    __delay_ms(100);

    CCP1CON=0x2F;  //set 20 lvl   
    CCPR1L = 0x31;  //set 20 lvl

    T2CKPS1 = 0;    //TIMER2 prescaler 1:1
    T2CKPS0 = 0;
    GIE=1;
    PEIE=1;
    TMR1IE=1;
    TMR1ON=1;
    TMR2ON=1; //TIMER2 ON
    TMR0=0;

while(1){

//----------       
    if(OK){
       if (clockmode==CLOCKMODE0)
        {
           clockmode=CLOCKMODEHOUR;       
           button1state=1;
           bt=0;
        }
    } 
//--Установка Часов------
   if(clockmode==CLOCKMODEHOUR){
       
   if(PLUS) {hour++;bt=0;}
   if(MINUS) {hour--;bt=0;}   //здесь не переходит с 0 на 23
   if(hour>23) {hour=0;}         
   if(hour<0) {hour=23;}     
           
   RB2 = 1;              //dot vklu4en
   a[0]=0; 
   a[1]=0;             
   a[2]=hour%10;       
   a[3]=hour/10;     
               
   if(OK){
              if(button1state==0)   
                {
                    clockmode=CLOCKMODEMIN;
                    button1state=1;
                    bt=0;
                                         
                }
            }
   if (clockmode==CLOCKMODEHOUR) button1state=0;     
    }
//--Установка Минут-----------
   if(clockmode==CLOCKMODEMIN){
   
   if(PLUS) {min++;bt=0;}
   if(MINUS) {min--;bt=0;}     //здесь не переходит с 0 на 59
   if(min>59) {min=0;}             
   if(min<0) {min=59;}
               
   RB2 = 1;
   a[0]=min%10; 
   a[1]=min/10;
   a[2]=0; 
   a[3]=0;
       
        if(OK){
              if(button1state==0)       
                {
                    clockmode=CLOCKMODESEC;
                    button1state=1;
                    bt=0;
                       
                }
            }
        if (clockmode==CLOCKMODEMIN) button1state=0;
    }
//--Уст Sec---------
    if(clockmode==CLOCKMODESEC)
    {
       
     if(PLUS) {secs=0;}             
     if(MINUS) {secs=30;}             
                 
     RB2 = 1;
     a[0]=secs%10; 
     a[1]=secs/10;               
     a[2] = 0;
     a[3] = 1;
               
     if(OK){
             if(button1state==0)
                {
                    clockmode=CLOCKMODEPWM;     
                    button1state=1;
                    bt=0;
                     
                }
            }
     if (clockmode==CLOCKMODESEC) button1state=0;   
    }
//--Уст PWM------
    if(clockmode==CLOCKMODEPWM){
   
    if(PLUS)  {pwm_val=pwm_val+10;}           
    if(MINUS) {pwm_val=pwm_val-10;}
    if(pwm_val<100) {pwm_val=230;}
    else if(pwm_val>230) {pwm_val=100;}
               
    CCPR1L = pwm_val>>2;
    CCP1CON |= 0x30&(pwm_val<<4);
       
       
    RB2 = 1;
    a[0]=pwm_val/10%10;               
    a[1]=pwm_val/100%10;
    a[2]=0; 
    a[3]=2;             

    eeprom_write(0x00,pwm_val);
         
    if(OK){
            if(button1state==0)
                {
                    clockmode=CLOCKMODE0;           
                    button1state=1;
                    bt=0;
                   
                }
            }
    if (clockmode==CLOCKMODEPWM) button1state=0;   
    }
   
//---Time------   
    if(clockmode==CLOCKMODE0){
     
    if(secs&1)
        {
            RB2 = 0; 
        }
    else
        {
            RB2 = 1;
        }
 
    a[0]=min%10;
    a[1]=min/10%10;
    a[2]=hour%10; 
    a[3]=hour/10%10;
     

    }
//----------
    }
  }
}



Последний раз редактировалось Аlex Пн июл 24, 2023 22:22:10, всего редактировалось 1 раз.
Спойлер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн июл 24, 2023 22:05:07 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7309
Откуда: 845-й км.
Рейтинг сообщения: 8
Медали: 1
Получил миской по аватаре (1)
Возможно, у вашего компилятора char беззнаковый, поэтому при декременте нуля получается 255, что "больше, чем 59" и никак не "меньше нуля". попробуйте объявить min как signed char


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт июл 25, 2023 20:01:56 
Родился

Зарегистрирован: Вс янв 03, 2021 21:35:39
Сообщений: 17
Откуда: Южный Урал
Рейтинг сообщения: 0
попробуйте объявить min как signed char

И да, действительно помогло, заменил char на signed char hour, min; все заработало, благодарю за подсказку!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт авг 17, 2023 16:30:53 
Родился

Зарегистрирован: Чт авг 17, 2023 16:22:25
Сообщений: 2
Рейтинг сообщения: 0
Я не знаю кто вам сказал об ограничении в 8 байт, но это полный бред.

У меня вопрос у вас получилось отправить в блок более 8 байт? А про это я сам прочитал к примеру в ELM327L_DSA.pdf на 14 странице. Столкнулся что на рено Espace 4 надо было скогнфигурировать блок ручника новый и сменить вин, но елм327 не может отправить 8 байт, приходит в ответ знак вопроса. Пробовал даже через elm327chat отсылать вручную команды, если 8 байт отправить то отправляет, но мне надо больше 8, и приходит ? в овет


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт авг 17, 2023 21:39:31 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23988
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
У меня вопрос у вас получилось отправить в блок более 8 байт?

Вы точно умеете читать русский текст? :facepalm:
В блок вы можете отправить любое количество байт. МК тут вообще не причем.
Изучите протокол связи с блоком и сделайте обмен в соответствии с ним.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1364 ]     ... , , , 58, , , ...  

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y