реклама на сайте
подробности

 
 
> Микроконтроллер сбрасывается..., Несоответствие между заголовочным файлом и Datasheet...
Freeze Anti
сообщение Dec 25 2007, 09:07
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Здравствуйте...

У меня к вам вот такой вопрос...

Я пишу программу для ATmega32... Пишу ее в WinAVR 20060421... Так вот...
После команды sei() у меня происходит сброс... Есть предположения, почему он происходит...

Я просмотрел заголовочный файл iom32.h и обнаружил небольшое несоответствие с даташитом... В общем... В заголовочном файле написано...

Код
/* ADC Conversion Complete */
#define ADC_vect            _VECTOR(16)
#define SIG_ADC                _VECTOR(16)


а читая даташит, я вижу...

Цитата
Table 18. Reset and interrupt vectors
Vector No. | Program address | Source | Interrupt definition
. . .
16 | $01E | USART, TXC | USART, Tx Complete
17 | $020 | ADC | ADC Conversion Complete
. . .


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

Спасибо за внимание...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 26)
VassiL
сообщение Dec 25 2007, 09:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Здравствуйте!
У меня проблема такого плана..
Начинаю постигать азы программирования на СИ под МК в среде AVR studio. Взял как простейший вариант ATtiny2313 и при использовании прерывания 16-тибитного таймера по переполнению происходит RESET МК, вместо перехода на соответствующий вектор прерывания.
Может кто сталкивался с такого рода проблеммой, помогите пожалуйста!
Go to the top of the page
 
+Quote Post
Freeze Anti
сообщение Dec 25 2007, 09:33
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Вот я о том же и говорю... Попробуйте в библиотеке найти вектора прерываний и задать их явно, не прибегая к услугам этой библиотеки... Я, к сожалению, смогу проверить свою догадку только завтра... О результатах незамедлительно сообщу...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 09:56
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Freeze Anti @ Dec 25 2007, 12:07) *
Так вот... если я ошибаюсь, и моя ошибка не из-за этого - поправьте меня, пожалуйста... а если я не ошибаюсь, то хотел бы предложить создать топик, где описывались бы подобные ошибки... просто я захотел поделиться своим наблюдением... просмотрел поиск и не обнаружил ничего по этой теме...


Ошибки в зоголовочных файлах нет. Чтобы поправить вас нужно увидеть ваш код.


VassiL - тоже код, версию WinAVR и варинги компилятора.

Анатолий.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 25 2007, 10:26
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Freeze Anti @ Dec 25 2007, 12:07) *
Я просмотрел заголовочный файл iom32.h и обнаружил небольшое несоответствие с даташитом...
"Несоответствие" возникло из-за того, что некоторые считают вектора прерываний с единицы (как в даташите), а другие - с нуля (в заголовочном файле). Несоответствие - только в этом. Ошибка - в Вашей программе.
Go to the top of the page
 
+Quote Post
Freeze Anti
сообщение Dec 25 2007, 10:48
Сообщение #6


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Код
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <avr/interrupt.h>

. . .

unsigned short sCurrentTemp = 0;

INTERRUPT(SIG_ADC) //Обработчик прерывания от интегрированного АЦП
{
    unsigned int ADCData; //Буферная переменная для хранения
    ADCData = ADCW;         //результата преобразования
    sCurrentTemp = ADCData / 2;
    ADCSRA = ADCSRA | 0x40; //Устанавливаем разряд ADSC в регистре
                           //ADCSR, чтобы начать новое преобразование
}

. . .

void main(void)
{
    char sLogo1[] = {0x4F, 0x41, 0x4F, 0x20, 0x43, 0x48, 0xA8, 0xE1, 0x20, 0x50, 0x4F, 0x43, 0xE0, 0x4F, 0x50, 0x54, 0x45, 0x58, 0x00};
    char sLogo2[] = {0x4B, 0xB8, 0xAC, 0x20, 0x30, 0x2E, 0x31, 0x00};
    DDRB = 0xFF; //Выводы 0 - 6 порта B - выходы (передача данных и управляющие сигналы)
    InitLCD(); //Инициализируем ЖК-дисплей
    ClearLCD();
    ShowStr(sLogo1);
    GoToLine(2);
    ShowStr(sLogo2);
    DDRA = 0x00; //Все выводы порта A - входы
    DDRC = 0x00; //Все выводы порта C - входы
    ADMUX = 0xC0; //Назначаем в качестве аналогового входа PA0;
    ADCSRA = 0xEF; /*0b11101111 - активизируем АЦП с коэффициентом
                    деления 128, разрешаем прерывание от АЦП и
                    начинаем преобразование*/
    sei(); //Общее разрешение прерываний;
    _delay_ms(2000);
    while(1)
    {
        if (PINC & 0x02)
            Control();
        else
            if (PINA & 0x02)
                Set();
            else
                Measure();
    }
}


