Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

Закрытая тема
Опции темы
Непрочитано 01.07.2011, 13:26   #171
vegoramar
Прохожий
 
Регистрация: 13.10.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vegoramar на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Люди помогите ради Бога , читал много статии и уже запуталься , должен на SD карте создать фаил , дать ему имя и писать в нем 4-5 баита данние. Пишу на CVAvr 2.04.4a , на ATmega16 ,на PROTEUS-е могу включить MMC карта и запихнуть туда мой созданний имидж фаил скажем sd.mmc , использую двухстрочний дисплей , хочу исползовать ту библиотеку которую ест в CVAvr . Включил MMC/SD... , включил SPI , но должен быть без RTC . С чего начат и куда идти подскажите прошу...
делаю так:

unsigned char drv = 0;
...........................
if(disk_initialize(drv) == STA_NOINIT )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("not initialized");//
}
else
if(disk_initialize(drv) == STA_NODISK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("no card inserted");//
}
else

if(disk_initialize(drv) == STA_PROTECT)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("write protected");//
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("Init OK");//
};

а с зади или с переди что сделат не знаю ... disk_status() , f_mount () , f_open() , f_write() , f_close() , f_opendir() после чего что и как .

и то вышеприведенный код тоже на дисплеи ничего не пишет , какбутто в ети if()-ы else{}-ы не входит , проблема знаю что точно не в дисплее
Реклама:
vegoramar вне форума  
Непрочитано 01.07.2011, 16:48   #172
vegoramar
Прохожий
 
Регистрация: 13.10.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vegoramar на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Люди помогите ради Бога , читал много статии и уже запуталься , должен на SD карте создать фаил , дать ему имя и писать в нем 4-5 баита данние. Пишу на CVAvr 2.04.4a , на ATmega16 ,на PROTEUS-е могу включить MMC карта и запихнуть туда мой созданний имидж фаил скажем sd.mmc , использую двухстрочний дисплей , хочу исползовать ту библиотеку которую ест в CVAvr . Включил MMC/SD... , включил SPI , но должен быть без RTC . С чего начат и куда идти подскажите прошу...
делаю так:

unsigned char drv = 0;
...........................
if(disk_initialize(drv) == STA_NOINIT )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("not initialized");//
}
else
if(disk_initialize(drv) == STA_NODISK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("no card inserted");//
}
else

if(disk_initialize(drv) == STA_PROTECT)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("write protected");//
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("Init OK");//
};

а с зади или с переди что сделат не знаю ... disk_status() , f_mount () , f_open() , f_write() , f_close() , f_opendir() после чего что и как .

и то вышеприведенный код тоже на дисплеи ничего не пишет , какбутто в ети if()-ы else{}-ы не входит , проблема знаю что точно не в дисплее
vegoramar вне форума  
Непрочитано 01.07.2011, 17:21   #173
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
По умолчанию Re: SD/MMC на AVR

вот мой пример, думаю разберетесь
Вложения:
Тип файла: txt SD.txt (3.7 Кб, 376 просмотров)
Дмитриус вне форума  
Непрочитано 01.07.2011, 18:46   #174
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
По умолчанию Re: SD/MMC на AVR

vegoramar, с чего начать? - на странице 14 данной темы есть сообщения в которых сказано что и где нужно тыкнуть чтоб проект стал рабочим.
Дмитриус вне форума  
Непрочитано 02.07.2011, 07:47   #175
Dimon2
Частый гость
 
Регистрация: 24.08.2005
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
Dimon2 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от vegoramar Посмотреть сообщение
Люди помогите ради Бога ,.......
а с зади или с переди что сделат не знаю ... disk_status() , f_mount () , f_open() , f_write() , f_close() , f_opendir() после чего что и как .

и то вышеприведенный код тоже на дисплеи ничего не пишет , какбутто в ети if()-ы else{}-ы не входит , проблема знаю что точно не в дисплее
Первое.
/* initialize SPI interface and card driver */
status=disk_initialize(0);

Далее,
/* mount logical drive 0: */
if ((res=f_mount(0,&fat))==FR_OK)
Связывает FAT систему на логическом диске с номером Drive(0) и структуру, на которую указывает указатель fat.

