Например TDA7294

Форум РадиоКот • Просмотр темы - WinAvr в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июл 22, 2025 08:03:22

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2195 ]     ... , , , 57, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс июн 24, 2012 22:38:00 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт июн 10, 2008 09:17:06
Сообщений: 215
Откуда: г. Саратов
Рейтинг сообщения: 0
Т.к. я чайник мне это не осилить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн июн 25, 2012 00:22:39 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
могу как бы разочаровать - именно чайники это осваивают в первую очередь.
Есть выбор как бы и он за вами....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн июн 25, 2012 05:18:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
urry +1

SarCity писал(а):
Т.к. я чайник мне это не осилить.

нужно найти где тело прописано
не нам же его писать,тем более, что это уже готовый проект.смотрите на сайте тело выглядит так :
тип_переменной имя_функции (тип_переменной имя_входящих_данных [,тип_переменной имя_входящих_данных ]){
объявления используемых внутри тела переменных;
действия ;}

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

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн июн 25, 2012 10:48:17 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
Говоря по простому, где-то должен быть *.c файл с прототипом и телом функции, а для использования этой функции во внешних модулях, в *.h файле указываем прототип объявленный как extern, например:

файл urchin.с // о ежах
void kill_urchin(void) // прототип, объявление
.... //
void kill_urchin(void) // тело
{
... // убиваем ежа здесь
}

и файл urchin.h // подключаем его в том модуле, в котором нужно прибить ежа
extern void kill_urchin(void)

если нам нужно нужно убить ежа в другом модуле, то:

int main(void)
{
#include "urchin.h" // подключаем все внешние обявления о ежах
....
kill_urchin(); // наконец-то мы прибили ежа!
...
return 0;
}

З.Ы.
по моему народ путается с вариантом для компиляторов RAD или VC, где достаточно в h(hpp) объявить
extern void kill_urchin(void), а сам прототип можно опустить, но насколько я помню для WINAVR, ICC, IAR прототип нужно указывать обязательно...


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб июл 28, 2012 17:58:11 
Родился

Зарегистрирован: Вс июн 14, 2009 00:34:38
Сообщений: 13
Рейтинг сообщения: 0
Прошу помощи по ассемблеру.

Не могу найти ошибку!!!
Имеется код на асме, который в CodeVision отлично работает.
Код:
#include <avr/io.h>

// Умножение (возведение в квадрат) 2-х 16-ти битных чисел (погрешность - 2 младших байта) 
unsigned int mul16x16_square(unsigned int a, unsigned int b)
{
unsigned int result;
unsigned char tmp = 0;

   asm volatile(                                
       "clr     %[TMP]"                           "\n\t"
       "mul     %B[A], %B[B]"            ";Ah * Bh    \n\t"
       "movw    %C[RES], r0"                     "\n\t"
       "mul     %A[A], %A[B]"            ";Al * Bl    \n\t"   
       "movw    %A[RES], r0"                     "\n\t"
       "fmul    %B[A], %A[B]"            ";Ah * Bl    \n\t"   
       "adc    %D[RES], %[TMP]"                     "\n\t"
       "add    %B[RES], r0"                     "\n\t"
       "adc    %C[RES], r1"                     "\n\t"   
       "adc    %D[RES], %[TMP]"                     "\n\t"   
       : [RES]"=&r" (result), [TMP]"=&r" (tmp)
       : [A]"a" (a), [B]"a" (b)     
   );
   return result;
}

int main(void)
{
uint16_t qqq= 0x1234;

   while(1)
   {
      mul16x16_square(qqq, qqq);
      asm("nop"::);
   }   
}