Вот... и после функции sei(); контроллер перезапускается... Посмотрел даташит и хедер... возможно, вы и правы... отсчет везде начинается с единицы, но только в хедере нет вектора RESET...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 25 2007, 11:24
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Freeze Anti - думаю что у вас есчё что-то вызывает интерупт - а так как гцц на всем неиспользованным векторам даёт ссылку на ресет - оттого у вас и сброс происходит.
Так что проверьте - нет ли у вас той картины что я обрисовал - ну очень похоже..
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 11:37
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



1- INTERRUPT(SIG_ADC)
Вам не нужен INTERRUPT(...) !!!! Точка. Вам нужен ISR(...). Теже будьте внимательны к предупреждениям компилятора. Вы не подключили хеадер где описан INTERRUPT(), но в любом случае он вам не нужен!!!

2. unsigned short sCurrentTemp = 0;
Переменая должна быть 'volatile'!!!

3. _delay_ms(2000);
Неверно. Прочитайте описание _delay_ms и _delay_us. Извините, но мне влом описывать эту ошибку раз в квартал.

Анатолий.

Сообщение отредактировал aesok - Dec 25 2007, 11:44
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 11:38
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



А WDT случайно не включен фьюзом? И сбрасывается - в железе или в симуляторе?
ЗЫ Обработчик лучше определять как ISR(ADC_vect){...

Кстати unsigned int ADCData вообще не нужна и оптимизатор ее выбросит. Про volatile уже выше отметили.

Сообщение отредактировал Qwertty - Dec 25 2007, 11:49
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 11:50
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(aesok @ Dec 25 2007, 12:56) *
Ошибки в зоголовочных файлах нет. Чтобы поправить вас нужно увидеть ваш код.
VassiL - тоже код, версию WinAVR и варинги компилятора.

Анатолий.


Хочу заставить моргать светодиод с помощью данного кода
используя прерывание
Версия WinAVR 20050214
Ставил версию 2007 года на другой машине - таже история.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define Freq 4000000

INTERRUPT(SIG_OVERFLOW1)
{
//Инициализируем счетный регистр значением 61630
TCNT1 = 0x10000 - (Freq / 1024);
PORTB ^= 0x01;
}

int main (void)
{
DDRB = 0x01; //Вывод 0 порта В - Выход
TCCR1A = 0; // T/C1 отсоеденен от вывода ОС1, режим ШИМ отключен
TCCR1B = 5; // Коэф. деления частоты системной синхронизации = 1024
TCNT1 = 0x10000 - (Freq / 1024); //Инициализируем счетный регистр
TIFR = 0; //Сбрасываем все флаги прерываний от T/C1
TIMSK = 0x80; //Разрешаем прерывание при переполнении T/C1
GIMSK = 0; //Запрет внешних прерываний
sei(); //Общее разрешение прерываний
while(1); //Ожидаем прерывания от T/C1 каждую секунду
}

После компиляции имеются варнинги:
c:/program files/win avr/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
../LEDBlink.c:10: warning: return type defaults to 'int'
../LEDBlink.c: In function 'INTERRUPT':
../LEDBlink.c:14: warning: control reaches end of non-void function
Build succeeded with 3 Warnings...
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 11:53
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(aesok @ Dec 25 2007, 14:37) *
3. _delay_ms(2000);
Неверно. Прочитайте описание _delay_ms и _delay_us. Извините, но мне влом описывать эту ошибку раз в квартал.
Анатолий.

А в чем ошибка? Например тактовая F_CPU 128Кгц, неужели _delay_ms(2000) будет работать как то не так?
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 11:55
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



1. Пост номер 8, ответ 1.

2. #define Freq 4000000
Длжно быть Freq 4000000UL


Анатолий.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 11:56
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(VassiL @ Dec 25 2007, 14:50) *
Хочу заставить моргать светодиод с помощью данного кода
используя прерывание
Версия WinAVR 20050214
Ставил версию 2007 года на другой машине - таже история.

...

После компиляции имеются варнинги:
c:/program files/win avr/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
../LEDBlink.c:10: warning: return type defaults to 'int'
../LEDBlink.c: In function 'INTERRUPT':
../LEDBlink.c:14: warning: control reaches end of non-void function
Build succeeded with 3 Warnings...

Уберите #include <avr/signal.h>
Измените INTERRUPT(SIG_OVERFLOW1) на ISR(SIG_OVERFLOW1)
И варнинги исчезнут.

Сообщение отредактировал Qwertty - Dec 25 2007, 12:01
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 11:58
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Qwertty @ Dec 25 2007, 14:53) *
А в чем ошибка? Например тактовая F_CPU 128Кгц, неужели _delay_ms(2000) будет работать как то не так?