Далее, открыть файл для чтения
/* open the file in read mode */
if ((res=f_open(&file,path,FA_READ))==FR_OK)

если файла нет (возврат любой ошибки) выполнить процедуру
if ((res=f_open(&file,path,FA_CREATE_ALWAYS | FA_WRITE))==FR_OK)
FA_CREATE_ALWAYS - создаст фал.

Далее, закрыть файл.
/* close the file */
if ((res=f_close(&file))==FR_OK)

А теперь основной цикл программы:
/* open the file in read mode */ Открываем файл для записи.
if ((res=f_open(&file,path,FA_WRITE))==FR_OK) //FA_WRITE

В параметре file.fsize будет объем файла в байтах.

Далее, двигаем курсор на количество байт
if ((res=f_lseek(&file,file.fsize))==FR_OK) { //FA_WRITE
если это не выполнить то данные просто будут перезаписаны с 0 строки в файле.

Далее, пишем в файл
/* write some text to the file, without the NULL string terminator sizeof(data)-1 */
if ((res=f_write(&file,text,sizeof(text)-1,&nbytes))==FR_OK)

Закрываем файл
/* close the file */
if ((res=f_close(&file))==FR_OK)

Цикл повторяем, если надо.

Теперь, таймер должен работать.
char text[16]=" "; ваш текст, в данном случае будет записано 15 байт, поставьте 31 - 30 байт будет записано.

char path[]="0:/file.txt"; название вашего файла, не более 8 символов.

Файл будет находится в корневой директории диска.
Dimon2 вне форума  
Сказали "Спасибо" Dimon2
zelen536 (08.07.2011)
Непрочитано 02.07.2011, 08:10   #176
Dimon2
Частый гость
 
Регистрация: 24.08.2005
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
Dimon2 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Теперь далее по ходу дела.

if ((res= f_mkdir ("Now_blok"))==FR_OK) { //Создание каталога в корневой директории

if ((res= f_chdir ("0:Now_blok"))==FR_OK) { //Открыть созданный каталог

На данный момент мы находимся в каталоге Now_blok
if ((res= f_mkdir ("Now_2"))==FR_OK) { //Создать каталог в каталоге Now_blok

if ((res= f_open (&file,"newfile.txt",FA_CREATE_NEW|FA_WRITE))==FR_ OK) { //Открыть файл, если нет создать в каталоге Now_blok

if ((res= f_open (&file,"newfile.txt",FA_WRITE))==FR_OK) { //Открыть созданный файл

if ((res=f_write(&file,text,sizeof(text)-1,&nbytes))==FR_OK) // Записать в файл текст (заменить)

if ((res=f_close(&file))==FR_OK) // Закрыть файл

if ((res=f_unlink("Now_2"))==FR_OK) // Удалить каталог в каталоге Now_blok

if ((res=f_unlink("newfile.txt"))==FR_OK) // Удалить файл в каталоге Now_blok

if ((res= f_chdir ("0:"))==FR_OK) { //Открыть корневую директорию диска

Вот где хранится адрес текущей директории диска я пока не нашел, но над этом работаю.

На пальцах же проще, чем посмотри там поищи сям.
Dimon2 вне форума  
Непрочитано 06.07.2011, 16:15   #177
vegoramar
Прохожий
 
Регистрация: 13.10.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vegoramar на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Здравствуйте всем , дорогой ‹Дмитриус› и ‹Dimon2› огромное спосибо за ответы ,вот что я сделал _
с прогой WinImage создал свой sd.mmc фаил 4Мб втыкал в Proteus в mmc , взял Atmega32 и начал пробовать с CodeVisionAVR-ом, но программный счетчик вьодит в функцию status = disk_initialize(drv); и не выьодит даже . если отключаю эту функцию то программный счетчик идет дальше и остановливается на
f_open(&file,path,FA_READ)
В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА? ПОДСКАЖИТЕ ПОЖАЛУЙСТА

вот вся прога

#include ‹mega32.h›
#include ‹delay.h›
#include ‹math.h›
#include ‹stdlib.h› //// ***** CHmoranal ‹int -@ › sarqel Float
#include ‹string.h›
// Standard Input/Output functions
#include ‹stdio.h›
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include ‹lcd.h›
// SPI functions
#include ‹sdcard.h›
#include ‹spi.h›

#include ‹ff.h› ///// FAT-i hamar

// Declare your global variables here

//////////////////////////////////////////////////////

/* Timer1 overflow interrupt frequency [Hz] */
#define T1_OVF_FREQ 100

/* Timer1 clock prescaler value */
#define T1_PRESC 1024L

/* Timer1 initialization value after overflow */
#define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))

///////////////////////////////////////////////////////

void Initialization();
void Timer_init();
void USART_init();
void SPI_init();

///////////////////////////////////////////////////////
unsigned int i=0;

///////////////////////////////////////////////////////

char USART_WRITE_buffer[53] = {0};

char lcd_buffer[38] = {0}; ///////// sprintf(lcd_buffer,"X or Y VALUE or H VALUE = %f",porc);
/////////////////////////////////////////////////////////////////////////////////////////////////

unsigned char status = 0;
unsigned char drv = 0;
unsigned char vol ;
unsigned int nbytes = 0;
FATFS fat;
FRESULT res ;
FIL file;

// Файл будет находится в корневой директории диска.
char path[]="0:/file.txt"; ///название вашего файла, не более 8 символов.
char text[16] = "aaaaaaaaaa ";

void main(void)
{

Initialization();
Timer_init();
USART_init();
SPI_init();

/* initialize SPI interface and card driver */
//// unsigned char disk_initialize(unsigned char drv)
status = disk_initialize(drv);
if (status == STA_NOINIT )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("drive not initialized");
delay_ms(1000);
}
else if(status == STA_NODISK )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("no card ");
delay_ms(1000);
}
else if(status == STA_PROTECT )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("write protected ");
delay_ms(1000);
}
else if(status == 0 )
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("On success ");
delay_ms(1000);
};


// Связывает FAT систему на логическом диске с номером Drive(0) и структуру,
// на которую указывает указатель fat.
/* mount logical drive 0: */
if ((res=f_mount(0,&fat))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_mount == OK !");//
delay_ms(500);

};

//////////////////////////////////////////////////////////////////////////


// Далее, открыть файл для чтения
/* open the file in read mode */
/* path points to a RAM based NULL terminated char string that represents the
path name for the file to be created or opened.
The path name has the following format:

[logical_drive_number:][/][directory_name/]file_name */

if ((res=f_open(&file,path,FA_READ))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_open == OK !");//
delay_ms(500);
};

//если файла нет (возврат любой ошибки) выполнить процедуру
// FA_CREATE_ALWAYS - создаст фаил.

if ((res=f_open(&file,path,FA_CREATE_ALWAYS | FA_WRITE))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_open == OK !");//
delay_ms(500);
};

///Далее, закрыть файл.
/* close the file */

if ((res=f_close(&file))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_close == OK !");//
delay_ms(500);
};

///А теперь основной цикл программы:
/* open the file in read mode */ //Открываем файл для записи.
//FA_WRITE
if ((res=f_open(&file,path,FA_WRITE))==FR_OK)
{

lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_open == OK !");//
delay_ms(500);
};


//В параметре file.fsize будет объем файла в байтах.

// Далее, двигаем курсор на количество байт
//если это не выполнить то данные просто будут перезаписаны с 0 строки в файле.
//FA_WRITE
if ((res=f_lseek(&file,file.fsize))==FR_OK)
{

lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_lseek == OK !");//
delay_ms(500);
};


// Далее, пишем в файл
/* write some text to the file, without the NULL string terminator sizeof(data)-1 */

if ((res=f_write(&file,text,sizeof(text)-1,&nbytes))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_write == OK !");//
delay_ms(500);
};

// Закрываем файл
/* close the file */

if ((res=f_close(&file))==FR_OK)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("f_close == OK !");//
delay_ms(500);
};

// Цикл повторяем, если надо.

while (1)
{
// Place your code here

};
} ;


void Initialization()
{
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTA=0x00;
DDRA=0xFC;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xF0;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTD=0x00;
DDRD=0xFC;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization
lcd_init(16);

};

void Timer_init()
{

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=T1_INIT››8; //// perepolnenie
TCNT1L=T1_INIT&0xFF; //// perepolnenie
ICR1H=0x00; /// capture INPUT
ICR1L=0x00; /// capture INPUT
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04; //// s uchitovaniem drugix prerivanii

};


// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value
TCNT1H = T1_INIT ›› 8;
TCNT1L = T1_INIT & 0xff;
// Place your code here

disk_timerproc();

}

void USART_init()
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
};

void SPI_init()
{
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 125,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: LSB First

/*
///// SPCR /////
Bit7 SPIE ;;; prerivanyayi tuylatrum
Bit6 SPE ;;; SPI-i tuylatrum
Bit5 DORD ;;; sdvigi uxxutyun@ =1 ==LSB ; =0 == HSB
Bit4 MSTR ;;; Vedushi/Podchenyonni =1 == MASTER
Bit3 CPOL ;;; sinxroimpulsi zaxvati front@ =1 ,SCK==1 ojidanyayi vaxt
Bit2 CPHA ;;; sinxroimpulsi fazan
Bit1 SPR1 ;;; sinxroyi f-@ fosc/64 erb SPI2X == 0
Bit0 SPR0 ;;; fosc/64 erb SPI2X == 0
*/
///////// REJIM 0
SPCR=0b01110010;
////////////////////////////
/*
///// SPSR /////////
Bit7 SPIF ;;; peredachayic heto darnum e 1
Bit6 WCOL ;;; pavtorni zapisi flag
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0 SPI2X ;;; aragutyan bazmapatkum 2 ov
*/
SPSR=0x00; //// 0b01000010

///// SPDR -@ dannineri registrn e

}
vegoramar вне форума  
Непрочитано 07.07.2011, 06:46   #178
Dimon2
Частый гость
 