Это часть дизассемблера, которая интересует (без оптимизации):
Код:
+0000002E:   818C        LDD       R24,Y+4        Load indirect with displacement
+0000002F:   819D        LDD       R25,Y+5        Load indirect with displacement
+00000030:   812E        LDD       R18,Y+6        Load indirect with displacement
+00000031:   813F        LDD       R19,Y+7        Load indirect with displacement
+00000032:   01AC        MOVW      R20,R24        Copy register pair
+00000033:   24FF        CLR       R15            Clear Register
+00000034:   9F53        MUL       R21,R19        Multiply unsigned
[b]+00000035:   0190        MOVW      R18,R0         Copy register pair
+00000036:   9F42        MUL       R20,R18        Multiply unsigned[/b]
+00000037:   0180        MOVW      R16,R0         Copy register pair
+00000038:   035A        FMUL      R21,R18        Fractional multiply unsigned
+00000039:   1D3F        ADC       R19,R15        Add with carry
+0000003A:   0D10        ADD       R17,R0         Add without carry
+0000003B:   1D21        ADC       R18,R1         Add with carry
+0000003C:   1D3F        ADC       R19,R15        Add with carry
+0000003D:   831B        STD       Y+3,R17        Store indirect with displacement
+0000003E:   830A        STD       Y+2,R16        Store indirect with displacement
+0000003F:   82F9        STD       Y+1,R15        Store indirect with displacement


А это - та же интересующая часть, только с полной оптимизацией:
Код:
+0000001C:   01AC        MOVW      R20,R24        Copy register pair
+0000001D:   2788        CLR       R24            Clear Register
+0000001E:   9F57        MUL       R21,R23        Multiply unsigned
[b]+0000001F:   01A0        MOVW      R20,R0         Copy register pair
+00000020:   9F46        MUL       R20,R22        Multiply unsigned[/b]
+00000021:   0190        MOVW      R18,R0         Copy register pair
+00000022:   035E        FMUL      R21,R22        Fractional multiply unsigned
+00000023:   1F58        ADC       R21,R24        Add with carry
+00000024:   0D30        ADD       R19,R0         Add without carry
+00000025:   1D41        ADC       R20,R1         Add with carry
+00000026:   1F58        ADC       R21,R24        Add with carry

Соответствующий выделенным в тексте строкам код:
Код:
"movw    %C[RES], r0"
"mul     %A[A], %A[B]"



Не обращая особо ваше внимание на алгоритм, у меня такой вопрос.
Почему в строках (в дизасме они выделены жирным) задействованы одинаковые регистры. Ведь в коде, вроде бы, все правильно стоит (имеется в виду вывод в новый регистр - модификатор '&' в строке вывода - : [RES]"=&r" (result), [TMP]"=&r" (tmp)), а используется один и тот же регистр. В данных случаях - это R18 и R20.
Соответственно результат, который должен быть равен: 1234h * 1234h = 14B 5A90h не получается правильным.
В моих случаях (и в одном и в другом мне интересны только старшие байты) такие результаты:
1(оптимизация откл.) - 1 4Dh
2(оптимизация вкл.) - 1 44h

Ассемблерный код рабочий (проверен в CV).
Где я ошибаюсь?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб июл 28, 2012 20:47:45 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
А почему бы не умножать на си, если пишешь на си, зачем умножать на асме? Или умножай на чистом асме, а так получается компилятор сам выбирает регистры, с которыми ему удобней работать.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб июл 28, 2012 21:23:56 
Родился

Зарегистрирован: Вс июн 14, 2009 00:34:38
Сообщений: 13
Рейтинг сообщения: 0
zero648 писал(а):
А почему бы не умножать на си, если пишешь на си, зачем умножать на асме? Или умножай на чистом асме ...

Дело в том, что умножение 2х 16ти битных чисел - это лишь маленькая часть проекта.

zero648 писал(а):
... а так получается компилятор сам выбирает регистры, с которыми ему удобней работать.

Так-то оно, так. Но как же тогда правильно выбрать регистры? Собственно - этот вопрос и требуется мне разрешить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс июл 29, 2012 00:27:08 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
Значит пиши на асме и сам придумай алгоритм умножения, тогда компилятор будет использовать твои регистры, т.е. повторит то что ты напишешь.
Можно умножить на си, а алгоритм дизасмом выдрать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс июл 29, 2012 00:55:27 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
алгоритм сложно дизасмом выдирать. Компилятор повторяющиеся части выделяет в куски, которые потом сложно вместе собирать.кусок от деления, умножения может сочетаться с другими кусками, причем еще все это с относительной адресацией между переходами.
задача не для слабонервных.
если только два числа умножить и посмотреть что получилось.

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн авг 06, 2012 07:58:17 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт май 03, 2012 06:27:23
Сообщений: 116
Откуда: Челябинск
Рейтинг сообщения: 0
Мужики, помогите, мне очень стыдно, но я совсем не знаю С++, создаю свой проект на WinAVR и столкнулся с колосальной нехваткой знаний по С++. Помогите пожалуйста, я читал посты на этом форуме и не смог найти ответ.
Мне нужно превратить число (int) в символы (char). В этой теме я нашел подобный пример на atoi:

#include <stdlib.h>
char *number = "123";
int n = atoi(number);

А мне нужно сделать наоборот.
Я пытался сделать так:

int n=123;
char number = atoi(n);

у меня компилятор выдает предупреждения.
Помогите мужики, если вам не тяжело, и желательно на примере, совсем у меня знаний не хватает по С++. И еще, не подскажите, как можно подсчитать колличество символов в таком массиве?
char a[]="много символов";
Заранее спасибо, я читаю ваш форум, и нахожу ответы на свои вопросы. Особенно спасибо urry, vitalik_1984 и ARV.

_________________
Кот должен прожить жизнь без сожаления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн авг 06, 2012 08:15:05 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Недавно обсуждалось здесь: viewtopic.php?f=20&t=76244

P.S. Это вовсе не C++. Просто C.

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн авг 06, 2012 12:11:03 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт май 03, 2012 06:27:23
Сообщений: 116
Откуда: Челябинск
Рейтинг сообщения: 0
Спасибо за ответ. Не подскажете как работает вот эта строчка s[i++] = n % 10 + '0'; в листинге:
/* itoa: конвертируем n в символы в s */
void itoa(int n, char s[])
{
int i, sign;

if ((sign = n) < 0) /* записываем знак */
n = -n; /* делаем n положительным числом */
i = 0;
do { /* генерируем цифры в обратном порядке */
s[i++] = n % 10 + '0'; /* берем следующую цифру */
} while ((n /= 10) > 0); /* удаляем */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
Я не пойму что значит n %10 + '0', как это работает? Я понимаю что тут заполняется массив слова в цифрах. Мне знаний не хватает. :(

_________________
Кот должен прожить жизнь без сожаления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн авг 06, 2012 13:42:21 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
DruidCat писал(а):
Я не пойму что значит n %10 + '0'
По пунктам:

n %10 - остаток от деления n на 10, т.е. младшая цифра десятичного представления n.
'0' - код литеры 0 в используемой Вами однобайтной кодировке (на 99.999....% это ASCII).
Вся конструкция в целом - код литеры, соответствующей младшему десятичному разряду n.

Пример: n = 367, тогда n %10 + '0' == '7' == 0x37 == 067 == 55

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт авг 07, 2012 08:41:46 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт май 03, 2012 06:27:23
Сообщений: 116
Откуда: Челябинск
Рейтинг сообщения: 0
Я сейчас скачал таблицу ASCII, посмотрел, действительно все совпадает. Ничего себе, как придумано уравнение здорово и просто.
Я так понял что в строке эта цифра удаляется как десятичный остаток (n = n/10):
while ((n /= 10) > 0); /* удаляем */

Можно еще вопрос?
А вот функция void itoa(int n, char s[])
Она ведь принимает два значение int n, char s[], или же она принимает значение числа int n, и объявляет массив char s[]?

PS: Спасибо за помощь многоуважаемый кот. :beer:

_________________
Кот должен прожить жизнь без сожаления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт авг 07, 2012 09:18:56 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
DruidCat писал(а):
Ничего себе, как придумано уравнение здорово и просто.
Используется тот факт, что цифры в кодировке ASCII идут подряд. Поэтому достаточно прибавить цифру к коду нуля, чтобы получить код литеры для этой цифры. Обратное преобразование делается столь же просто - из кода литеры вычитаем код нуля и получаем значение цифры.

В других кодировках обычно также придерживаются подобного принципа. Например, в ныне почти забытой EBCDIC цифры тоже упорядочены.
DruidCat писал(а):
Я так понял что в строке эта цифра удаляется как десятичный остаток (n = n/10):
while ((n /= 10) > 0); /* удаляем */
Совершенно верно. И так до тех пор, пока цифр не останется вовсе (условие > 0).
DruidCat писал(а):
Можно еще вопрос?
А вот функция void itoa(int n, char s[])
Она ведь принимает два значение int n, char s[], или же она принимает значение числа int n, и объявляет массив char s[]?
Клиент (то есть код, вызывающий функцию) должен предоставить буфер достаточной для хранения текстового представления числа длины (с учетом признака конца строки '\0', а то можно и в чужую область залезть) и передать указатель на него (поскольку фактически объявление char s[] является указателем на начало массива, а не самим массивом).

P.S. Вообще тема массивов и указателей, пожалуй, наиболее скользкая в языке C. Если хотите разобраться, рекомендую книгу: Ted Jensen. Tutorial on Pointers and Arrays in C.

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт авг 07, 2012 16:00:17 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт май 03, 2012 06:27:23
Сообщений: 116
Откуда: Челябинск
Рейтинг сообщения: 0
Спасибо большое за подробный ответ. :)
PS: В инете нашел только на английском языке эту книгу "Ted Jensen. Tutorial on Pointers and Arrays in C."

_________________
Кот должен прожить жизнь без сожаления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт авг 07, 2012 16:18:37 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
DruidCat писал(а):
PS: В инете нашел только на английском языке эту книгу "Ted Jensen. Tutorial on Pointers and Arrays in C."
Да, это она и есть, мне не попадался ее перевод на русский. Впрочем, обычная ситуация - хороших книг почти не переводят, в основном макулатуру.

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 08, 2012 13:39:21 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пн сен 26, 2011 13:48:25
Сообщений: 202
Откуда: Харьков
Рейтинг сообщения: 0
Доброго времени суток, форумчане. Появилось свободное время, начал ковырять отправку данных через COM-port.
Написал какой-никакой код. Естественно, не компилится =) Голову себе сломал, не пойму в чем ошибка

