Nie ma jak dobra diagnostyka

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
gaweł
Geek
Geek
Posty: 1203
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Nie ma jak dobra diagnostyka

Postautor: gaweł » niedziela 04 gru 2022, 19:03

Sprzęt diagnostyczny

SD000.JPG


Zaprzyjaźniony człowiek podrzucił mi bebechy od takiego jednego dosyć leciwego sprzętu, który zawierał w sobie całkiem fajne zabawki nawet jak na obecne czasy (wyświetlacz VFD) oraz płytę z prockiem 8035 (już trochę mniej fajna zabawka mające znaczenie jedynie historyczne).
SD001.JPG

Jest to wersja ROMLESS od procka 8048. Historycznie biorąc to protoplasta znanego procka 8051. Mając takie zabawki oraz możliwość tworzenia softu dla tego procka, o czym ostatnio przypomniał mi @Zegar (strona sbasm), gdzie jest dostępne narzędzie do tworzenia programów.
SD002.png

Dodając do tego jeszcze dostęp do właściwej biblioteki (jest książka dotycząca tego proca pod <tym adresem>) wręcz grzechem będzie nieskorzystanie z możliwości poznania minionych detali, które swego czasu były na topie. Nawet jak się uprzeć, to można wygooglać symulator tego proca, bo był taki wynalazek, który nazywał się AVSIM48 (ze znanej rodziny symulatorów).
SD003.JPG

Rysuje się tu jedynie pewien problem, związany z diagnostyką owego pacjenta. Program można napisać, skompilować i włożyć do eproma, puścić i … nie działa zgodnie z naszym planem. Mnie się jeszcze nie zdarzyło, by wszystko poszło bez bólu za pierwszym kopem. Nie działa i nie wiadomo dlaczego. Można jedynie zapytać procka co mu nie odpowiada, ale jeszcze mi się nie zdarzyło by odpowiedział :D . Wtedy jedynym rozwiązaniem jest odpowiedni, nawet najprostszy, sprzęt diagnostyczny.
Wymyśliłem sobie, że do tego będzie się nadawać transmisja szeregowa, chociaż sam proc nie posiada możliwości sprzętowej obsługi transmisji szeregowej. Programowa realizacja takiego wariantu raczej nie jest zbyt skomplikowana.
SD004.JPG

I tu właśnie wymyśliłem sobie zastosowanie gotowego modułu pozyskanego od czegoś (nawet nie wiem od czego) co ma w sobie procka zarządzającego całością. Sprzęcior ten ma kanał szeregowy w RS232 i odbierane znaki wyświetla na ekranie. Nawet działają znaki kontrolne, wysłanie znaku CR powoduje przejście na początek wiersza, wysłanie znaku LF powoduje przejście do nowego wiersza (jest elementarne formatowanie danych). Zapewne ma jeszcze kilka znaków sterujących, ale nie wiadomo jakie są. Nie wiadomo czy jest jakaś dokumentacja do modułu, więc to co wiadomo jest pozyskane metodą walki. Parametry transmisji szeregowej to 9600 bps w trybie N81 (najprostszy wariant transmisji).
SD005.JPG

Do praktycznych zastosowań jako wsparcie diagnostyczne należy moduł trochę podrasować. Po pierwsze złącze warto dostosować do bardziej elastycznego zastosowania.
SD006.JPG

Również konieczne staje się usunięcie układu interfejsu RS232 (układ MAX232), gdyż będzie jedynie przeszkadzał. Układ należy wylutować i zrobić zworkę by sygnał ze złącza (kabelka) dotarł do użytego procka (AT89C4051).
SD007.JPG

Teraz pozostaje zasilić się z badanego układu (GND – czerwony kabelek, VCC – żółty kabelek) i podłączyć się z jakiegokolwiek pinu portu do transmisji danych RXD – czarny kabelek, TXD – kabelek niebieski nie jest wykorzystany).
Powstaje elementarne środowisko do realizacji badań i eksperymentów.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Zegar
User
User
Posty: 264
Rejestracja: wtorek 02 lip 2019, 14:42

Re: Nie ma jak dobra diagnostyka

Postautor: Zegar » poniedziałek 05 gru 2022, 15:24

gaweł pisze:Do praktycznych zastosowań jako wsparcie diagnostyczne należy moduł trochę podrasować.

Ładnie świeci to narzędzie. :D
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1203
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Nie ma jak dobra diagnostyka

Postautor: gaweł » wtorek 06 gru 2022, 16:14

Zegar pisze:Ładnie świeci to narzędzie. :D


Zgadzam się, świeci ładnym światełkiem.




Nieoczekiwana potrzeba

Nie zdążyłem się przyłożyć do badań nad prockiem 8035, gdy planowany do użycia sprzęt diagnostyczny okazał się przydatny i zaoszczędził sporo czasu. Swego czasu zrobiłem taki prosty układ prockowy do sterowania silnikiem prądu stałego, gdzie był zastosowany mostek H. Zbudowany jest jeden egzemplarz, więc technologia wykonania ma małe znaczenie. Istotne jest by był i działał. Silniczek sobie kręcił tam i z powrotem oraz poruszał się w pewnym zakresie wyznaczonym przez krańcówki. W sumie żadna filozofia. Tak sobie działał... aż przestał. Nie reagował na żadne bodźce (miał kilka przycisków do określania co ma zrobić).
SD101.JPG

Procek ATMEGA32 ma kanał szeregowy, który w tym konkretnym przypadku nie był używany. By wiedzieć co się dzieje niezbędne jest jakiekolwiek sprzężenie zwrotne. Nie chciało mi się dokładać modułu LCD, bo to dużo drutów, ale wspomniany wyżej, to tylko 3 druciki (zasilanie plus sygnał). Wstawiłem w program kilka jednoliterowych wydruczków (by dłuższy tekst mi nie zwiał z ekranu) i odpaliłem.
SD102.JPG

I wszystko stało się jasne, program się spętlił na samym początku.

Kod: Zaznacz cały

int main ( void )
{
  HardwareInit ( ) ;
  EnvirInit ( ) ;
  SoftwareInit ( ) ;
  sei ( ) ;
SendSerial ( '!' ) ;
  ThrottleIdleState ( ) ;
  for ( ; ; )
  {
( . . . )
  } /* for */ ;
  return ( 0 ) ;
} /* main */

Jest wyświetlony znak '!' (znaczy zaczął), wywołał funkcję (jest znaczek 'I'), wszedł w pętlę (jest znaczek 'J') i tam już ugrzązł (nie ma literki 'L').

Kod: Zaznacz cały

static void ThrottleIdleState ( void )
{
  /*-------------------------------------------------------------------------*/
SendSerial ( 'I' ) ;
  if ( ! BackwardLimitReached ( ) )
  {
SendSerial ( 'J' ) ;
    ControlPort |= 1 << BackwardRun ;
    ControlPort &= ~ ( 1 << ForwardRun ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    ControlPort &= ~ ( 1 << EnableRun ) ;
    for ( ; ; )
    {
      if ( BackwardLimitReached ( ) )
      {
SendSerial ( 'K' ) ;
        StopMotor ( ) ;
        break ;
      } /* if */ ;
    } /* for */ ;
  } /* if */ ;
SendSerial ( 'L' ) ;
  WorkState = BelowState ;
} /* ThrottleIdleState */

Wysterował mostek H do pracy, silnik nie ruszył. Przyjrzałem się mostkowi i namierzyłam problem z tranzystorem. Lutownica... poprawka... test... działa. Zajęło mi to kwadrans.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość