Например TDA7294

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





Текущее время: Вт апр 16, 2024 16:26:43

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


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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: delay в в паскале.
СообщениеДобавлено: Чт дек 15, 2016 16:57:36 
Родился

Зарегистрирован: Пт сен 16, 2016 18:24:56
Сообщений: 7
Рейтинг сообщения: 0
Добрый вечер, по идее 1 принимается за одну мили секунду 1000 секунда у меня же
чтоб получить задержку в 0.5 сек приходится прописывать 50000, может в настройках как то можно
поправить?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: delay в в паскале.
СообщениеДобавлено: Чт дек 15, 2016 18:51:23 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Какой паскаль? Запускаете DOS код под виндой? Тога задержка может не совпадать с реальной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: delay в в паскале.
СообщениеДобавлено: Чт дек 15, 2016 23:06:14 
Родился

Зарегистрирован: Пт сен 16, 2016 18:24:56
Сообщений: 7
Рейтинг сообщения: 0
среда турбо паскаль win98 . Неужели могут такие расхождения могут быть. Просто самою большую
задержку могу сделать все во лишь 0.5 сек. А если надо хоть 5 мин приходится много раз писать по 0.5.
Вобще программная задержка годится для таймеров ?

Добавлено after 2 hours 6 minutes 30 seconds:
попробовал программку часы, секунды идут правильно там привязка часам компьютера,
может можно както привязать время к другим программам чтоб они на него опирались.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: delay в в паскале.
СообщениеДобавлено: Пт дек 16, 2016 01:48:52 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 42
Рейтинг сообщений: 161
Зарегистрирован: Вт июл 27, 2010 11:31:59
Сообщений: 2204
Откуда: Кххх
Рейтинг сообщения: 1
Можно крутить задержки, но потом на другую машину перенести проблемы...
Можно сесть на прерывание и тогда неважно какой проц там стоит.
Когда то выловил сырец, два прибора крутятся на основе этого кода.
Для отладки подобного надо пост карту, и кидать туда коды, т.к. при ошибке виснет насмерть.
Однако сейчас писать что то новое на паскале я бы не стал.
Спойлер
Код:
 var c                 : char;
     arcon             : word;
     cnt1, cnt2, cnt3  : word;
     ruled             : word;
     skvaj             : byte;
     oddeven           : boolean;
     buf,old_buf,diff  : word;
     diff2             :longint;
     first_path        : boolean;
     circlecnt         : word;
     ismrk         : boolean;
     circlemrk     : word;
     oldInt10 : pointer;
     datafilecount : word;
     bufer             : longint; {timer 2 storage}

{$F+}

procedure int10(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: Word); Interrupt;
  var s1: string;
  begin
   asm cli end;
     circlemrk:=circlecnt;
     ismrk         :=true;
   asm
      mov     al, 20h
      out     0a0h, al
      out     20h, al
      sti    end;
   end;

{$F-}

const TIMERINTR = 8;
      PIT_FREQ = $1234DD;
  var BIOSTimerHandler : procedure;
      clock_ticks, counter : longint;
      highl:boolean; odd:boolean;
{         ──────────────────────────────────────────────────────────────────────┘
       The clock_ticks variable will keep track of how many cycles the PIT has
       had, it'll be intialised to 0. The counter variable will hold the new
       channel 0 counter value. We'll also be adding this number to clock_ticks
       every time our handler is called.
       Next we need to do some initialization:
       ──────────────────────────────────────────────────────────────────────┐
 }
procedure SetTimer(TimerHandler : pointer; frequency : word);
           begin

             { Do some initialization }
               clock_ticks := 0;
                 counter := $1234DD div frequency;

                   { Store the current BIOS handler and set up our own }
                     GetIntVec(TIMERINTR, @BIOSTimerHandler);
                       SetIntVec(TIMERINTR, TimerHandler);

                         { Set the PIT channel 0 frequency }
                           Port[$43] := $34;
                             Port[$40] := counter mod 256;
                               Port[$40] := counter div 256;
                               end;
  {        ──────────────────────────────────────────────────────────────────────┘
           Pretty straightforward stuff. We save the address of the BIOS handler,
           install our own, set up the variables we'll use and program PIT channel 0
           for the divide-by-N mode at the frequency we need.
           This next bit is what we need to do once our program is finished. It just
           resets everything back to normal.
           ──────────────────────────────────────────────────────────────────────┐
   }
 procedure CleanUpTimer;
               begin
            { Restore the normal clock frequency }
            Port[$43] := $34;
            Port[$40] := 0;
            Port[$40] := 0;
            { Restore the normal ticker handler }
            SetIntVec(TIMERINTR, @BIOSTimerHandler);
                              end;
    {   ──────────────────────────────────────────────────────────────────────┘
        Ok, here's our actual handler. This particular handler just writes an
        asterix (*) to the screen. Then it does the checks to see if the BIOS
        handler should be called. If so it calls it, if not it acknowledges the
                     interrupt itself.
        ──────────────────────────────────────────────────────────────────────┐
     } 
procedure Handler; Interrupt;
        begin
        { DO WHATEVER WE WANT TO DO IN HERE }

        { ----------
        таймерное прерывание, реализация рабочих режимов}
    case ruled     of
         10 : begin
               ruled:=21;
              end;
         21 : begin
                   ruled:=22;
               end;
         300 :  begin
               ruled:=0;
               end;
     end; {case}


         { Adjust the count of clock ticks }
         clock_ticks := clock_ticks + counter;
         { Is it time for the BIOS handler to do it's thang? }
         if clock_ticks >= $10000 then
         begin
         { Yep! So adjust the count and call the BIOS handler }
         clock_ticks := clock_ticks - $10000;
         asm pushf end;
          BIOSTimerHandler;
         end
         { If not then just acknowledge the interrupt }
              else
             Port[$20] := $20;
                    end;


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: delay в в паскале.
СообщениеДобавлено: Пт дек 16, 2016 14:14:46 
Родился

Зарегистрирован: Пт сен 16, 2016 18:24:56
Сообщений: 7
Рейтинг сообщения: 0
Нашёл пач который решает эту проблему, теперь задержка работает корректно. :)

Добавлено after 2 minutes 12 seconds:
minakan спасибо.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: delay в в паскале.
СообщениеДобавлено: Пт дек 16, 2016 15:34:33 
Открыл глаза

Карма: 1
Рейтинг сообщений: 9
Зарегистрирован: Сб июл 11, 2009 18:56:07
Сообщений: 69
Откуда: Новосибирск. Академгородок
Рейтинг сообщения: 0
Рад, что решили проблему.
ДОСовские программки и турбо паскаль советую пускать под эмулятором ДОСа: "DOSBox"(виндовский работает менее корректно).-посмотри загрузку компа.
Когда я перешел с 386 компа на пентьюум, то ВР при запуске выдавал ошибку переполнения, т.к. при-иницилизации проги
с подключением модуля "CRT'(куда входи "delay") происходит калибровка скорострельности проца для создания нужной задежки. Там, если посмотреть ASM-код, цикл считать до N, а дальше смотрится по ДОС времени время цикла.
С появление шустрых процов ДОС-таймеры не успевали обновиться и возникала ошибки "деление на 0" или переполнение. Патч появился быстро, наверное его Вы м скачали (там длину цикла увеличили).
Меня удивляет, что не было "Run time error"- скорей всего вы это галочками заблокировали.


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

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


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

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


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

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


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