problem z 80c552

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Yery
-
Posty: 13
Rejestracja: 28 paź 2006, 17:46
Lokalizacja: Łódź
Kontakt:

Post autor: Yery » 27 lut 2007, 22:48

Dorwałem oscyloskop i posprawdzałem sygnały na wszystkich liniach okazało się że adresowe i sterowania są ok, wychodzące z gala w tym S0 też ok, ale popatrzcie co się dzieje na liniach danych: http://img411.imageshack.us/my.php?image=zrzutyr6.jpg Pojawiają się jakieś stany nieustalone.
tasza pisze: S0...S3 to oryginalnie do czego służyły? do wycinania z mapy pamięci fragmentów na I/O...?
Oryginalnie to wykorzystywaliśmy tylko S0 do sterowania LCD bo sygnały S1,S2 i S3 wstawione są w przestrzeń adresową:
S1 - FA00h do FBFFh
S2 - FC00h do FDFFh
S3 - FE00h do FFFFh bez udziału sygnałów sterujących ( nie tak jak S0). Jedynka pojawia się na nich po zatrzaśnięciu adresu z tego przedziału. Więc jeśli w przestrzeni tej znajdowała się jakaś wieksza pamięć RAM (a tak robiliśmy) to nie można było z nich korzstać bo probując uzyskać jedynką na nich automatycznie zapisuje się coś do pamięci RAM z tego zakresu adresów. Można było z nich korzystać jedynie wtedy gdy pamięc RAM nie sięgała adresu FA00h. Wówczas w połączeniu z sygnałami sterującymi WR RD PSEN mogły rozszerzać system o dodatkowe porty bądź wyświetlacze LED itp.
Jeśli chodzi o sygnał S0 z GALa to w tym przykładzie który przedstawiła Tasza faktycznie sterowanie jest zboczem narastającym a u mnie wychodzi na to ze jest opadającym hmm...

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 28 lut 2007, 0:01

Yery pisze:Dorwałem oscyloskop i posprawdzałem sygnały na wszystkich liniach okazało się że adresowe i sterowania są ok, wychodzące z gala w tym S0 też ok, ale popatrzcie co się dzieje na liniach danych: http://img411.imageshack.us/my.php?image=zrzutyr6.jpg Pojawiają się jakieś stany nieustalone.
Nie znaczy to, że jest powód do niepokoju. Gdybyś na ten przebieg nałożył sygnały wyboru, to wtedy można dopiero coś miemać. Raczej należy się spodziewać, że w momentach aktywacji pamięci stan na szynie danych jest właściwy. Poza tymi momentami może dziać się wszystko, szczególnie w sytuacji, gdzy wyjścia P0 należy traktować jako wyjścia z otwartym kolektorem.
Yery pisze:Jeśli chodzi o sygnał S0 z GALa to w tym przykładzie który przedstawiła Tasza faktycznie sterowanie jest zboczem narastającym a u mnie wychodzi na to ze jest opadającym hmm...
Yery na S0 ma być tak: w stanie pasywnym (gdy nie używasz modułu LCD) ma być 0, w stanie aktywnym (smarowanie po ekranie) to na E mają być 1-dynkowe impulsy.
tasza pisze:Gaweł - czy S0 nie powinien być czasem zanegowany?
Nataszo, mnie róznież zastanowiło to równanie dla sygnału S0, ale Yery "gwarantuje głową" ze układ GAL'a jest dobry (realizuje właściwe funkcje). W tym równaniu zastanawiające jest znaczenie symbolu /RD (oraz /WR). Czy jest to negacja sygnału RD (WR) a równanie jest formalnym zapisem w jakimś języku, czy jest to niejako ilustracja sposobu działania układu GAL, gdzie /RD jest zwyczajowo przyjętym symbolem wyprowadzenia (na oznaczenie ujemnej logiki). Właściwie to sprowadza się do uwagi napisanej wyżej: czy S0 w stanie pasywnym jest zerem?

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 28 lut 2007, 5:22

