Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Budowa mikrokontrolera na bazie TSC80C31

darku686 09 Jun 2016 19:30 1149 14
Computer Controls
  • #1
    darku686
    Level 2  
    Mam prośbe do tych specjalistow, ktorzy znaja sie na budowie mikrokontrolerow 8 bitowych. Wsród starych śmieci znalazłem uniwersalnego pilota z układem TSC80C31 i sprawdziłem, że jest to 8 bitowy mikrokontroler w wersji bez wewnętrznej pamięci ROM i RAM. Faktycznie, na płytce jest pamięć zewnętrzna ATMEL 70724C01 i dość duża pamięć programu AT27BV010. Ta pamięć to oczywiście 8-bitowy EPROM zaprogramowany przez producenta i jedynym sposobem wykorzystania procesorka jest wymiana tej kości na EEPROM. Ciekawostką jest rozszerzenie pola adresowego przez 8 bitowy programowalny zatrzask, ktory ustala dodatkowe (początkowe) bity adresu. Oczywiscie wymagało to zapewne napisania programu do tego pilota w kodzie procesora. Bo program wybiera dane z 4 segmentow 32kB. Chcę wykorzystać ten układ do budowy mikrokontrolera i wymaga to wymiany układu AT27BV010 - pamięci programu. Ten procesorek zaczyna czytanie programu od adresu 00000 w pamieci. Prosta wymiana EPROM na EEPROM nie jest możliwa ponieważ 8 bitowych EEPROMOW w obudowach 32 nóżkowych już nie ma. Więc trzeba zastosować jakiegoś "pośrednika", który adresy 8 bitowe wysyłane przez TSC80C31 zamieni na adresy szeregowe i wyśle żądanie do pamięci szeregowej ( które są obecnie łatwo dostępne i także są łatwo programowalne), oraz szeregową odpowiedż zamieni na 8 bitów na nóżki TSC80C31. Oczywiści spowolni to znacząco działanie procesorka, ale nie to jest najważniejsze. Przy zegarze 16MHz i tak w większości zastosowań będzie szybki. Nie mam pomysłu jak się za to zabrać. Bo nie mam doświadczenia. Może ktoś miał podobny problem i znalazł sensowne rozwiązanie. Oczywiście może okazać się, że dodatkowe układy do przetwarzania adresu i pamięci będą droższe od zakupu nowego mikrokontrolera (ARDUINO np.). Ale zapytać warto, biorąc pod uwagę, że właśnie wyrzuciłem kilka procesorków MAB8461 z których nic zrobić się nie da. Będę wdzięczny także za podpowiedź, gdzie takiego rozwiązania szukać.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Computer Controls
  • #2
    excray
    Level 40  
    Zupełnie bezsensowny projekt. Karkołomny i bezużyteczny. Wiedza zdobyta nic nie warta. Chcesz poznać te procesory to kup sobie jakiegoś 89S... i programuj go jak człowiek cywilizowany. Ja naukę zaczynałem właśnie od takich systemów jak ten który opisujesz i uwierz mi, że to jest już zamknięta karta której lepiej nawet nie otwierać.
  • #3
    jarek_lnx
    Level 43  
    Może nie ma to wiele sensu, ale uruchomić się da i nie wymaga aż takich kombinacji.

    Jeśli nie ma EEPROM-ów 32 nóżkowych to są 28 nóżkowe np 28C64 pinowo (prawie) kompatybilne - sprawdź pamięci RAM/EPROM z równoległe miały bardzo podobny rozstaw wyprowadzeń nawet gdy obudowy różniły się wielkością o 2 lub 4 nóżki, często mniejszą mozna było wstawić w podstawkę większej albo dolutować "na barana" EEPROM na RAM-ie dodając tylko oddzielny przewód do CE OE.
  • #4
    darku686
    Level 2  
    Bardzo dziękuję za opdpowiedź. Na tej płytce nie ma podstawki pod EPROM. On jest wlutowany. Więc i tak jestem skazany na poważne przeróbki. Kości EEPROM 8 bitowe faktycznie jeszcze są, ale są nieproporcjonalnie drogie w stosunku do pamięci szeregowych ( tak około 50 razy drożej...) . Powstaje także problem z zaprogramowaniem EEPROM. Dla 8 bitowego potrzebuję dość skomplikowanego programatora. Szeregowe pamięci mogę programować prawie wprost z komputera przez RS. Są bardzo proste schematy i programy. A jak już się jakoś do tego procesora włamię, to spróbuje dołożyć USB i napisać jakiś prosciutki system operacyjny który pozwoli w miarę szybko przenosić programiki z kompa na mikrokontroler. Ale faktycznie to może być nieopłacalne. Ludzie, którzy na codzień mają kontakt z mikroprocesorami nie uważają ich za coś nadzwyczajnego. Ja na codzień zajmuję się żarówkami. Więc próba uruchomienia tego procesorka to jest dla mnie wyzwaniem. Jasne, że dużo prościej kupić ARDUINO, bo wszystko od razu jest i można gotowe szkice wgrywać. Tyle tylko, że można to zrobić bez wiedzy czym jest 8-bitowy rejestr i jak "technicznie" przerobić 8 bitów równoloegłych na szeregowe. Konwertey w obie strony są dostępne w cenie ok 3zł/szt. Więc potrzebna jest tylko wiedza, jak to połączyć.
  • Computer Controls
  • #5
    idepopizze
    Level 33  
    Wiedza w tym zakresie jest taka, że to co próbujesz tu zmajstrować jest bez sensu.
    Jak chcesz się bawić w procesory z rodziny 51 (tak jak ten TSC80C31) to kup sobie AT89S51 atmela (w wersjach smd bo taką masz w pilocie - są w TME kosztuje taki 5.49 zł) z szeregowym układem programowania który przez 4 rezystory podepniesz do portu LPT i zaprogramujesz nim bez problemu tego procka. 4kB Flasha które ma powinno wystarczyć do startu z zabawą w te układy.
  • #6
    komatssu
    Level 29  
    Możesz też wydłubać równoległą pamięć flash ze starej płyty głównej PC (bios) i użyć jej jako pamięci programu dla tego 8031.
    O ile posiadasz odpowiedni programator...
  • #7
    idepopizze
    Level 33  
    @komatssu
    Zorganizowanie sobie równoległego programatora do tych pamięci jest dość bezsensownym i nieopłacalnym rozwiązaniem przy obecnych opcjach.
  • #8
    jarek_lnx
    Level 43  
    Quote:
    Na tej płytce nie ma podstawki pod EPROM. On jest wlutowany.

    Wlutowany EPROM nie jest problemem wystarczy odłączyć /OE maożna na niego nalutować EEPROM 28Cxx

    darku686 wrote:
    Tyle tylko, że można to zrobić bez wiedzy czym jest 8-bitowy rejestr i jak "technicznie" przerobić 8 bitów równoloegłych na szeregowe. Konwertey w obie strony są dostępne w cenie ok 3zł/szt. Więc potrzebna jest tylko wiedza, jak to połączyć.
    Nie jak połączyć, a jak zaprojektować.

    Zobacz przebiegi wystawiane przez 8051 podczas pobierania słów z pamięci programu (slajd 35):
    Link

    Później spójrz do dokumentacji 25AA512 na Figure 2-1 read sequence

    Potem spróbuj jedno z drugim połączyć - po opadającym zboczu sygnału ALE miał byś cztery cykle zegarowe 8051 na odczytanie pamięcie EEPROM w tym czasie trzeba by wygenerować 32 impulsy zegarowe dla pamięci szeregowo wysłać instrukcję i adres oraz odczytać dane, kilka rejestrów przesuwających trochę bramek, przerzutników... nie chciałeś arduino to będziesz miał układ bardziej skomplikowany od arduino tylko po to żeby pamięć szeregową podłączyć zamiast równoległej.
  • #9
    idepopizze
    Level 33  
    @darku686

    Ale konkretnie co chcesz z tego zmajstrować to ktoś tu doradzi odpowiednie rozwiązanie.
  • #10
    darku686
    Level 2  
    W porządku. Rozumiem, ze jest to zadanie bardzo trudne technicznie do rozwiązania. Bo chodzi o czasy w jakich procesor wysyła żądania do pamięci i czasy sensownych odpowiedzi. Myślałem, że jest to prostsze, bo samo konwertowanie 8 bitów na impulsy szeregowe robi 1 prosty układ scalony. Obawiałem się raczej, że pamięci szeregowe potrzebują jakiegoś szeregowego kodu, który musi poprzedzać każdą sekwencje adresu i tu mógłby być problem. Chociaż można przecież ustawić 1 konwerter na stałe "wejścia" i wysyłać z niego ten kod. Pisałem, że nie mam doświadczenia i liczyłem, że ktoś wcześniej próbował i podpowie, jak się do tego zabrać. Mam plan B polegający na wykorzystaniu pamięci RAM 128 KB (KM6264) który pochodzi z czasów tego procesorka. Ktoś już to robił i jedyny problem pojawił się z tym, że pamięć sie resotowała. Nie oczekiwałem, że ktoś przedstawi gotowy schemat rozwiązania, bo wiem, że to bardzo pracochłonne. Raczej liczyłem na link do jakiegoś opisu, jak się podobne rzeczy robi. Bardzo dziękuję, ża wszystkie odpowiedzi. Wyjaśniam, że nie zamierzam budować żadnego super robota. Na początek chciałem sprawdzić parę starych układów scalonych do sterowania diodami itp. Tego się bez mikroprocesora nie zrobi, bo one wszystkie są przystosowane wyłącznie do pracy z sygnałami sterującymi. Miałem nadzieję też jakoś wykorzystać stary wyświeltacz matrycowy 7x5 x4. W bardzo dalekich planach myślę o mikroprocesorowym sterowniku do lodówki ( inaczej taki super termostat) Ponieważ tradycyjne termostaty nic nie wiedzą o temperaturze otoczenia i temperaturze chłodnicy. A nawet nowoczesne lodówki z komuteryzacją są "na bakier" i mają conajwyżej cyfrowy miernik temperatury głównie po to, żeby ją na drzwiczkach wyświetlać. Prawidłową pracę i oszczędność energi może zapewnić tylko sterownik mikroprocesorowy, który "nauczy" się parametrów lodówki i będzie wyprzedzał zmiany otoczenia. Ale to też jest raczej zabawa ze starą lodówką, która może odmówić pracy zanim zbuduję to cacko. Obecnie ta lodówka działa z prostm sterownikiem włącz-wyłącz z ustawianymi czasami 4-20 minut. I to o dziwo działa lepiej, niż termostat, który zamarzał.
  • #11
    idepopizze
    Level 33  
    @darku686
    Skoro chcesz opisu co i jak to nie ma sprawy. Robiłem takie coś z 20 lat temu.
    Procesor 8051, jakiś zatrzask 573 i do tego równoległy RAM taki jak piszesz robiący za EPROM. Na RAMie zamontowana bateryjka i stabilizatorek 7805 plus jakaś dioda do zasilacza.

    Programowało się to z ZX Spectrum (równolegle). Program wpisujący napisany w Basic. Żeby było śmiesznie to wsad do 8051 miał błędy ......
    Ogólnie jedna wielka katorga i jak teraz porównasz to do Atmegi programowanej szeregowo z cyfrowymi czujnikami temperatury Dallasa to tego 51 z zewnętrzną pamięcią nawet bym teraz nie dotknął. Żeby było śmiesznie to któreś linie danych miały zwarcie i program po weryfikacji był inny od tego który niby wgrałem. Szkoda nawet gadać o tym bzdurnym komplikowaniu sobie życia. Jeżeli chcesz zacząć zabawę z programowaniem procesorków to nie rzucaj sobie sam kłód pod nogi.
  • #12
    komatssu
    Level 29  
    idepopizze wrote:
    Jeżeli chcesz zacząć zabawę z programowaniem procesorków to nie rzucaj sobie sam kłód pod nogi.

    Dobrze powiedziane, szczególnie że gotowy moduł taki jak np. arduino pro mini kosztuje mniej niż 10zł (czyli tyle co sam mikrokontroler użyty w tym module), a do jego zaprogramowania wystarczy konwerter usb-ttl za 4zł.
    Jeśli nadal upierasz się przy 8031/51, to zainteresuj się układami AT89S51/52, które nie wymagają kłopotliwego programatora równoległego.
  • #13
    darku686
    Level 2  
    Bardzo dziekuje za wszystkie odpowiedzi i podpowiedzi. Poddaje się. Za ok 50 zł można nabyć gotowe Arduino (klon) z portem USB i czytnikiem SDRAM. Więc faktycznie nie ma sznas na sensowne wykorzystanie tej starej kosci. A jeżeli już, to właśnie z wykorzystaniem Arduino jako programatora. Tak będzie najtaniej i najprościej, bo jest wiele gotowych szkiców i projektów rozwiązań typowych. Więc teraz szukam kasy na Arduino.... jeszcze raz dziękuję wszystkim za odpowiedzi.
  • #14
    idepopizze
    Level 33  
    To wcale nie musi być te 50 zł. Zależy od tego co już masz.
    Jeżeli masz port LPT, w szufladzie trochę rezystorów i jakieś kwarce to do zabawy potrzebujesz jedynie procesor plus podstawka 28pinów, żeby go na dzień dobry nie przegrzać. Atmega8 plus podstawka plus mała płytka uniwersalna to na pewno nie będzie 50PLN. Może być i bez kwarcu, ale przy zabawie z fuzbitami można stracić kontakt z Atmegą. Jakiś drobny zasilacz też jest wskazany - ot i wszystko.
  • #15
    excray
    Level 40  
    idepopizze wrote:
    Jeżeli masz port LPT

    Myślę, że przy cenie USBASPa na poziomie 10-15zł (5zł z chin) port LPT powinien zostać pozostawiony w spokoju. W cenie mamy programator USB z możliwością zasilania układu docelowego.