Do MacGyver'a:
Ufff.... Doszedlem do podobnych wnioskow... Ciesze sie ze ktos mysli tak jak ja :-) Potrzebowalem poparcia moich chorych teori przez osobe trzecia :-) Dzieki!
I Seban: jakie przesunięcie 15% po ostatnim bicie??? Dlaczego ty te procenty dodajesz? Głodnemu chleb na myśli?"
ale o dodawaniu procentow pisal chyba MacGyver :-) A pozatym to bym sie chyba z nim zgodzil, ale przy zalozeniu poprawek Electrona :-) (co do bledu 15% wartosci bitu dla calej ramki :-)
Czemu w tym wzorze jest +7 a nie +1. To bez sensu. Liczniki audf przecież zliczają w dół do zera i generują IRQ po jego przekroczeniu (bcc?). Więc przerwanie jest generowane po AUDF+1 cyklach. Błąd w druku? (7 jest podobne do 1, a w starych maszynach do pisania cyfry 1 nawet nie było i używało się np. T).
Pozwolisz ze zacytuje pare fragmentow dokumentacji, to chyba najwazniejszy fragment:
The frequencies given above are approximate. The Exact Frequency (Fin) that clocks the divide by N counters is given below (NTSC only, PAL different).
FIN Approximate FIN Exact
1.79 MHz 1.78979 MHz ? Use modified formula for Fout
64 kHz 63.9210 kHz ? Use normal formula for Fout
15 kHz 15.6999 kHz
The Normal Formula for output frequency is:
Fout = Fin / 2N
Where N The binary number in the frequency register (AUDF), plus 1 (N=AUDF+1). The MODIFIED FORMULA should be used when Fin = 1.79 MHZ and a more exact result is desired:
Fout = Fin / 2(AUDF + M)
Where: M = 4 if 8 bit counter (AUDCTL bit 3 or 4 = 0)
M = 7 if 16 bit counter (AUDCTL bit 3 or 4 = 1)
Tez nie mam pojecia skad sie biora wartosci 4 i 7, nie mam czasu na tak dokladne wnikanie w malo-czytelna dokumentacje POKEY'a :-( Dlatego prosilem was o wyjasnienie tego faktu.
Co ciekawe dopiero po zastosowaniu tego wzoru udaje sie osiagnac odpowiednie wyniki :-?
Czy te 19200 to ilość bitów danych przesłanych w ciągu sekundy razem z bitem stopu czy bez?
wydaje mi sie ze jest predkosc transmisji wszystkiego co pojawia sie na szynie, a wiec bity start i stop, niejeko naleza do calosci transmisji. Przytocze fragment Atari Hardware Manual (AHM):
The serial output data always changes when the serial output clock goes true. The clock then returns to zero in the centre of the output data bit time.
...
...
The baud (bit) rate of the data and clock is determined by audio channel 4 audio channel 2, or by the input clock, depending on the serial mode selected by bits 4, 5, and 6 of SKCTL. (See chart at end of this section.)
A jak wiadomo zegar (CLOCK) jest generowany przez polaczone kanaly 3 i 4. Tak wiec wszystko co jest wystawiane na szyne danych jest synchronizowane przez sygnal zegarowy generowany poprzez polaczone kanaly 3 i 4, tak wiec mysle ze bity start i stop takze nalezy liczyc :-)
Nie jestem pewien, ale POKEY przy wysyłaniu (SKCTLS = $23) wyrzuca na linię zegarową szybkość transmisji - może wystarczyłoby zmierzyć tutaj częstotliwość ?
Na poczatek parametry szyny:
# 1 start bit
# 1 stop bit
# 8 data bits
# no parity control
# 19200 bits per second
A i owszem, wyrzuca, ale tylko podczas transmisji bajtu danych, a wyglada to tak:
One byte of SIO data
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
| | | | | | | | | | | | | | | | clock
-------------+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +------
---------+ +---+ +-------+ +--------
| 0 | 1 | 0 | 1 1 | 0 0 | 1 data
+-------+ +---+ +-------+
| |
start bit stop bit
Czestotliwosciomierzem tego nie zmierze :-(, ATARI do pracy nie zaniose :-( A oscyloskopu cyfrowego z pamiecia w domu nie posiadam. Zmierze to wszytko jak tylko sobie POKEY'a do jakiegos mikro-kontrolera podlacze :-) i zaniose to do pracy gdzie mam odpowiedni sprzet :-)
Seban: W domu sprawdzę dokumentację... może z tym Twoim wzorem coś nie tak ?
to nie jest moj wzor, wziolem go z dokumentacji :-) Sam nie rozumiem tej magicznej liczby 7 ... hmmm... mam co prawda podejrzenie, ale musialbym miec bardziej czytelne dokumentacje POKEY'a... te maja za malo DPI :(
Zwroccie uwage prosze na opis rejestru $D208 (AUDCTL):
AUDCTL (Audio Control)(D208)
This address writes data into the Audio Mode Control Register. (Also see SKCTL two-tone bit 3 and notes).
D0 Change Normal 64 KHZ frequency, into 15 KHZ.
D1 Insert Hi Pass Pilter in Channel 2, clocked by Channel 4.
D2 Insert Hi Pass Filter in Channel 1, clocked by Channel 3. (See section II.)
D3 Clock Channel 4 with Channel 3, instead of 64 KHz (16 BIT).
D4 Clock Channel 2 with Channel 1, instead of 64 KHz (16 BIT).
D5 Clock Channel 3 with 1.79 MHz, instead of 64 KHz.
D6 Clock Channel 1 with 1.79 MHz, instead of 64 KHz.
D7 Change 17 bit poly into a 9 bit below poly.
Zwrocie prosze uwage na opis bitow D3,D4. W kazdej dostepnej literaturze bylo napisane ze dwa osmiobitowe liczniki sa laczone w jeden 16-bitowy. Jednak tu sugeruja iz na poczatku nastepuje podzial Fin przez kanal np. 3, a dopiero ta podzielona czestotliwosc jest dalej dzielona poprzez kanal 4. Z tego wynika ze nie jest to tak naprawde pelny 16-bitowy dzielnik, ale jakas dziwna hybryda.... albo ja juz nic nie rozumiem, albo oni tu cos sciemniaja :-) Moze to z tego wynikaja te magiczne liczby 4 i 7 we wzorach na Fout?
Dzieki Wszystkim za poswiecony czas! Ide walczyc... jezeli ktos bedzie mial jeszcze jakies pomysly lub nowe idee... prosze piszcze :-) Moze uda sie to wyjasnic :-)
A jeszcze jedno zdanie z dokumencacji dotyczace predkosci transmisji:
Input and output clocks are equal to the baud (bit) rate, not 16 times baud rate. Transmitted data changes when the output clock goes true. Received data is sampled when the input clock goes to zero.
Nie wiem dlaczego podkleslaja "not 16 times baud rate". hmmm. Ciekawostka.
pozdrawiam serdecznie
Seban/SLIGHT