Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Port P0 w mikroprocesorze 8051

Rapero700 07 Maj 2012 21:17 2541 17
  • #1 07 Maj 2012 21:17
    Rapero700
    Poziom 6  

    Czy w mikroprocesorze 8051 może używać portu P0 do załączenia zatzrasku do pamięci ROm i do wyświetlaczy?

    0 17
  • Pomocny post
    #2 07 Maj 2012 21:26
    bobeer
    Poziom 28  

    Dla 8051 bez wbudowanej flash, tylko do współpracy z pamięcią.
    (Być może jest możliwość multipleksowania tego portu między obsługą pamięci, a wysyłaniem danych w innych celach, ale w "normalnych" rozwiązaniach nie spotkałem się z czymś takim)

    0
  • #3 07 Maj 2012 21:34
    Rapero700
    Poziom 6  

    Sprawdz czy w tym przypadku można było wykorzytsać z pamięci ROM zewntrznej i wyświetlaczu przez załaczenie swoich zatrzasków

    0
  • Pomocny post
    #4 07 Maj 2012 22:00
    bobeer
    Poziom 28  

    Wg tego schematu procesor wysyła i odczytuje dane z peryferii używając portów adresu/danych oraz sygnałów odczytu pamięci danych dla adc (rd) oraz zapisu dla wyświetlaczy (wr)(dla odczytu rom używany jest psen). Jeżeli urządzenia będą istniały w przestrzeni adresowej pamięci danych (jak na obrazku), to jak widać można wysyłać do nich dane i je odczytywać.

    0
  • #5 07 Maj 2012 23:02
    Rapero700
    Poziom 6  

    bobeer napisał:
    Wg tego schematu procesor wysyła i odczytuje dane z peryferii używając portów adresu/danych oraz sygnałów odczytu pamięci danych dla adc (rd) oraz zapisu dla wyświetlaczy (wr)(dla odczytu rom używany jest psen). Jeżeli urządzenia będą istniały w przestrzeni adresowej pamięci danych (jak na obrazku), to jak widać można wysyłać do nich dane i je odczytywać.


    Czyli można wykorzystać port P0 do pamięci i wyświetlaczy. Czy jest taka możliwość , że mikroprocesor załącza zatrzask do pamięci i jeden z dwóch zatrzasków do wyświetlacza?

    0
  • Pomocny post
    #6 07 Maj 2012 23:31
    bobeer
    Poziom 28  

    Na pewno można wykorzystać port do pamięci i wyświetlaczy jeżeli wyświetlacz będzie emulował część pamięci ram. W przypadku tego schematu jednak zatrzaski od led są aktywowane sygnałem z portu (wait?) i nie mam pewności czy jest to poprawne rozwiązanie / możliwe zatrzymanie cyklicznej obsługi ram przez procesor na rzecz chwilowego wykorzystania portu 0 do innego celu niż obsługa pamięci. Jeżeli przedstawiony schemat jest sprawdzony w praktyce i działa, to taki manewr jest możliwy, jeśli nie, proponuję zapoznać się z dokładnymi informacjami w nocie katalogowej procesora, lub poczekać na kogoś bardziej kompetentnego w tym temacie, to wszystko co mogę powiedzieć.

    0
  • Pomocny post
    #7 08 Maj 2012 00:59
    alagner
    Poziom 25  

    Coś podobnego miałoby prawo zadziałać, ale przydałoby się nadać tym wyświetlaczom konkretne adresy, np. przez zbudowanie dekodera adresowego na bramkach AND, a tu tego nie widzę.

    0
  • #8 08 Maj 2012 10:34
    Rapero700
    Poziom 6  

    Ja wykorzystuję jako pamięć RAM przetwornik AC. Zatrzaski od wyświetlacza aktywowane są pomnożonym sygnałem Z i WR. Dekodera adresów w moim układzie nie mam. Proszę powiedzieć czy to co zrobiłem teoretycznie będzie działać czy zrobić to na porcie P1 dodająć kolejny zatrzask

    0
  • Pomocny post
    #9 08 Maj 2012 11:13
    JarekC
    Poziom 27  

    Witam,

    Sterowanie wyświetlaczami będzie działać.

    Natomiast musisz zastąpić układ zatrzasku 74HCT574 pomiędzy uP a EPROMEM układem 74HCT573. Gdyż linie adresowe A0-A7 są poprawne dane na opadającym zboczu sygnału ALE.

    Pozdrawiam
    JarekC

    0
  • #10 08 Maj 2012 13:07
    Rapero700
    Poziom 6  

    JarekC napisał:
    Witam,

    Sterowanie wyświetlaczami będzie działać.

    Natomiast musisz zastąpić układ zatrzasku 74HCT574 pomiędzy uP a EPROMEM układem 74HCT573. Gdyż linie adresowe A0-A7 są poprawne dane na opadającym zboczu sygnału ALE.

    Pozdrawiam
    JarekC


    Prosiłbym o wytłumaczenie dlaczego sterowanie wyświetlaczami z Portu P0 będzie działać? Moim zdaniem będzie istniał konflikt, bo mikroprocesor nie może jednocześnie załączać zatrzasku do pamięci i do wyświetlacza. A co do układu 74HCT574 nie różni się od 74HCT573 patrzyłem jak zbudowane są w środku takie układy. Mają identyczną budowę wewnętrzna więc nie rozumiem czemu miałbym go zamieniać.

    Jednak dobrze myślisz jak się pomyliłem tam powinno być 74HCT573 tylko numer pomyliłem, a przy wyświetlaczach tez musi być '573?


    ,m

    0
  • Pomocny post
    #11 08 Maj 2012 14:17
    JarekC
    Poziom 27  

    8051 ma rozdzieloną przestrzeń dla pamięci kodu (EPROM, linia aktywująca PSEN)
    i pamięci danych (RAM, linie aktywujące WR i RD).
    Sygnał WR będzie aktywny tylko gdy zaadresujesz zew. pamięć danych, w czasie
    dostępu do pamięci programu sygnał jest nieaktywny więc nie będzie konfliktu.

    Dla wyświetlaczy muszą pozostać 74HCT574.

    Pozdrawiam
    JarekC

    0
  • #12 08 Maj 2012 15:01
    Rapero700
    Poziom 6  

    JarekC napisał:
    8051 ma rozdzieloną przestrzeń dla pamięci kodu (EPROM, linia aktywująca PSEN)
    i pamięci danych (RAM, linie aktywujące WR i RD).
    Sygnał WR będzie aktywny tylko gdy zaadresujesz zew. pamięć danych, w czasie
    dostępu do pamięci programu sygnał jest nieaktywny więc nie będzie konfliktu.

    Dla wyświetlaczy muszą pozostać 74HCT574.

    Pozdrawiam
    JarekC


    Tylko u mnie rolę zewnętrznej pamięci danych pełni przetwornik AC, który ma wejścia danych DB0 do DB7. Wykorzystywany jest tylko sygnał RD. Tylko u mnie wydaje mi się, że sygnał WR do wyświetlaczy jest wykorzystywany jako normalne wyjście, a nie sygnał zapisu. Bo gdyby pełnił ten pin ta funkcję zatrzask, który określa który segment ma się zapalić nie przepuszczał danych. Bo zdaje mi się, że na WR musi być stan 0 żeby to nastąpiło. A jeśli na jednym wejściu bramki AND jest 0 nigdy na wyjściu nie będzie stanu 1.

    To wiem, że w trakcie dostępu do zewnętrznej pamięci RAM sygnał RD w moim przypadku nie mamy dostępu pamięci ROM przez sygnał PSEN. Ale chyba w tym czasie następuje adresowanie pamięci ROM sygnałem ALE?

    A dla pamięci ROM muszę koniecznie zamienić na '573? Możesz mi wytłumaczyć dlaczego tak jest że do wyświetlaczy '574 a do pamięci '573?

    0
  • Pomocny post
    #13 08 Maj 2012 15:57
    JarekC
    Poziom 27  

    Co do HCT573 i HCT574:

    Pierwszy z układów jest typu "Latch" a drugi typu"Flip-Flop".

    "Latch" oznacza, że dane z wejścia są przekazywane na wyjście przy aktywnympoziomie linii LE ("1" dla 573)
    a są zatrzaskiwanie podczas zmiany ze stanu aktywnego na nieaktywny ( z "1" na "0" dla 573).
    Podczas aktywnego stanu LE dane z wej. są od razu widoczne na wyjściu (układ działa jak bufor).

    "Flip-Flop" oznacza, że przepisane danych z wejścia na wyjście następuje tylko w
    momencie aktywnego zbocza sygnału CP (zbocze narastające dla 574)

    Teraz zobaczmy jak wyglądają przebiegi dla dostępu do zew. pamięci programu (EPROM).

    Port P0 w mikroprocesorze 8051

    Zauważ,że linie A0-A7 na porcie P0 są poprawne dopiero pod koniec sygnału ALE i na jego opadającym zboczu. Gdybyś zastosował HCT574, to zatrzasnąłbyś nie A0-A7 ale stan portu P0.

    Jeżeli chodzi o HCT 574 dla wyświetlaczy to musimy popatrzeć jak wygląda sygnał WR podczas zapisu do zew. pamięci danych.
    Port P0 w mikroprocesorze 8051

    Jak widać dane na porcie P0 ja poprawne zarówno podczas opadającego jak i narastającego zbocza sygnału WR.
    W Twoim projekcie przetwornik i LED są umieszczone w przestrzeni adresowej danych ale przetwornik tylko do odczytu a rejestry 574 tylko do zapisu.

    Pozdrawiam
    JarekC

    0
  • #14 08 Maj 2012 16:54
    Rapero700
    Poziom 6  

    Dzięki za wytłumaczenie. Nie rozumiem jeszcze do końca tego sygnału WR i układu bramkowego jak to działa. Gdy mamy stan 0 na WR to wiadomo następuje zapis przetworzonej przez mikroprocesor danej zmierzonego napięcia i prądu. Mikroprocesor wystawia na port P0 tą daną informująca, która informuje o tym który wyświetlacz załączyć oraz które segmenty zapalić. Tak dzieje się cyklicznie, gdyż jest to wyświetlanie dynamiczne. Układ bramkowy wybiera, które zatrzask/bufor ma przepuścić dane. Następuje to gdy mamy na CP zbocze narastające. Dla przykładu mamy na wyjściach WR i Z stany 1 1. Na wejściu CP zatrzasku pierwszego mamy stan 0 a na drugim stan 1. Gdy wystąpi zapis WR=0 i na Z=0 na wejściu CP pierwszego zatrzasku mamy stan 1 czyli mamy zbocze narastające czyli następuje przepuszczenie danych na wyjście i następuje załączenie wyświetlacza. Następnie mikroprocesor wystawia kolejne dane w tym przypadku o segmentach. WR=0 Z=0 i WR=1 Z=1 i następuje przepuszczenie nowych danych drugiego zatrzasku. Po konwersji BCD na 7seg następuje wyświetlenie odpowiedniej liczby. Czy tak to działa proszę o wytłumaczenie. Bo z tego co napisałeś wcześniej wejście WR nie działa jako normalne wyjście.

    Jeszcze jedno pamięć ROM może być nieaktywna gdy WR jest aktywny ale zatzrask 74HCT574 jest ciągle aktywny tzn port P0 jest wykorzystywany do adresowania pamięci.

    0
  • Pomocny post
    #15 08 Maj 2012 17:28
    JarekC
    Poziom 27  

    Rzeczywiście po dokładniejszej analizie układ nie będzie to działać tak jak początkowo myślałem.

    Aby układ działał trzeba linią WR sterować niezależnie, sekwencja musiałaby być następująca:
    - linia Z="1"
    - dane na P0, (segmenty)
    - linia WR w stan "0"
    - dane na P0, (anody)
    - linia WR w stan "1"
    - dane na P0, (segmenty)
    - linia WR w stan "0"
    ...
    W zasadzie linia Z jest nie potrzebna.

    Ale pojawia się wtedy inny problem port P0 w 8051 nie ma rezystorów Pull-Up.
    I w trybie pracy I/O wyjścia są typu otwarty dren. Więc na P0 nie osiągniesz "1"
    bez zew. rezystorów podciągających do +5V.
    Nie jestem tez pewien jak są wystawiane dane na P0 dla pracy z EA=0.

    Teraz zasadnicze pytanie czy jest to już gotowy układ czy dopiero go projektujesz.
    Jeżeli nowy projekt to układ dla LED zmieniłbym na następujący:

    Port P0 w mikroprocesorze 8051

    Dodatkowo przydałby się jeszcze rezystor i dioda na pinie RESET.

    JarekC

    0
  • #16 08 Maj 2012 17:49
    Rapero700
    Poziom 6  

    Rezystor na pinie Reset nie jest potrzebny bo jest on wewnątrz mikroprocesora gdyż jest to układ CHMOS. Jest to gotowy układ, ale jest to projekt teoretyczny.

    A nie lepiej zdać zatrzaski '573 do wyświetlaczy. Możesz mi wytłumaczyć dlaczego zastosowałeś taki układ bramkowy bo nie rozumiem moim zdaniem moje rozwiązanie jest dobrze.

    mogę to robić na porcie P0 bo moim zdaniem będzie z tym problem lepiej wykorzystać port P1 moi zdaniem.

    0
  • #17 10 Maj 2012 14:05
    JarekC
    Poziom 27  

    Witam,
    Co rozumiesz pod pojęciem projekt teoretyczny?

    Twój układ nie będzie działał poprawnie z powodu braku rezystorów Pull-Up dla portu P0 gdy linia WR wykorzystywana jako zwykły port I/O
    lub błędnej logiki dla zatrzasków HCT574 jeżeli linia WR wykorzystywana jako sygnał zapisu do pamięci.
    Jeżeli to Twój projekt to czemu miała służyć linia Z?

    Mój układ działa następująco(zamiast bramek NAND powinny być NOR)
    Linia Z służy do wyboru do którego układu HCT574 zapisujemy, linia WR jest sygnałem zapisu (linia WR jako sygnał zapisu do pamięci)

    Np: Linia Z=1 , sygnał WR 1-> 0 -> 1
    Dla dolnego HCT574 otrzymamy cały czas stan "0" na linii CLK
    Dla górnego HCT574 otrzymamy impuls 0 -> 1 -> 0

    Pozdrawiam
    JarekC

    0
  • #18 10 Maj 2012 15:43
    Rapero700
    Poziom 6  

    Nie lepiej wykorzystać dekoder adresów?

    0