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

 
 
> Прерывания (help)
rmihail
сообщение Apr 21 2005, 03:45
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 20-04-05
Пользователь №: 4 305



Пишу прогу на c++, переопределяю прерывание от системного таймера на функцию например NewInt08(...). Устанавливаю частоту таймера
( outportb( 0x40, (char) cnt );
outportb( 0x40, (char)( cnt >> 8 ) ); ).
Т.е. функция обработчик прерывания NewInt08(...) вызывается с той частотой с которой мне нужно (например 160 Hz). В обработчике снимаются данные и записываются на диск.
Всё вродеб хорошо, но возникает проблема. Например при 160Hz после 100минут всё виснет наглухо. cranky.gif Если убрать запись на диск, то программа проработала 5 часов без сбоев, далее просто выключил.
Вопрос, в чём проблема? Не успевают обрабатыватся и записыватся данные и стек прерываний со временем переполняется? тогда можно ли его очищать?
Или недопустимо записывать данные из прерываний? Тогда почему и какие могут быть решения проблемы?
Пробовал уменьшать частоту при 150hz работает минут 140, при 100hz жадл 3 часа потом выключил.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rmihail
сообщение Apr 21 2005, 08:55
Сообщение #2





Группа: Новичок
Сообщений: 10
Регистрация: 20-04-05
Пользователь №: 4 305



1) о каком контроллере идёт речь в Вашем сообщении.
Речь идёт о компьютере сборщике: модуль центрального процессора Fastwel CPU 686 E (процессор Geode GX1- 300 МГц), модуль аналогового ввода-вывода AI16-5A (АЦП). На компе стоит урезаная вин98 (Будет дос).

2) О каком компиляторе идёт речь в Вашем сообщении.
Borland C++ version 3.1. (Попробую скомпилять этим Borland C++ v5.02)

3) Как Вы узнаёте о том, что программа работает если она ничего никуда не пишет.
Узнать о том, что идёт опрос схем можно по мерцанию диодов. Да и вобще если из программы удаляется только строка записи на диск и программа не виснет, то это уже по-моему говорит о том, что она работает (при условии что она и в режиме записи работает довольно долгое время).

4) Какая скорость записи на Ваш «диск». Почему приведённые данные для частоты прерываний никак не помогают узнать объём записываемых данных и скорость их записи?
Скорость записы 20Mb/sec. За один тик таймера записывается 60bytes. Т.е. при частоте 160hz - 9600b/sec.

Тестировал время работы обработчика NewInt08(), за секунду выполняется 165-175 раз (естественно с записью). Даже при установке 200hz, программа работает минут 40. Обработчик прерывания от таймера при

Куда катиться этот мир?! Программы для МК на C++. На нём обычные программы и то писать на мой взгляд не стоит.
Подскажите на чём писать такие программы?
Go to the top of the page
 
+Quote Post
sK0T
сообщение Apr 21 2005, 10:17
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



Цитата(rmihail @ Apr 21 2005, 12:55)
Куда катиться этот мир?! Программы для МК на C++. На нём обычные программы и то писать на мой взгляд не стоит.
  Подскажите на чём писать такие программы?
*


Ну в начале я думал Вы под МК собираетесь на C++ програмировать. :-)
Если говорить о ПК, то мой выбор — чистый C или ObjectiveC. Наличие объектов может приводить к печальным последствиям по быстродействию. Всякие опрашивающие вещи точно стоит писать на Си/asm.

Что касается виндоуз и прочего ДОС есть две мысли:
1) написать запись на диск на ассемблере.
2) Поиграться в что-то под названием smartdrive (в windows/dos я не копенгаген, но помоему это и есть та самая буферизирующая сущность).

Есть ещё третий путь: поставить FreeBSD и написать всё под неё. :-D
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- rmihail   Прерывания (help)   Apr 21 2005, 03:45
- - sK0T   Куда катиться этот мир?! Программы для МК на C...   Apr 21 2005, 04:36
- - nameless   Вот так я делал...работало всегда (старый добрый B...   Apr 21 2005, 07:43
- - vvs157   Цитата(rmihail @ Apr 21 2005, 06:45)Пишу прог...   Apr 21 2005, 08:53
|- - vvs157   Цитата(rmihail @ Apr 21 2005, 11:55)1) о како...   Apr 21 2005, 09:16
|- - dxp   Цитата(sK0T @ Apr 21 2005, 16:17)Цитата(rmiha...   Apr 21 2005, 10:50
- - rmihail   Вобще под "чистым" досом с записью работ...   Apr 21 2005, 09:53
|- - vvs157   Цитата(rmihail @ Apr 21 2005, 12:53)  ...   Apr 21 2005, 14:26
||- - rmihail   Цитата(vvs157 @ Apr 21 2005, 17:26)А зачем Вы...   May 11 2005, 10:18
|- - -Tумблер-   Цитата(rmihail @ Apr 21 2005, 12:53)void inte...   Apr 26 2005, 12:36
- - rmihail   На самом деле енавле и дизабле хоть ставь хоть нет...   Apr 27 2005, 05:01
|- - -Tумблер-   Цитата(rmihail @ Apr 27 2005, 08:01)На самом ...   Apr 27 2005, 11:38
|- - rmihail   Цитата(-Tумблер- @ Apr 27 2005, 14:...   May 11 2005, 10:46
- - Vitёk   В своё время делал примерно такую же вещь, как у В...   May 11 2005, 11:06
- - rmihail   Да, очень интересно. Если можно выложите плизз сюд...   May 12 2005, 02:38
- - VAI   Я с такой проблемой сталкивался лет 15 назад. Задо...   May 12 2005, 04:00
- - Vitёk   Выкладываю. Там всё написано без комментариев, по...   May 12 2005, 06:49
- - rmihail   Цитата(Vitёk @ May 12 2005, 09:49)Выкладываю....   May 13 2005, 08:03


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 19:22
Рейтинг@Mail.ru


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