gaweł pisze:Nie znaczy to, że jest powód do niepokoju
Heh...no niekoniecznie. Widziałam raz taki obrazek, to była szyna danych systemu
z Z80, nie dość że CPU było mocno dociążone, to jeszcze niewłaściwie zapięta
pamięć 6117 ( tak, tak - 6117 - 2kB koszmarek) generowała zwarcia, wcinając się
na szynę ze swoimi danymi....
Coś generuje H, coś inne L, razem...widać. Ale miejmy nadzieję, że się teraz mylę.
gaweł pisze:Nataszo, mnie róznież zastanowiło to równanie dla sygnału S0, ale Yery "gwarantuje głową" ze układ GAL'a jest dobry (realizuje właściwe funkcje).
A co Wam zależy zanegować tę linię i sprawdzić? Przecież to chwila moment,
na ćwiartce 7400 można negator zrobić, prawda?

:arrow: Yery
Czy moższ załączyć do posta plik źródlowy dla GAL-a (info o author/company wytnij...)

pa,
Natasza

Yery
-
Posty: 13
Rejestracja: 28 paź 2006, 17:46
Lokalizacja: Łódź
Kontakt:

Post autor: Yery » 28 lut 2007, 20:26

S0 w stanie pasywnym jest zerem, https://elportal.pl/pdf/k09/24_07.pdf popatrzcie na cykl zapisu danych do modulu LCD (następuje wraz z opadającym zboczem sygnalu enable) a z mojego rownania wynika ze w momencie zatrzaśniecia adresu LCD na wyjsciu S0 pojawia sie jedynka a gdy procek wystawia sygnal aktywny (zero) na ktorekolwiek z wyjsc WR lub RD na S0 pojawia sie zbocze opadajace zapisujac tym samym dane do LCD, przynajmniej tak mi sie wydaje, ale... z drugiej strony wziawszy pod uwage to co mowi gaweł ze moze byc tak ze /WR i /RD nie sa negowane tylko jest to zwyczajowa nazwa wejsc gala rozpatrując wtedy po pojawieniu sie zera na tych sygnałach S0 wskoczy na jedynkę czyli odwrotnie niż pisałem na początku i patrząc teraz na plik źródłowy gala to chyba tak właśnie będzie wiec wiem ze nic nie wiem :) a oto plik:
>;---------------------------------- PIN Declarations ---------------
>PIN 1 A15 ;INPUT
>PIN 2 A14 ;INPUT
>PIN 3 A13 ;INPUT
>PIN 4 A12 ;INPUT
>PIN 5 A11 ;INPUT
>PIN 6 A10 ;INPUT
>PIN 7 A9 ;INPUT
>PIN 8 /RD ;INPUT
>PIN 9 /WR ;INPUT
>PIN 10 GND ;
>PIN 11 /PSEN ;INPUT
>PIN 12 S3 COMBINATORIAL ;OUTPUT
>PIN 13 S2 COMBINATORIAL ;OUTPUT
>PIN 14 S1 COMBINATORIAL ;OUTPUT
>PIN 15 S0 COMBINATORIAL ;OUTPUT
>PIN 16 /OEROM COMBINATORIAL ;OUTPUT
>PIN 17 /CSRAM1 COMBINATORIAL ;OUTPUT
>PIN 18 /OERAM COMBINATORIAL ;OUTPUT
>PIN 19 /CSRAM2 COMBINATORIAL ;OUTPUT
>PIN 20 VCC ;
>
>;----------------------------------- Boolean Equation Segment ------
>EQUATIONS
>
>/OEROM = /( PSEN * /A15 )
>
>/CSRAM1 = A15
>
>/CSRAM2 = / (A15 * /(A15 * A14 * A13 * A12 * A11))
>
>/OERAM = /( (RD * /A15) + ((RD+PSEN) * A15) )
>
>S0 = ( /(/RD * /WR) * A15 * A14 * A13 * A12 * A11 * /A10 * /A9)
>
>S1 = /( A15 * A14 * A13 * A12 * A11 * /A10 * A9 )
>
>S2 = /( A15 * A14 * A13 * A12 * A11 * A10 * /A9 )
>
>S3 = /( A15 * A14 * A13 * A12 * A11 * A10 * A9 )
>
>;----------------------------------- Simulation Segment ------------
>SIMULATION
>
>TRACE_ON A15 A14 A13 A12 A11 A10 A9 /PSEN /OEROM /WR /RD /CSRAM1 /CSRAM2
>/OERAM S0 S1 S2 S3
>
>SETF /WR /RD /PSEN /A15 /A14 /A13 /A12 /A11 /A10 /A9
>
>SETF /WR
>SETF WR
>SETF /WR
>
>SETF /RD
>SETF RD
>SETF /RD
>
>SETF /PSEN
>SETF PSEN
>SETF /PSEN
>
>SETF /A15
>SETF WR
>SETF /WR
>SETF /WR
>
>SETF A15
>SETF WR
>SETF /WR
>SETF /WR
>
>SETF PSEN
>SETF /PSEN
>
>SETF A15
>SETF RD
>SETF /RD
>SETF /RD
>
>SETF /A15
>SETF RD
>SETF /RD
>SETF /RD
>
>SETF A15 A14 A13 A12 A11
>SETF RD
>SETF /RD
>SETF PSEN
>SETF /PSEN
>SETF WR
>SETF /WR
>
>SETF /A10 A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>SETF /A15 /A10 /A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>
>SETF A15 /A10 /A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>
>SETF A10 /A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>SETF A10 /A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>SETF A10 A9
>SETF WR
>SETF /WR
>SETF RD
>SETF /RD
>
>
>TRACE_OFF
>
>;-------------------------------------------------------------------
>
>

