1

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Upraszczając bardzo...

BasicROM jako fizyczny układ scalony niczego nie wysyła do PIA
Program w ATARI BASIC może wysłać - (POKE......)

AtariOS jako fizyczny układ scalony niczego nie wysyła do PIA
AtariOS jako program zawarty w układzie ROM odczytuje port - np podczas przerwania ramki (obrazu)



Teraz zadajmy pytanie gooooglownicy w postaci   : Atari Port B

pierwsze co się znalazło :  Rejestry PIA - Atariki

prowadzi link do  :  http://atariki.krap.pl/index.php/Rejestry_PIA

Cyt.:


Lista rejestrów
Adres       
$D300

   
Etykieta
PORTA

   
Opis
Jako rejestr kierunku przepływu danych: ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia, w przeciwnym wypadku - jako bit wyjścia danych. System programuje wszystkie linie portu jako wejście.
Jako rejestr przesyłania danych: przypisany jest do dwóch pierwszych (w XL i XE: dwóch jedynych) gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 1, starsze - joysticka nr 2.

Znaczenie bitów kiedy do gniazd podłączone są joysticki (cień dla dolnego nibble znajduje się odpowiednio pod JSTICK0 ($0278), a dla górnego pod JSTICK1 ($0279)):

bit 7: joystick 1 w prawo (0 = tak, 1 = nie)
bit 6: joystick 1 w lewo (0 = tak, 1 = nie)
bit 5: joystick 1 w dół (0 = tak, 1 = nie)
bit 4: joystick 1 w górę (0 = tak, 1 = nie)
bit 3: joystick 0 w prawo (0 = tak, 1 = nie)
bit 2: joystick 0 w lewo (0 = tak, 1 = nie)
bit 1: joystick 0 w dół (0 = tak, 1 = nie)
bit 0: joystick 0 w górę (0 = tak, 1 = nie)
Znaczenie bitów kiedy do gniazd podłączone są paddles (cienie dla odpowiednich przycisków znajdują się od PTRIG0 ($027C) do PTRIG3 ($027F)):

bit 7: przycisk potencjometru 3 (0 = wciśnięty, 1 = zwolniony)
bit 6: przycisk potencjometru 2 (0 = wciśnięty, 1 = zwolniony)
bit 5: nieużywany (1)
bit 4: nieużywany (1)
bit 3: przycisk potencjometru 1 (0 = wciśnięty, 1 = zwolniony)
bit 2: przycisk potencjometru 0 (0 = wciśnięty, 1 = zwolniony)
bit 1: nieużywany (1)
bit 0: nieużywany (1)
Znaczenie bitów kiedy do gniazd podłączone jest pióro świetlne (dedykowanych rejestrów cieni dla przycisków pióra nie ma, lecz z powodzeniem można posłużyć się rejestrami położenia joysticków JSTICK0, oraz JSTICK1) lub pistolet świetlny:

bit 7: nieużywany (1)
bit 6: nieużywany (1)
bit 5: nieużywany (1)
bit 4: przycisk pióra 1 (0 = wciśnięty, 1 = zwolniony)/przycisk pistoletu 1 (0 = zwolniony, 1 = wciśnięty)
bit 3: nieużywany (1)
bit 2: nieużywany (1)
bit 1: nieużywany (1)
bit 0: przycisk pióra 0 (0 = wciśnięty, 1 = zwolniony)/przycisk pistoletu 0 (0 = zwolniony, 1 = wciśnięty)



Adres
$D301   

Etyklieta
PORTB   

Jako rejestr kierunku przepływu danych: ustawienie bitu na 0 programuje odpowiedni bit w rejestrze przesyłania danych jako bit wejścia, w przeciwnym wypadku - jako bit wyjścia danych. System w 400/800 programuje wszystkie linie portu jako wejście, w XL/XE - wszystkie jako wyjście.
Jako rejestr przesyłania danych: w serii 400/800 przypisany jest do drugiej (nieistniejącej w XL/XE) pary gniazd joysticka, młodsze 4 bity przekazują stany joysticka nr 3, starsze - joysticka nr 4. Cienie znajdują się odpowiednio pod JSTICK2 ($027A) i JSTICK3 ($027B). W serii XL/XE są to duplikaty cieni portu A.

W serii XL rejestr ten steruje układem zarządzania pamięcią oraz (istniejącymi w niektórych modelach) diodami konsoli. Przypisanie bitów:

bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)
bit 6: nieużywany
bit 5: nieużywany
bit 4: nieużywany
bit 3: LED 2 (0 - świeci się)
bit 2: LED 1 (0 - świeci się)
bit 1: RAM w obszarze $A000-$BFFF (1) lub Atari BASIC tamże (0)
bit 0: ROM systemu operacyjnego w obszarze $C000-$CFFF i $D800-$FFFF (1) lub RAM tamże (0)
Wartością domyślną jest $FF.

W serii XE rejestr ten steruje układem zarządzania pamięcią. Przypisanie bitów:

bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)
bit 6: w XEGS gdy BASIC jest wyłączony (bit 1=1), ustawienie tutaj 0 włącza ROM wbudowanej gry Missile Command. W pozostałych modelach nieużywany.
bit 5: w obszarze $4000-$7FFF ANTIC widzi pamięć główną (1) lub dodatkową (0)
bit 4: w obszarze $4000-$7FFF CPU widzi pamięć główną (1) lub dodatkową (0)
bit 3: wybór banku pamięci dodatkowej 16k w obszarze $4000-$7FFF
bit 2: wybór banku pamięci dodatkowej 16k w obszarze $4000-$7FFF
bit 1: RAM w obszarze $A000-$BFFF (1) lub Atari BASIC tamże (0)
bit 0: ROM systemu operacyjnego w obszarze $C000-$CFFF i $D800-$FFFF (1) lub RAM tamże (0)
Wartością domyślną jest $FF.

Działanie bitu 7 jest uzależnione od stanu bitu 0: bit 7 włącza i wyłącza SELF TEST tylko wtedy, kiedy bit 0 jest ustawiony na 1. W przeciwnym razie zmiany stanu bitu 7 są ignorowane.

Działanie tego rejestru modyfikują standardowe rozszerzenia pamięci oraz MapRAM.


======================================================
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Skonfigurowanie linii PORTB (w rejestrze kierunku przepływu danych) jako wejściowych powoduje, że takie linie PIA pozostają w stanie logicznej "1" niezależnie od tego jaka wartość została zapisana do rejestru przesyłania danych PORTB (co może powodować problemy z konfiguracją pamięci w XL/XE).
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
======================================================



$D302    PACTL   
Rejestr kontroli portu A. Znaczenie bitów:

bit 7: status przerwania IRQ portu A (1 - wystąpiło)
bit 6: nieużywany (zawsze 0)
bit 5: nieużywany (zawsze 1)
bit 4: nieużywany (zawsze 1)
bit 3: sterowanie silnikiem magnetofonu (0 - włączony, 1 - wyłączony)
bit 2: bit wyboru funkcji rejestru PORTA: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych
bit 1: nieużywany (zawsze 0)
bit 0: zezwolenie na przerwanie IRQ portu A (1 - dozwolone)
Przerwanie IRQ portu A podłączone jest do linii PROCEED gniazda SIO. System programuje tu domyślnie brak zezwolenia na jego wystąpienie. Status IRQ kasowany jest automatycznie po odczycie PORTA.

$D303    PBCTL   
Rejestr kontroli portu B. Znaczenie bitów:

bit 7: status przerwania IRQ portu B (1 - wystąpiło)
bit 6: nieużywany (zawsze 0)
bit 5: nieużywany (zawsze 1)
bit 4: nieużywany (zawsze 1)
bit 3: sterowanie linią COMMAND gniazda SIO (0 - aktywna)
bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
bit 1: nieużywany (zawsze 0)
bit 0: zezwolenie na przerwanie IRQ portu B (1 - dozwolone)
Przerwanie IRQ portu B podłączone jest do linii INTERRUPT gniazda SIO. System programuje tu domyślnie brak zezwolenia na jego wystąpienie. Status IRQ kasowany jest automatycznie po odczycie PORTB.


.

2

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Maja pulsować

na wszystkich scalakach gdzie dochodzą sygnały adresowe. Czy akurat adresy mają dotyczyć BasicROM dodpowiada wejście /CS (Chip Select) w scalaku BROM pin20. Do tego pinu sygnał przychodzi z PAL16L8 pin13. Sygnał ten zalezny jest od stanu wejścia nr 18 PAL16L8 (BasicEnable) który przychodzi z PIA PB1 pin11.
PIA sterowany jest z dekodera adresów 74LS138. Jednym z sygnałów sterujących jest IO (InpitOutput) który przychodzi z PAL16L8.

Sprawdź linie RESET oraz zegary systemu a szczególnie Fi02
Użyj oscyloskopu.

3

(29 odpowiedzi, napisanych Sprzęt - 8bit)