Регистрация: 24.08.2005
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
Dimon2 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от vegoramar Посмотреть сообщение
В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА? ПОДСКАЖИТЕ ПОЖАЛУЙСТА

вот вся прога


}
У тебя отсутствует всего одна строка:
/* globally enable interrupts */
#asm("sei") Разрешить глобально прерывания.
Dimon2 вне форума  
Непрочитано 07.07.2011, 11:42   #179
vegoramar
Прохожий
 
Регистрация: 13.10.2010
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vegoramar на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Да спосибо и вправду не зометил ,теперь программный счетчик(P.C.) и вошел в
status = disk_initialize(drv); и вышел и дошел до конца main(). Но status ровнялся status == STA_PROTECT == 0x04 (Card is write protected.)
потом когда вышел из res = f_open(...) то проверял res ровнялся
res == FR_WRITE_PROTECTED, /* 10 */ , в принципе логика есть если
(Card is write protected.) то res == FR_WRITE_PROTECTE это логичный результат. Думал что в MMC настройках что то есть скрытого , но ничего не нашел
использоваю ПРОТЕУС 7.5(SP3) , От чего может это быть?
vegoramar вне форума  
Непрочитано 07.07.2011, 13:09   #180
Dimon2
Частый гость
 
Регистрация: 24.08.2005
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
Dimon2 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от vegoramar Посмотреть сообщение
Думал что в MMC настройках что то есть скрытого , но ничего не нашел
использоваю ПРОТЕУС 7.5(SP3) , От чего может это быть?
Не верно настройки были сделаны.
Вот, все работает: Нажмите на изображение для увеличения
Название: nastr.jpg
Просмотров: 214
Размер:	50.4 Кб
ID:	23518 Нажмите на изображение для увеличения
Название: podkl.jpg
Просмотров: 224
Размер:	34.4 Кб
ID:	23519

Да, еще кое что, это я для кого пишу:
//если файла нет (возврат любой ошибки) выполнить процедуру
// FA_CREATE_ALWAYS - создаст файл.

Если - это условие, а не последовательность команд.

В этой теме, в сообщении №148 есть образ диска, скачайте его и с ним попробуйте.

Последний раз редактировалось Dimon2; 07.07.2011 в 13:48.
Dimon2 вне форума  
Закрытая тема

Закладки

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
AVR JTAGICE MKII - проблемы firmware... Luxurious AVR 25 20.10.2014 10:50
БИНС на AVR grisha109 Микроконтроллеры, АЦП, память и т.д 30 15.06.2011 16:08


Часовой пояс GMT +4, время: 11:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot