1 Ostatnio edytowany przez jury (2010-12-17 20:54:59)

Chcialbym uzyc Timer B do narysowania bar'ow z kolorami. Po przeczytaniu tutoriala odnosnie Timera B od Ingrama i Periheliona udalo mi sie conieco. Natomiast problem mam ze stabilonscia owych bar'ow. Drgaja straszliwie mimo wylaczenia Timera C jak to bylo w tutorialach zalecane. Co robie nie tak?

Tak wyglada to co obecnie uzyskuje:

Post's attachments

timerb.JPG 26.69 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

2

kompensujesz czas jaki cpu potrzebuje na obsluge irq?

przechodze na tumiwisizm

3 Ostatnio edytowany przez jury (2010-12-17 21:30:47)

Nie mam zielonego pojecia o co pytasz. Z wyczytanych madrosci od Ingrama zrozumialem na tyle Timer B ze podpinam jakis kod pod to przerwanie i moge tam dawac co chce. Wg mojego rozumienia to moze tam byc cokolwiek i tyle aby sie tylko skonczylo przed kolejnych wywolaniem przerwania Timer'a czyli u mnie co linie. W moim przypadku to procedura przerwania jest banalna:

    movem.l    d0-7/a0-6,-(a7)
    lea    niebieski,a0
    move.w    (a0)+,$ff8240
    move.w    (a0)+,$ff8240
    move.w    (a0)+,$ff8240
    move.w    (a0)+,$ff8240
    move.w    (a0)+,$ff8240

    move.w    #$000,$ff8240

    movem.l    (a7)+,d0-7/a0-6
    bclr    #0,$fffffa0f.w
        rte

4

cpu w zaleznosci od tego co akurat robi ma rozny czas reakcji na przerwanie
i dlatego szarpie ci bary
co trzeba zrobic to zsynchronizowac sie z dodatkowym counterem do konkretnej wartosci

point iz, ze nie wiesz czy obsluzenie wywolania irq (fizycznie, czyli drut przyjmuje wartosc, do tego az cpu zmieni adres pc) trwa rozna ilosc cykli a ty nie zgadniesz ile, trzeba to obejsc

przechodze na tumiwisizm

Dokładnie jak pisze Candle - w momencie wywołania przerwania, Motorolka najpiers 'dokańcza' aktualnie wykonywaną instrukcję, a to w ekstremalnych przypadkach (mul) może być do 250 cykli, dlatego przerwanie jest niestabilne czasowo.

Wejdź sobie na kanał #atariscne na ircnecie albo zapytaj na forum DHS - tam ci wszystko ładnie wytłumaczą.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

6 Ostatnio edytowany przez jury (2010-12-18 11:36:12)

Nie mul :) , bo mul max może być ( piszę z pamięci, więc pewnie będzie lekko +/- ) 74 cykle, a najcięższy jest div który w najbardziej ekstremalnym przypadku może trwać chyba 144 cykle, co faktycznie jest dużo i w takim razie macie rację że może zaburzać mi synchronizację.
Eee, to w takim razie chyba wracam do literatury, bo coś mi przerwania jeszcze nie idą :D

7

nawet +-1 cykl bedzie ci szarpal bara

przechodze na tumiwisizm

8

Musisz zacząć synchronizować już  z VBL-a. Wyłączyć wszystkie przerwania MFP (można jakoś to zsynchronizować, ale zacznijmy od podstaw). W VBL-u piszesz coś takiego:

WAIT:     MOVE.B    $FF8209.W,D0   ; Low-Byte
          BEQ.S     WAIT           ; mustn't be 0
          NOT.B     D0             ; negate D0
          LSR.B     D0,D0          ; Synchronisation

Po wykonaniu tego jesteś już zsynchronizowany.
Ten trick działa tylko z VBL-a. Może da się go rozszerzyć na działanie z innych przerwań, albo wymagało by to jakichś tablic i gimnastyki..

What can be asserted without proof can be dismissed without proof.

9

Hej Jury,
niestety, niezaleznie od synchronizacji, Timery MPF zawsze beda niestabilne, bo CPU i MPF maja osobe zegary. Minimalny rozjazd to z tego co pamietam 4-12 cykli.
Tak jak pisze Sqward, do tego efektu lepiej zrezygowac z przerwania i synchronizowac kod raz na ramke. Na szybko, zrobilem kod pod devpaca dla trybu PAL - 50Hz.

linia MACRO
        ;move.w    (A0)+,(A1) ;480 cykli
        dc.w    $3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298
        dc.w    $3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298
        dc.w    $3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298
        dc.w    $3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298,$3298
        ;nop ; 32 cykle
        dc.w    $4e71,$4e71,$4e71,$4e71,$4e71,$4e71,$4e71,$4e71
    ENDM

START
    move.w    #$20,-(A7)
    trap    #1
    addq.l    #6,A7

    move.w    #$2700,SR
    lea        RASTER,A0
    lea        $ffff8240.w,A1

VBL_Synchro
    move.b    $ffff8209.w,D0
    beq.s    VBL_Synchro
    not.b    D0
    lsl.b    D0,D0

    REPT 80
        nop
    ENDR

KOLORUJ_LINIE
    REPT 199
        linia 40
    ENDR
    lea        RASTER,A0

    bra.w VBL_Synchro

RASTER ;kolory 199 lini po 40 kolumn
    REPT 199
        dc.w    $0777,$0700,$0070,$0007,$0077,$0707,$0770,$0000
        dc.w    $0666,$0600,$0060,$0006,$0066,$0606,$0660,$0000
        dc.w    $0555,$0500,$0050,$0005,$0055,$0505,$0550,$0000
        dc.w    $0444,$0400,$0040,$0004,$0044,$0404,$0440,$0000
        dc.w    $0333,$0300,$0030,$0003,$0033,$0303,$0330,$0000
    ENDR
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

10 Ostatnio edytowany przez jury (2010-12-19 13:54:35)

O zesz tysz :) wielkie dzięki, jutro eee.. dzisiaj po poludniu, ( korekta: wieczorem, hehe ) bede probowal :D
Chwilowo jestem tak sobie dysponowany, to zle ludzie sa, mowie Ci :)

11

i jak? procka sie przyda?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

12 Ostatnio edytowany przez jury (2010-12-19 23:23:50)

Kwak, sprawdzilem Twoja procke i dziala :) Podziekowal :D, napewno sie przyda, w swieta trzeba bedzie przysiasc troche do devpac'a.

13

Jury, a moze w swieta przysiadziemy razem do piwka i devpaca?  moze nawet jakiegos dentrosa udało by się sklecic...

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

14

JESTEM ZA :) Tyle że to będzie pewnie raczej na zasadzie że ja będę uczniem a Ty nauczycielem :)  Mi to jednak tam nie przeszkadza, hiehie.

15

Jury, bez belfrów mi tu :)

zakoduj coś i wrzucaj na forum!!!!


a piwko to może między świetami a nowym rokiem? poniedziałek, wtorek czy cuś?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org