goolash napisał/a:

Pia w innym sprawnym egzemplarzu powoduje czarny ekran.

To wiemy że PIA jest trafiony


goolash napisał/a:

Co do ścieżek to jak już pisałem zarówno linie adresowe jak i  danych przedzwoniłem, tj sprawdziłęm multimetrem ich ciągłość.
Sprawdzałem na nóżkach (przy obudowach), bo wiem że mikropęknięcia zdarzają się na styku lutu i laminatu i ich nie widać gołym okiem, tutaj jestem pewien że wszystko gra.

Piszczałka w mierniku nie pokaże kształtu i poziomu napięć.  Złe poziomy napięć = złe działanie

goolash napisał/a:

Zrobiłęm już reflow praktycznie całej płyty ale po tym co pisał Mq to wiem, że to może nie starczyć.

Pewien jesteś że zrobiłeś Reflow w Atari65XE :)

goolash napisał/a:

No dobra to jeśli skupimy się tylko na ukłądach scalonych, to co może jeszcze odpowieadać za błędy na liniach adresowych a12-a15 ?

Zły kształt i poziomy  sygnału. Pull-Up rezystory podpinające te linie do +5V

goolash napisał/a:

Na pewno nie Freddy, nie ROM-y, nie PIA,nie MMU, nie linie RAS,CAS, WRT.
To co właściwie zostaje .... CPU i Antic i to wszystko.

Sprawdziłeś piszczałką w mierniku czy oscyloskopem?


Może być jeszcze inny babol. Upływność między ścieżkami ---> upływność to nie zwarcie a jakaś rezystancja przez którą sygnał przechodzi z jednej ścieżki na inną i powoduje niepoprawne działanie.

Zrób dobrej jakości ,im więcej Mpixeli tym lepiej,  fotki PCB z jednej strony i z drugiej, pod różnymi kątami przy dobrym oświetleniu (aby nie było cieni) - popatrzymy

Link do IPC-A-610D po polsku przeczytaj rozdział 5 i rozdział 7. A będziesz patrzył inaczej na PCB :)

https://chomikuj.pl/loco81/Dokumenty/El … 309140.pdf

4

(29 odpowiedzi, napisanych Sprzęt - 8bit)

PIA = MOS 6520 --> Rockwell R6520, Motorola MC6820, Western Digital W6520, etc.

goolash napisał/a:

A więc.
Freddie - wylutowany, przeztestowany i sprawny w 100%
ROM Basic - wylutowany, przeztestowany i sprawny w 100%
U2 dekoder adresów 74LS138 - wylutowany, przeztestowany i sprawny w 100%
PIA - wylutowana... niesprawna .
Niestety. Po wstawieniu sprawnego kontrolera sytuacja nie poprawiła się ani odrobine. błędy i zachowanie są te same co były. Zero zmian .

Sprawdzenie scalaków  wyjętych z PCB jest ok, ale nie sprawdzisz tak poziomów logicznych i przebiegów w danej konkretnej PCB.
Mogą być uszkodzone ścieżki.
Scalak testowany w innej atarynce może działać bo PCB nie będzie miało uszkodzeń.


Jak sprawdziłeś PIA?

5

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Ciekawa usterka :)

Robimy podejście metodyczne :)

Co wiemy:

Błędy w obszarze adresowym A000 - FFFF
Za ten obszar odpowiedzialne są linie adresowe A12,A13,A14,A15
W skrócie pojawienie się stanu wysokiego na którejś z linii powoduje błędy zapis, odczyt lub jedno i drugie.

Pamięć RAM
Zaczniemy od ścieżek które mogą sypać błędami
Patrząc na schemat masz 8 kości DRAM
w każdym scalaku
Pin 14 - Data Output
Pin 2 - Data Input 
są ze sobą połączone. 
Odessij cynę, oczyść pady, dokładnie popatrz przez lupę czy nie ma pęknięć ścieżek koło padów lutowniczych. Topnik i zalutuj ponownie. -->> Zimne luty, uszkodzenie ścieżek powoduje odczyt lub zapis w pamięci przypadkowych danych.

Pin 3 - /Write Enable .
Odessij cynę, oczyść pady, dokładnie popatrz przez lupę czy nie ma pęknięć ścieżek koło padów lutowniczych. Topnik i zalutuj ponownie. -->> Zimne luty, uszkodzenie ścieżek powoduje opóźnienie lub nie przełączenie się scalaka z trybu zapisu do odczytu lub na odwrót co powoduje pozostanie stanu na linii danych z innego adresu. Data crash :)

Rezystory szeregowe oraz  Pull-up na liniach danych miernik i sprawdzanie rezystancji. Oczywiście przelutować :)


Linie adresowe

Oscyloskop i pomiary logiki - obraz tysiącem słów :)

Poziomy napięć dla TTL
sygnał niski (logiczne „0”) jest zdefiniowany jako napięcie w zakresie 0 V do 0,8 V w odniesieniu do masy,
a wysoki (logiczna „1”) – 2,4 V do 5 V. Napięcie od 0,8V do 2,4V jest fe, be, i fuj fuj :P

Sprawdzasz przebiegi na liniach adresowych CPU i ta same linie na innych układach - przebiegi powinny być prawie takie same.
To samo z liniami danych...

Sonde podpinasz do wyprowadzeń zaraz koło obudowy scalaka, a nie na laminacie (znajdziesz mikro pęknięcia) 

FREEDIE - DRAM 
sprawdzasz przebiegi na CAS RAS WRT na FREEDIE  i na każdej kości DRAM

Miłej zabawy i powodzenia

link do schematu

https://systemembedded.eu/viewtopic.php?t=37

link do testowania freediego

https://hardware.atari8.info/freddie.php

6

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Generalnie obstawiam ROMy albo trafione połączenia (mikropęknięcia ścieżek)

Jeżeli już wydłubywałeś jakiś elementy to sprawdź dokładnie jeszcze raz lutowania. Przy "wiekowych laminatach" ścieżki lubią pęknąć podczas lutowania na granicy pad lutowniczy <-> ścieżka

7

(29 odpowiedzi, napisanych Sprzęt - 8bit)

goolash napisał/a:

Barman wspomina też o kondensatorach, sprawdziłem przy wejściu ten główny, no i napięcia 5v na wszystkich układach też w normie.

Teraz dopiero zobaczyłem na fotce że błędy są w 2 obszarach

1 - RAM c000 - ffff
oraz
2 - BROM a000 - bfff

czyli problem jest na czterech najstarszych bitach adresu

Na szybko podmieniłbym OSROM i BasicROM jednocześnie

jeżeli nie zadziała to podmianka PIA - to portB  bierze udział w adresowaniu pamięci  dokładnie bit 1

dekoder adresów 74LS138 wyprowadzenie 12 odpowiada za adresowanie portu PIA

MMU PAL16L8  dokładnie sprawdzić co się dzieje na wyprowadzeniach 13 i 15

wyprowadzenie 13 odpowiada za Basic albo RAM adresy  A000 do BFFF
wyprowadzenie 15 odpowiada za OS albo RAM adresy C000 do FFFF


A tak na marginesie

Jak coś mierzysz to z głową... Jedyne co stwierdziłeś to to że zasilacz działa i daje 5V oraz napięcia są na każdym kondensatorze. Barawo ścieżki zasilające oraz zasilacz mamy powiedzmy sprawdzone :)

Kondensatory - parametry
1... pojemność
2... upływność
3... rezystancja szeregowa
Wszystkie te parametry mierzy się na niepodłączonym kondensatorze. Natomiast jak już wyjmujesz kondensator to nie zawracaj sobie głowy pomiarem tylko wymień na nowy.

8

(29 odpowiedzi, napisanych Sprzęt - 8bit)

1... Zimne luty -> lupa, lutownica, odsysacz, topnik, nowa cyna LT60 (z ołowiem)

2... Mikro pęknięcia ścieżek -> wyjmij PCB z ekranów, odpal, zapuść test, w trakcie testu delikatnie powoli wyginaj płytę.

3... Kondensatory

4... Dogorywa FREEDIE

9

(220 odpowiedzi, napisanych Fabryka - 8bit)

Upsss

Cena ubiła marzenia o stacji do Atarynki.
Pozostaje Sio2SD.

ps. Czy rzeczywiście nie da rady zrobić w przystępnej cenie stacji do małego Atari?

10

(220 odpowiedzi, napisanych Fabryka - 8bit)

1. marpla
2. pancio (720)
3. perinoid
4. Pablozp
5. dez3
6. hsimpson
7. maly_swd
8. Renton
9. ZuluGula - 720 bez napędu
10. GRooBY
11. mgr inż. Rafał
12 RTG - bez napędu (w zależności od ceny - 2szt.) 
13. wiadomo kto smile
14. Paptak
15. Barman - 720 bez napędu

Na płytach różnych wersji Atari ST - nie.

12

(4 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

To ja łyknę LG L193ST