[ Dodano: 2007-02-28, 20:53 ]
zostawiłbym tego gala a uczepiłbym się bardziej tej magistrali danych dołaczam kolejny zrzut jednej z linii magistrali danych (D0) w odniesieniu do sygnałów /CE (/OE) pamięci AT29C256, wszystkie inne pamieci są wyjęte i odczepiony wyswietlacz LCD. http://img107.imageshack.us/my.php?image=zrzut2qz5.jpg

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 01 mar 2007, 10:19

Coś jest tam nie bardzo...czemu niektóre 'jedynki' są jakieś takie niedorobione?
to wynik podciągnięcia do Vcc?

W załącznikach oscylogramy dla linii D0 i /OE kostki EPROM, procesor SAB80C535 /12MHz/,
na szynie siedzi jeszcze RAM 62256, szyna danych i adresowa podciągnięte do Vcc via drabinki 33K
Jak widać przebiegi są niezakłócone.

[ Dodano: 2007-03-01, 10:49 ]
a może jeszcze inny test - architektura 'po Bożemu'
wyjm z podstawki GAL-a,
wyjm oba RAM-y,
do kostki 27256 wgraj prosty programik migający wszystkimi bitami jakiegoś portu,
zewrzyj drucikiem piny 16 i 11 w podstawce po GAL-u (to zepnie bezpośrednio /OE/CE z /PSEN)
Jeżeli procesor, latch '573 i pamięć EPROM są sprawne - układ MUSI działać stabilnie, no nie ma inaczej.
Zworka J9 oczywiście na masę ( /EA = L )

Pytanko jeszcze: masz może inny procesor na wymianę? Najlepiej z innej serii produkcyjnej...

pozdrawiam,
Natasza
Załączniki
535_IMG_1965.JPG
535_IMG_1963.JPG

Yery
-
Posty: 13
Rejestracja: 28 paź 2006, 17:46
Lokalizacja: Łódź
Kontakt:

Post autor: Yery » 01 mar 2007, 15:48

wymienialem juz procesor jest tak samo nie wiem skąd sie biorą te "ani zera" "ani jedynki" i to jest wlaśnie moj problem , poza tym Taszo robiłem takie testy bez gala z samym epromem zanim zwróciłem się do was o pomoc, może po prostu musze zrobić nową płytkę bo juz nie wiem co może być

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 01 mar 2007, 16:09

Yery pisze:poza tym Taszo robiłem takie testy bez gala z samym epromem zanim zwróciłem się do was o pomoc, może po prostu musze zrobić nową płytkę bo juz nie wiem co może być
Oj...
ja po prostu próbuję coś wymyśleć, stąd te wszystkie pomysły na sprawdzenia
różnych wariantów...

Jakiej wielkości jest Twoja płytka? pytam w kontekście długości ścieżek magistral.
Bawiłam się kiedyś pakietem ale z '537 - format podwójnej eurokarty, procesor
był praktycznie na froncie, więc magistrale miały tak ponad 20 cm wzdłuż laminatu...
Ale to był przemysłowy moduł automatyki, zupełnie profesjonalnie wykonany.

Nowa płytka to sporo pracy... no i dopóki nie wiesz co jest przyczyną to ryzykujesz,
że nowa wytnie Ci ten sam numer.

Hmm, a może sprawdzić jeszcze ścieżka po ścieżce czujnikiem zwarć czy wszystko jest
naprawdę w porządku (na okazję mikrozwarć / mikropęknięć)...
pewnie też to robiłeś, ale jednak o tym piszę...
Ale tak metodycznie, na sztuki wszystkie połączenia...

[ Dodano: 2007-03-01, 16:13 ]
A jeżeli można oglądnąć....wrzuciłbyś zdjątko tej płytki?

pozdrawiam,
Natasza

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 01 mar 2007, 16:27

Yery pisze:wymienialem juz procesor jest tak samo nie wiem skąd sie biorą te "ani zera" "ani jedynki" i to jest wlaśnie moj problem , poza tym Taszo robiłem takie testy bez gala z samym epromem zanim zwróciłem się do was o pomoc, może po prostu musze zrobić nową płytkę bo juz nie wiem co może być
Weź ze strony tej program do testów zewnętrznej pamięci i podaj jakie są wyniki jego pracy. Program będzie wymagał modyfikacji (musisz podać położenie zew. RAM w przestrzeni).

Dar.El
-
Posty: 65
Rejestracja: 10 lut 2007, 20:18
Lokalizacja: Warszawa

Post autor: Dar.El » 01 mar 2007, 16:28

Witam
Mało który wyświetlacz LCD wyrobi się na magistrali przy 12MHz, może twój LCD właśnie jest za wolny. Wymień kwarc na 6MHz i zobacz czy będzie działać.

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 01 mar 2007, 16:28

Można jeszcze sprawdzić, jak moduł zachowa się przy taktowaniu mniejszym kwarcem,
8MHz...może 4MHz...
No i na koniec, ale już nie wiem czy to ma jakiś sens...wyjąć procesor z podstawki,
do wyprowadzeń odpowiednio podlutować socket dip40 i wstawić zwykły 8051...?
Nie wiem już... :sad:

Yery
-
Posty: 13
Rejestracja: 28 paź 2006, 17:46
Lokalizacja: Łódź
Kontakt:

Post autor: Yery » 01 mar 2007, 22:14

pierwszym i podstawowym błędem jaki znalazłem to fakt iż wyjście GALa - OEROM jest negacją sygnału PSEN procesora i należy to odwrócić. Zrobiłem to i zniknął problem stanów nieustalonych na magistrali danych, wyświetlacz zaczął pokazywać to co chcę ale czasami jeszcze to gubi posiedze jeszcze nad tym, dziwne że podłączałem wcześniej tak jak sugerowała Tasza procek bezpośrednio z pamięcią i nie działało (może gdzieś sie pomyliłem :P) w każdym bądź razie dziękuję za poświęcony czas i uwagę szczególnie Taszy i Gawłowi. Jeśli chodzi o program Gawła do testowania pamięci - jest bardzo fajny, ale używam zupełnie innego kompilatora asemblera (napisany przez mojego promotora na studiach) i nie przyjmuje paru komend, mam więc troche do przerobienia ale napewno z niego skorzystam testując tą pamieć ram którą posiadam.
aha Taszo zgodnie z twoją sugestią odwróciłem ten sygnał enable na wyświetlaczu tak dla sprawdzenia i jednak okazało się że musi być nieodwrócony

Pozdrawiam

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 01 mar 2007, 22:55

Yery pisze:Jeśli chodzi o program Gawła do testowania pamięci - jest bardzo fajny, ale używam zupełnie innego kompilatora asemblera (napisany przez mojego promotora na studiach) i nie przyjmuje paru komend, mam więc troche do przerobienia ale napewno z niego skorzystam testując tą pamieć ram którą posiadam.
To może zamiast przerabiania ściągnij sobie ze strony ATMEL'a kompilator, który to strawi:
http://www.atmel.com/dyn/products/tools ... ily_id=604
i odszukaj coś co nazywa się MLASM51.EXE (jest prawie pod koniec).

Yery
-
Posty: 13
Rejestracja: 28 paź 2006, 17:46
Lokalizacja: Łódź
Kontakt:

Post autor: Yery » 03 kwie 2007, 17:12

jeszcze jedna sprawa wyjscie EW poprzez jumper J8 bylo podłączone do masy więc włączony był hardwareowo watchdog, nie uwzględniałem tego w programie i nie ładowałem timera, procek się restartował i wyświetlacz ciągle migał wyświetlając pierwszy napis, doszedłem do tego dopiero po znalezieniu porządnego pdfa bo te starnardowe do 80c552 nie maja nic ciekawego

ODPOWIEDZ