Sprzęt diagnostyczny
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).
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.
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).
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ł . 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.
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).
Do praktycznych zastosowań jako wsparcie diagnostyczne należy moduł trochę podrasować. Po pierwsze złącze warto dostosować do bardziej elastycznego zastosowania.
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).
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 ma jak dobra diagnostyka
Nie ma jak dobra diagnostyka
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
Re: Nie ma jak dobra diagnostyka
gaweł pisze:Do praktycznych zastosowań jako wsparcie diagnostyczne należy moduł trochę podrasować.
Ładnie świeci to narzędzie.
"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
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: Nie ma jak dobra diagnostyka
Zegar pisze:Ładnie świeci to narzędzie.
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ć).
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.
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
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości