logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Użycie portu P0 w 8051 do zatrzasku pamięci ROM i wyświetlaczy - czy to możliwe?

Rapero700 07 Maj 2012 21:17 3024 17
REKLAMA
  • #1 10872124
    Rapero700
    Poziom 9  
    Posty: 16
    Czy w mikroprocesorze 8051 może używać portu P0 do załączenia zatzrasku do pamięci ROm i do wyświetlaczy?
  • REKLAMA
  • Pomocny post
    #2 10872194
    bobeer
    Poziom 28  
    Posty: 1497
    Pomógł: 57
    Ocena: 641
    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)
  • REKLAMA
  • #3 10872227
    Rapero700
    Poziom 9  
    Posty: 16
    Sprawdz czy w tym przypadku można było wykorzytsać z pamięci ROM zewntrznej i wyświetlaczu przez załaczenie swoich zatrzasków
  • REKLAMA
  • Pomocny post
    #4 10872396
    bobeer
    Poziom 28  
    Posty: 1497
    Pomógł: 57
    Ocena: 641
    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ć.
  • #5 10872752
    Rapero700
    Poziom 9  
    Posty: 16
    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?
  • Pomocny post
    #6 10872867
    bobeer
    Poziom 28  
    Posty: 1497
    Pomógł: 57
    Ocena: 641
    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ć.
  • Pomocny post
    #7 10873081
    alagner
    Poziom 26  
    Posty: 768
    Pomógł: 85
    Ocena: 29
    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ę.
  • #8 10873652
    Rapero700
    Poziom 9  
    Posty: 16
    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
  • Pomocny post
    #9 10873795
    JarekC
    Poziom 32  
    Posty: 1507
    Pomógł: 231
    Ocena: 397
    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
  • #10 10874126
    Rapero700
    Poziom 9  
    Posty: 16
    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
  • Pomocny post
    #11 10874385
    JarekC
    Poziom 32  
    Posty: 1507
    Pomógł: 231
    Ocena: 397
    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
  • #12 10874557
    Rapero700
    Poziom 9  
    Posty: 16
    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?
  • REKLAMA
  • Pomocny post
    #13 10874724
    JarekC
    Poziom 32  
    Posty: 1507
    Pomógł: 231
    Ocena: 397
    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).

    Użycie portu P0 w 8051 do zatrzasku pamięci ROM i wyświetlaczy - czy to możliwe?

    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.
    Użycie portu P0 w 8051 do zatrzasku pamięci ROM i wyświetlaczy - czy to możliwe?

    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
  • #14 10874886
    Rapero700
    Poziom 9  
    Posty: 16
    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.
  • Pomocny post
    #15 10874995
    JarekC
    Poziom 32  
    Posty: 1507
    Pomógł: 231
    Ocena: 397
    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:

    Użycie portu P0 w 8051 do zatrzasku pamięci ROM i wyświetlaczy - czy to możliwe?

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

    JarekC
  • #16 10875068
    Rapero700
    Poziom 9  
    Posty: 16
    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.
  • #17 10881187
    JarekC
    Poziom 32  
    Posty: 1507
    Pomógł: 231
    Ocena: 397
    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
  • #18 10881473
    Rapero700
    Poziom 9  
    Posty: 16
    Nie lepiej wykorzystać dekoder adresów?

Podsumowanie tematu

✨ W dyskusji poruszono możliwość wykorzystania portu P0 w mikroprocesorze 8051 do obsługi zewnętrznej pamięci ROM oraz wyświetlaczy. Uczestnicy wymienili się informacjami na temat schematów połączeń, sygnałów aktywujących oraz zastosowania zatrzasków. Zauważono, że port P0 może być używany do komunikacji z pamięcią i wyświetlaczami, jednak wymaga to odpowiedniego zarządzania sygnałami WR i RD, aby uniknąć konfliktów. Wskazano na konieczność zastosowania układów HCT573 dla pamięci oraz HCT574 dla wyświetlaczy, ze względu na różnice w sposobie działania tych komponentów. Podkreślono również, że port P0 nie ma rezystorów Pull-Up, co może wpłynąć na jego działanie w trybie I/O.
Wygenerowane przez model językowy.
REKLAMA