Извините. В этом случае будет.

Но тогда:

ADCSRA = 0xEF; /*0b11101111 - активизируем АЦП с коэффициентом
деления 128, разрешаем прерывание от АЦП и
начинаем преобразование*/

Частота работы ADC очень низкая = 1Кгц.

By default, the successive approximation circuitry requires an input clock frequency between 50
kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate.

Анатолий.

Сообщение отредактировал aesok - Dec 25 2007, 12:04
Go to the top of the page
 
+Quote Post
Freeze Anti
сообщение Dec 25 2007, 12:23
Сообщение #15


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Цитата(aesok @ Dec 25 2007, 14:55) *
2. #define Freq 4000000
Длжно быть Freq 4000000UL
Анатолий.


Это вообще то задается в Makefile... и тогда, действительно, UL не надо...

Цитата
И сбрасывается - в железе или в симуляторе?


Так в том и проблема, что сбрасывается в симуляторе... сам сначала на фьюзы грешил... сейчас поправлю в соответствии с замечаниями и проверю...

Сообщение отредактировал Freeze Anti - Dec 25 2007, 12:26


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 12:29
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Freeze Anti @ Dec 25 2007, 15:23) *
2. #define Freq 4000000
Длжно быть Freq 4000000UL
Анатолий.

Это вообще то задается в Makefile... и тогда, действительно, UL не надо...


Обоснуйте пожалуйста свое утверждение.

Анатолий.
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 12:29
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(Qwertty @ Dec 25 2007, 14:56) *
Уберите #include <avr/signal.h>
Измените INTERRUPT(SIG_OVERFLOW1) на ISR(SIG_OVERFLOW1)
И варнинги исчезнут.


Спасибо большое! Все откомпилировалось без предупреждений. Прошил проц и он работает!
У меня теперь другая проблема:
Когда запускаю симулятор, выскакивает вот такая ошибка:
**Runtime Error!
This application has requested the Runtime to terminate it in an unusual way.
и просят связаться с тех поддержкой для получения большей информации**
Предлагается нажать ОК
После успешного нажатия последней, AVR studio закрывается.
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 12:32
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(VassiL @ Dec 25 2007, 15:29) *
Спасибо большое! Все откомпилировалось без предупреждений. Прошил проц и он работает!
У меня теперь другая проблема:
Когда запускаю симулятор, выскакивает вот такая ошибка:
**Runtime Error!
This application has requested the Runtime to terminate it in an unusual way.
и просят связаться с тех поддержкой для получения большей информации**
Предлагается нажать ОК
После успешного нажатия последней, AVR studio закрывается.


Версии WinAVR и AVRStudio?

Анатолий.
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 12:35
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(aesok @ Dec 25 2007, 15:32) *
Версии WinAVR и AVRStudio?

Анатолий.


AVR studio: Version 4.12 Service Pack 3
WinAVR: 20050214
Go to the top of the page
 
+Quote Post
Freeze Anti
сообщение Dec 25 2007, 12:50
Сообщение #20


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



спасибо всем большое... программа больше не сбрасывается в отладчике... завтра проверю на железе... действительно, надо было изменить INTERRUPT на ISR...

насчет #define Freq 4000000

вот цитата из моего Makefile... Я использовал стандартный, внеся туда соответствующие исправления...

Код
# Processor frequency.
#     This will define a symbol, F_CPU, in all source code files equal to the
#     processor frequency. You can then use this symbol in your source code to
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
#     automatically to create a 32-bit value in your source code.
#     Typical values are:
#         F_CPU =  1000000
#         F_CPU =  1843200
#         F_CPU =  2000000
#         F_CPU =  3686400
#         F_CPU =  4000000
#         F_CPU =  7372800
#         F_CPU =  8000000
#         F_CPU = 11059200
#         F_CPU = 14745600
#         F_CPU = 16000000
#         F_CPU = 18432000
#         F_CPU = 20000000
F_CPU = 4000000


Сообщение отредактировал Freeze Anti - Dec 25 2007, 12:51


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 25 2007, 12:58
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Freeze Anti @ Dec 25 2007, 15:50) *
насчет #define Freq 4000000

вот цитата из моего Makefile... Я использовал стандартный, внеся туда соответствующие исправления...

Код
# Processor frequency.
#     This will define a symbol, F_CPU, in all source code files equal to the
#     processor frequency. You can then use this symbol in your source code to
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
#     automatically to create a 32-bit value in your source code.
.......
F_CPU = 4000000


А вот другая цитата из Makefile:

CPPDEFS = -DF_CPU=$(F_CPU)UL

Анатолий.

Цитата(VassiL @ Dec 25 2007, 15:35) *
AVR studio: Version 4.12 Service Pack 3
WinAVR: 20050214


Это версии совместимы. Точно у вас не WinAVR 2007?

Анатолий.
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 13:20
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(aesok @ Dec 25 2007, 15:58) *
А вот другая цитата из Makefile:

CPPDEFS = -DF_CPU=$(F_CPU)UL

Анатолий.
Это версии совместимы. Точно у вас не WinAVR 2007?

Анатолий.


Я прошу прощения, проморгал.. у меня и вправду 2007xxxx версия WinAVR. Сейчас поставил версию 20050214 и симулятор пошел. Спасибо большое!
Сразу вопрос, может нужно найти новый патч на AVR studio или нужно скачать обновленную версию AVR studio? Поделитесь опытом пожалуйста!
Go to the top of the page
 
+Quote Post
Freeze Anti
сообщение Dec 25 2007, 13:25
Сообщение #23


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Цитата(aesok @ Dec 25 2007, 15:58) *
А вот другая цитата из Makefile:

CPPDEFS = -DF_CPU=$(F_CPU)UL


Да я это к тому, что в Makefile уже задается частота... Не будет ли каких-либо конфликтов по ходу компиляции?.. Какое из этих занчений используется в хедерах?..

А вообще предпочитаю не переобъявлять ничего заново... Несколько проще читать потом...


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Dec 25 2007, 13:26
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(VassiL @ Dec 25 2007, 16:20) *
Я прошу прощения, проморгал.. у меня и вправду 2007xxxx версия WinAVR. Сейчас поставил версию 20050214 и симулятор пошел. Спасибо большое!
Сразу вопрос, может нужно найти новый патч на AVR studio или нужно скачать обновленную версию AVR studio? Поделитесь опытом пожалуйста!

Winavr2007 требует студию 4.13 Несмотря на то, что она бета, к ней уже 2 сервиспака вышли smile.gif
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 13:30
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(Qwertty @ Dec 25 2007, 16:26) *
Winavr2007 требует студию 4.13 Несмотря на то, что она бета, к ней уже 2 сервиспака вышли smile.gif


Киньте ссылкой в меня пожалуйста, если есть таковая smile.gif или на мыло уже скачанное, если нетрудно. vasil07@inbox.ru
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 25 2007, 13:45
Сообщение #26


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Qwertty @ Dec 25 2007, 15:26) *
Winavr2007 требует студию 4.13 Несмотря на то, что она бета, к ней уже 2 сервиспака вышли smile.gif

Бетой у Атмела, как и у Майкрософта, можно назвать любой релиз, даже финальный cool.gif. На сайте Атмела после выхода сервиспаков этот билд (aStudio4b528.exe) уже не позиционируется как бета.

Цитата(VassiL @ Dec 25 2007, 15:30) *
Киньте ссылкой в меня пожалуйста, если есть таковая smile.gif или на мыло уже скачанное, если нетрудно. vasil07@inbox.ru

Здесь, как обычно.
Go to the top of the page
 
+Quote Post
VassiL
сообщение Dec 25 2007, 13:53
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 20-12-07
Из: Таганрог
Пользователь №: 33 471



Цитата(IgorKossak @ Dec 25 2007, 16:45) *
Бетой у Атмела, как и у Майкрософта, можно назвать любой релиз, даже финальный cool.gif. На сайте Атмела после выхода сервиспаков этот билд (aStudio4b528.exe) уже не позиционируется как бета.
Здесь, как обычно.


Спасибо, уже качаю!
Спасибо большое всем участникам форума и его создателям!
Теперь можно двигаться дальше.
Всех с наступающим НГ! smile.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01625 секунд с 7
ELECTRONIX ©2004-2016