<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[atari.area forum - Pomiar czasu wykonania procedury]]></title>
		<link>https://www.atari.org.pl/forum/viewtopic.php?id=18785</link>
		<atom:link href="https://www.atari.org.pl/forum/extern.php?action=feed&amp;tid=18785&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Najświeższe odpowiedzi w Pomiar czasu wykonania procedury.]]></description>
		<lastBuildDate>Thu, 20 Oct 2022 17:48:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301455#p301455</link>
			<description><![CDATA[<p>Ok</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Thu, 20 Oct 2022 17:48:00 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301455#p301455</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301451#p301451</link>
			<description><![CDATA[<p>jmp ([oldTimerHandler]) zamiast rte.</p>]]></description>
			<author><![CDATA[null@example.com (sqward)]]></author>
			<pubDate>Thu, 20 Oct 2022 17:17:56 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301451#p301451</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301431#p301431</link>
			<description><![CDATA[<p>no tak, w tamtym czasie nie potrzebowałem tego. mógłbym dodać skanowanie klawiszy i timeout na VBLu.</p><p>Swoją drogą Timer C jest używany przez TOS 2.x i nowsze oraz przez sterownik dysków. Jak to godzisz z Twoją procedurą?</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Thu, 20 Oct 2022 09:04:31 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301431#p301431</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301414#p301414</link>
			<description><![CDATA[<p>No tak, ale nie masz kontroli nad tym ile to się będzie wykonywać. Bo funkcja Fread może zając dużo czasu... No i kolejny problem to to, że nie wiesz czy podczas wywołania Fread akurat nie sprawdzasz czy user nie wcisnął jakiegoś klawisza.</p>]]></description>
			<author><![CDATA[null@example.com (sqward)]]></author>
			<pubDate>Wed, 19 Oct 2022 22:01:46 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301414#p301414</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301404#p301404</link>
			<description><![CDATA[<p>@sqward fajne podejście z taskami.</p><p>u mnie właśnie przerwanie końca odtwarzania sampla (&#039;Przerwanie_MONO&#039;) przełącza task na drugi który ładuje GEMDOSem nowe dane sampli, który to potem wraca do głównego procesu.</p><div class="codebox"><pre><code>Przerwanie_MONO:
    move.w    #$2700,SR
        bclr.b    #MFP_MONO,MFP_ISRA.w

        ; zamiana buforow
        move.l    Bufor,D0
        move.l    Bufor+4,Bufor
        move.l    D0,Bufor+4

        move.l    Bufor_Koniec,D0
        move.l    Bufor_Koniec+4,Bufor_Koniec
        move.l    D0,Bufor_Koniec+4

        ; nowy adres dzwięku
        move.b    Bufor_Koniec+3,SDMA_END+4
        move.b    Bufor_Koniec+2,SDMA_END+2
        move.b    Bufor_Koniec+1,SDMA_END
        move.b    Bufor+3,SDMA_START+4
        move.b    Bufor+2,SDMA_START+2
        move.b    Bufor+1,SDMA_START

        move.w    0(SP),TMP_SR
        move.l    2(SP),TMP_ADDR

        move.w    #$2300,0(SP)
        move.l    #TMP_Proc,2(SP)
    rte

TMP_Proc:
        ; czytaj plik
        move.l    Bufor+4(PC),A0
        move.l    #Bufor_wielkosc,D0
          bsr    GEMDOS_Fread
            cmp.l    #Bufor_wielkosc,D0
              bpl    TMP_Koniec
            ST    Flaga_SDMA
TMP_Koniec:

TMP_SR        EQU    *+2
        move.w    #$2300,SR
TMP_ADDR    EQU    *+2
    jmp    *</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Wed, 19 Oct 2022 21:54:33 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301404#p301404</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301401#p301401</link>
			<description><![CDATA[<p>Wywoływanie jakichkolwiek funkcji GEMDOS, BIOS i XBIOS z przerwań nie jest wspierane.<br />Jeśli główny program wywoła w tym czasie jeden z w/w podsystemów to system się wywali.</p><p>Ja streamowanie z dysku rozwiązałem w ten sposób, że na timerze C mam podpięte przełączanie &quot;tasków&quot;. Każdy task ma wrażenie, że jest ciągle wykonywany. Ale tylko jeden task może kożystać z systemu operacyjnego. Nazywam go głównym. Z reguły mam dwa, i ten drugi renderuje efekty. Mogę ustawić dowolny przydział czasu procesora dla każdego tasku na zasadzie &quot;ile odpaleń timera C&quot; wykonywać dany task. Główny task może też oddać swój przydział czasu jeśli akurat nic nie ma do wczytania z dysku.<br />Taki prymitywny RTOS.</p>]]></description>
			<author><![CDATA[null@example.com (sqward)]]></author>
			<pubDate>Wed, 19 Oct 2022 21:46:55 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301401#p301401</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301398#p301398</link>
			<description><![CDATA[<p>chodziło mi o to by GEMDOS nie był wykonywany w trakcie przerwania, tylko po zakończeniu przerwania, czyli po instrukcji RTE.<br />Nigdy tego nie sprawdzałem ale ponoć nie działa albo nie jest zalecane.</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Wed, 19 Oct 2022 21:00:10 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301398#p301398</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301394#p301394</link>
			<description><![CDATA[<div class="quotebox"><cite>Cyprian napisał/a:</cite><blockquote><p>Z tym że procedura ładowanie danych GEMDOS była wstrzykiwana po przerwaniu bo musiała być wykonywana w trybie USER a nie SUPERVISOR.</p></blockquote></div><p>A po co w USER? Ja mam zawsze caly kod w SUPERVISOR, zarpwno główny, jak i przwrwanie</p>]]></description>
			<author><![CDATA[null@example.com (mayonez)]]></author>
			<pubDate>Wed, 19 Oct 2022 19:54:04 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301394#p301394</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301384#p301384</link>
			<description><![CDATA[<div class="quotebox"><cite>Cyprian napisał/a:</cite><blockquote><p>Burczenie może wynikać z tego że CPU i SDMA mają osobne kwarce,</p></blockquote></div><p>doczytałem, kwarc jest wspólny dla CPU i SDMA.</p><p>Przykładowy zegar STE: 32 084 988 / 4 = 8 021 247</p><br /><p>Częstotliwość odtwarzania:<br />8 021 247&nbsp; &nbsp; / 160 = 50 132,79375</p><br /><p>VBL PAL:<br />8 021 247&nbsp; &nbsp; / 313 / 512 = 50,05270941</p><p>Ilość sampli (50066 mono) na VBL PAL<br />50 132,79375 / 50,05270941 = 1001,6</p><p>---edycja---<br />w sieci znalazłem info że zegar STE dla PAL to&nbsp; 8 021 247 (kwarc 32 084 988) a dla NTSC 8 010 600 (kwarc 32 042 400)</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Wed, 19 Oct 2022 18:04:05 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301384#p301384</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301381#p301381</link>
			<description><![CDATA[<p>1) na VBL - to co Adam napisał brzmi dobrze, na VBLu dane ładowane sektorami (bo szybciej) ale wielkość bufora raczej większa, na 2 VBLe (np 2x512 bajtów), tak by podczas jednego VBLa ładować bufor który się właśnie nie odtwarza.</p><p>2) na przerwaniu kończącym pętlę odtwarzania -&nbsp; Timerze A albo Mono. Tutaj zrobiłem tak że miałem dwa bufory (odtwarzany i oczekujący na odtwarzanie), na przerwaniu zmieniałem bufor do odtwarzania i ładowałem dane do bufora który czeka w kolejce. Z tym że procedura ładowanie danych GEMDOS była wstrzykiwana po przerwaniu bo musiała być wykonywana w trybie USER a nie SUPERVISOR.</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Wed, 19 Oct 2022 17:57:02 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301381#p301381</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301379#p301379</link>
			<description><![CDATA[<p>A na czym mam robic? Na innym przerwaniu? Główna pętla ma być na efekty</p>]]></description>
			<author><![CDATA[null@example.com (mayonez)]]></author>
			<pubDate>Wed, 19 Oct 2022 17:18:27 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301379#p301379</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301378#p301378</link>
			<description><![CDATA[<p>Podejrzewam że lepszym rozwiązaniem byłoby coś w stylu ringbuffera o długości większej niż 1VBL - grasz z niego sample, a procedura odczytująca odczytuje od razu jak się &#039;zwolni&#039; miejsce, najlepiej w porcjach o wielokrotności 512b.</p>]]></description>
			<author><![CDATA[null@example.com (Adam Klobukowski)]]></author>
			<pubDate>Wed, 19 Oct 2022 17:17:46 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301378#p301378</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301376#p301376</link>
			<description><![CDATA[<p>Burczenie może wynikać z tego że CPU i SDMA mają osobne kwarce, więc za każdym VBLem trzeba doczytać inną ilość sampli, a ty stosujesz stały bufor, więc mogą robić się &#039;dziury&#039;. <br />Zresztą te 50Hz jest umowne i zależy od zegara CPU (Do STE były wkładane chyba ze dwa różne). W ST w trybie &quot;50Hz&quot;&nbsp; VBL = CPU clock / 313 / 512. w trybie &quot;60Hz&quot; VBL = CPU clock / 262 / 508. Dla TT będzie też inaczej, tylko jeden tryb, coś koło 59Hz, nie pamiętam teraz dokładnych cyklów.</p><p>Dodatkowo, SDMA ma 8bajtowy bufor FIFO, no i przerwanie czy liczniki pokazują stan załadowania danych do bufora a nie stan aktualnie odtwarzanych danych. Na Atari-forum ktoś kiedyś podawał jak obliczyć wielkość bufora na ramkę, poszukam. </p><p>Tak się zastanawiam czemu robisz to na VBL, kod tego wymaga?</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Wed, 19 Oct 2022 16:18:54 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301376#p301376</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301352#p301352</link>
			<description><![CDATA[<p>Udało się, ustawiłem przerwanie Timer-a A. na circa. 1000hz. Cel jest tego taki, że usiłuję napisać procedurę odgrywającą sample na DMA doczytywane z HDD. Może źle się do tego zabieram - postanowiłem zrobić to na VBL odczytując na jednym VBL-u bufor wielkości 501 bajtów (tyle wychodzi przy podziale 25033 Hz/50 Hz). Chciałem zmierzyć ile zajmuje procedura odczytu danych do bufora, z wizualizacji kolorów wynika, że jest to od 10-50% CPU, z czego te 50% to są piki. Z pomiarów czasu timerem A wynika, że procedura wykonuje się od 8 do 37 obiegów timera, czyli ok 8-37 milisekund. Jednak procedura testu prędkości była wykonywana poza VBL. Są tutaj sporo różnice pomiędzy dwoma metodami pomiaru. Zresztą odgrywanie na VBL i tak źle działa, czasem burczy, jakby jednak odczyt &quot;nie mieścił się w ramce&quot; albo są jakieś zakłócenia VBLa. Może trzeba wyłączyć wszystkie przerwania IRQ, albo w ogóle nie tędy droga?</p>]]></description>
			<author><![CDATA[null@example.com (mayonez)]]></author>
			<pubDate>Wed, 19 Oct 2022 06:59:11 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301352#p301352</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Pomiar czasu wykonania procedury]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=301296#p301296</link>
			<description><![CDATA[<p>200 razy na sekundę występuje przerwanie gdy &quot;Timer C Data&quot; osiągnie wartość 0. Rejestr &quot;Timer C Data&quot; zmniejszany jest 38 400 na sekundę, a inicjowany jest wartością 192.</p><p>Z tym że, we wspomnianym przeze mnie wariancie przerwania nas nie interesują (bo są zablokowane) ale zmiana stanu &quot;Timer C Data&quot;. Jeśli 38 400 na sekundę to za mało to można przeprogramować MFP.</p><p>Zegar MFP to&nbsp; 2 457 600. Rejestr &quot;Timer A/B/C/D Control&quot; (dzielnik do wybrania to: 4 / 10 / 16 / 50 / 64 / 100 / 200) decyduje z jaką prędkością zmniejszany jest (o wartość &quot;1&quot;) rejestr Timer A/B/C/D Data.</p><p>Domyślnie Timer C ma &quot;Timer Control&quot; ustawiony na podzielnik 64 , czyli &quot;Timer C Data&quot; zmniejszany jest z prędkością 38 400 na sekundę. &quot;Timer C Data&quot; ma domyślną wartość 192, czyli 38 400 / 192 równa się właśnie 200 razy na sekundę.</p><p>Przykładowo, dla &quot;Timer A/B/C/D Control&quot; ustawionego na podzielnik 4, rejestr &quot;Timer A/B/C/D Data&quot; zmieniany jest 614 400 razy na sekundę.</p><p>Jak mierzymy?</p><p>var Poczatek = &quot;Timer A/B/C/D Data&quot; <br />--- tu coś robimy<br />var Koniec = &quot;Timer A/B/C/D Data&quot; </p><p>var Czas = Koniec - Poczatek</p><p>Jeszcze jedna uwaga, rejestr &quot;Timer A/B/C/D Data&quot;&nbsp; jest 8 bitowy, więc przy obliczeniach trzeba wziąć pod uwagę że się &#039;przekręci&#039;.</p>]]></description>
			<author><![CDATA[null@example.com (Cyprian)]]></author>
			<pubDate>Tue, 18 Oct 2022 10:52:20 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=301296#p301296</guid>
		</item>
	</channel>
</rss>