Код:
if ((FLAGS & RESEIVED) == RESEIVED)
{
   // взять символ из буфера
   reseive[RI] = USART_GetChar();
            
   // c каждым новым символом обновляем CRC
   if ((RI > 0) && (RI < reseive[1] + 3))       Calculate_CRC16(reseive[RI],CRC16);
      
   // проверяем правильность стартовых и стоповых байтов
   if (RI == 0)
   {   
      if (reseive[RI] == StartByte)
      {
         FLAGS |= START_STOP_OK;
      }
      else FLAGS &= ~ START_STOP_OK;
   }
   if (RI == (reseive[1] + 6))
   {   
      if (reseive[RI] == StopByte)
      {
         FLAGS |= START_STOP_OK;
         FLAGS |= RD_MSG;
      }
                 else FLAGS &= ~ START_STOP_OK;
   }
   
              // если последний информационный байт сообщения принят - сверяем CRC
   if (RI == reseive[1] + 4)                        
   {
      if ((CRC16 >> 8) == reseive[RI])
      {
         FLAGS |= CRC_OK;
      }
      else FLAGS &= ~CRC_OK;                  
   }
   if ((RI == reseive[1] + 5)   && (FLAGS & CRC_OK))                     
   {
      if ((CRC16 & 0x00FF) == reseive[RI])
      {
         FLAGS |= CRC_OK;
      }
      else FLAGS &= ~CRC_OK;                  
   }
         
   RI ++;
   FLAGS &= ~ RESEIVED;
}


ругается на первую строку приведенного кода: main.c:121: error: expected ')' before ';' token

_________________
Осилит дорогу идущий
----------
Пишу на Си за еду


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср авг 08, 2012 15:33:03 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
неплохо бы проект целиком, возможно где то в макросе ошибка сделана, а показывает здесь, потому что макрос вставляется компилятором как текст бездумно, а потом уже компилируется.
Код:
#define RESEIVED 0x01;//приведет к ошибке, которую вы указали
#define RESEIVED 0x01 //правильно
 

Код:
 
 
if ((FLAGS RESEIVED) == RESEIVED
 

если проверяется только один флаг, то можно опустить сравнение так как это еще одна команда.Можно вот так
Код:

 
if (FLAGS RESEIVED) {
}
 

Возможно конечно компилятор опустит эту команду ввиду однозначнсти решения, но не факт.
Хотя в общем можно и оставить для лучшей читаемости.

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт авг 09, 2012 10:07:42 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пн сен 26, 2011 13:48:25
Сообщений: 202
Откуда: Харьков
Рейтинг сообщения: 0
Да, действительно у меня в дефайне ошибка. Спасибо большое:)

_________________
Осилит дорогу идущий
----------
Пишу на Си за еду


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

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


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

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


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

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


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