eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Programowanie AT89Cxx51
Ilość wypowiedzi w tym wątku: 50

  • 31. Data: 2017-02-26 21:43:38
    Temat: Re: Programowanie AT89Cxx51
    Od: Zbych <a...@o...pl>

    W dniu 26.02.2017 o 21:02, Atlantis pisze:

    > Innymi słowy:
    > 2) Zewnętrzna pamięć RAM ma wspólną przestrzeń adresową z wewnętrzną, a
    > więc jej pewna ilość na początku (128 bajtów?) będzie niewykorzystana.
    >
    > Dobrze to rozumiem?

    Źle. Wewnętrzna pamięć RAM i zewnętrzna to dwie oddzielne przestrzenie
    adresowe obsługiwane innymi rozkazami. Czasami bardziej wypaśne '51
    miały cześć peryferiów zamapowane na zewnętrzny RAM i wtedy faktycznie
    cześć XRAMu była niedostępna.

    > I jeszcze jedno pytanie: jak w tej rodzinie wygląda kwestia korzystania
    > ze stałych definiowanych w pamięci programu? Istnieje coś takiego, jak
    > PROGMEM w AVR-ach, czy też jedynym wyjściem jest zwykłe tworzenie kopii
    > tych stałych w pamięci RAM? Bo chyba nie jest tak dobrze, że wystarczy
    > zdefiniować zmienną jako "const", jak we współczesnych mikrokontrolerach
    > 32-bitowych?

    A nie przyszło ci do głowy przeczytanie manuala do kompilatora?
    http://www.keil.com/support/man/docs/c51/c51_le_cons
    t.htm





  • 32. Data: 2017-02-26 23:21:17
    Temat: Re: Programowanie AT89Cxx51
    Od: Dariusz Dorochowicz <_...@w...com>

    W dniu 2017-02-26 o 21:02, Atlantis pisze:
    > W dniu 2017-02-26 o 20:50, Dariusz Dorochowicz pisze:
    >
    >> Pewnie że jest. EA to tylko wybór pamięci programu, a na PSEN procek
    >> wystawia czy chce dostępu do pamięci programu czy danych. Tyle, że
    >> niekoniecznie da się w ten sposób dostać do całej pamięci, bo zdaje się
    >> że na początku są mapowane rejestry.
    >
    > Pytam, bo wydaje mi się, że kiedyś widziałem schemat na którym do MCU
    > jednocześnie podłączony był RAM i EPROM. Jeśli dobrze pamiętam, piny
    > sterujące były podłączone przez jakąś bramkę. Na 90% jestem pewien, że
    > to właśnie dotyczyło czegoś w stylu AT89C51/52, jednak mogę się mylić.
    > Dlatego właśnie pytam. ;)

    Spokojnie, to typowa konfiguracja. Wystarczy zapytać guglarkę. Schematów
    od zarąbania, wszystkie prawie takie same, no bo co tu można wymyślić?
    Ale po co pytasz o ten procek i takie tematy? Chcesz coś na nim zrobić
    czy tak z ciekawości? Bo wiesz, to straszna staroć przecież. Jeżeli masz
    urządzenie, to konfigurację już masz, a jeżeli nie, to nie ma sensu się
    bawić w odkrywanie. Okolice typowej konfiguracji będziesz miał na
    prostym atmelku w jednym scalaku i to więcej pamięci programu, za to
    mniej RAMu. Ale i z tym da się poradzić - chociażby na XMega128A1 masz
    możliwość dołączenia pamięci zewnętrznej, nie tylko statycznej. O
    mocniejszych układach nie wspominam.

    > Innymi słowy:
    > 1) Mogę korzystać albo z wewnętrznej pamięci programu, albo zewnętrznej
    > - w zależności od sposobu podłączenia pinu EA.

    Dokładnie tak. Nie pamiętam tylko czy można zmieniać stan tego pinu w
    trakcie pracy.

    > 2) Zewnętrzna pamięć RAM ma wspólną przestrzeń adresową z wewnętrzną, a
    > więc jej pewna ilość na początku (128 bajtów?) będzie niewykorzystana.

    Nie pamiętam, ale Zbych już odpowiedział.

    > Dobrze to rozumiem?
    >
    > I jeszcze jedno pytanie: jak w tej rodzinie wygląda kwestia korzystania
    > ze stałych definiowanych w pamięci programu? Istnieje coś takiego, jak
    > PROGMEM w AVR-ach, czy też jedynym wyjściem jest zwykłe tworzenie kopii
    > tych stałych w pamięci RAM? Bo chyba nie jest tak dobrze, że wystarczy
    > zdefiniować zmienną jako "const", jak we współczesnych mikrokontrolerach
    > 32-bitowych?

    Pewnie trzeba zajrzeć do listy rozkazów i znaleźć informację czy jest
    instrukcja pobrania danej z pamięci programu - obawiam się że to było
    tak dawno...

    Pozdrawiam

    DD


  • 33. Data: 2017-02-27 06:42:28
    Temat: Re: Programowanie AT89Cxx51
    Od: Atlantis <m...@w...pl>

    On 26.02.2017 23:21, Dariusz Dorochowicz wrote:

    > Ale po co pytasz o ten procek i takie tematy? Chcesz coś na nim zrobić
    > czy tak z ciekawości? Bo wiesz, to straszna staroć przecież. Jeżeli masz
    > urządzenie, to konfigurację już masz, a jeżeli nie, to nie ma sensu się
    > bawić w odkrywanie. Okolice typowej konfiguracji będziesz miał na

    W tej chwili nie planuję niczego budować na tym układzie. Pytam z
    czystej ciekawości, albo że tak powiem - z powodu zainteresowania
    historią. :) To znaczy nie wykluczam, że może kiedyś, z czystej
    ciekawości spróbuję sobie coś takiego uruchomić, na podobnej zasadzie,
    jak ludzie budujący własne retro komputery na Z80, jednak w tej chwili
    są to rozważania czysto teoretyczne.
    Gotową konfigurację już mam, ale jest prosty układ bez zewnętrznej
    pamięci. Próbuję w tej chwili napisać na niego własny kod przy pomocy
    sdcc i głównie dlatego temat mnie zainteresował. :)


    > prostym atmelku w jednym scalaku i to więcej pamięci programu, za to
    > mniej RAMu. Ale i z tym da się poradzić - chociażby na XMega128A1 masz
    > możliwość dołączenia pamięci zewnętrznej, nie tylko statycznej. O
    > mocniejszych układach nie wspominam.

    Tak, wiem - to jasne. W 32bitowych MCU pamięć nie jest problemem. Jak
    już mówiłem - tu chodzi o ciekawość, a nie pragmatyczną potrzebę
    obejścia problemów z zasobami.


  • 34. Data: 2017-02-27 09:49:53
    Temat: Re: Programowanie AT89Cxx51
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:o8v9rj$l28$...@n...icm.edu.pl...
    >> To jest właśnie bankowanie pamięci, nie ma poleceń adresujących
    >> 17-bitowo.
    >Czyli rozumiem, że teoretycznie w tych mikrokontrolerach możliwe jest
    >np. jednoczesne zastosowanie 64kB pamięci RAM i 64kB EPROM? Będą one
    >widoczne jako dwie osobne przestrzenie adresowe?
    >Możliwe było uruchamianie programu z zewnętrznego EPROM-a, czy też
    >pamięci tego rodzaju był wykorzystywane do przechowywania dodatkowych
    >zasobów, a kod należało upchnąć w tych kilku kB wewnętrznego flasha?

    8051 mial wyprowadzona magistrale (ktora wymagala pinow portow, wiec
    ograniczala mozliwosci) i mozliwosc podpiecia dodatkowych 64KB
    zewnetrznego RAM na oraz 64 zewnetrznej pamieci programu.
    Program mogl byc tylko w pamieci programu.
    Oprocz tego mozna sobie bylo zorganizowac dodatkowe bankowanie, i
    teoretycznie miec nieograniczona ilosc danych.

    i to samo bylo w AT89C51 i C52. Tylko tam majac wygodny wewnetrzny
    flash razej nie uzywalo zewnetrznego programu.

    Ale juz np taki 2051 Atmela majac mniej nozek tej magistrali nie
    przewidywal.

    Ogolnie - szkoda czasu. Dostep do tych pamieci to byl koszmar, albo
    masz zastosowanie na maly 8-bit uC, albo uzyj lepszego procka.

    Intel mial nastepce, z rozszerzona architektura ... ale tez szkoda
    czasu.

    J.


  • 35. Data: 2017-02-27 09:59:42
    Temat: Re: Programowanie AT89Cxx51
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "AlexY" napisał w wiadomości grup
    dyskusyjnych:o8vb11$3le$...@d...me...
    Atlantis pisze:
    > W dniu 2017-02-26 o 16:26, AlexY pisze:
    >>> To jest właśnie bankowanie pamięci, nie ma poleceń adresujących
    >>> 17-bitowo.
    >> Czyli rozumiem, że teoretycznie w tych mikrokontrolerach możliwe
    >> jest
    >> np. jednoczesne zastosowanie 64kB pamięci RAM i 64kB EPROM? Będą
    >> one
    >> widoczne jako dwie osobne przestrzenie adresowe?

    >Nie, przynajmniej jeśli dobrze zrozumiałem PDFa od 89c51/2.

    Tak.
    Jak 51 czytal rozkaz, to wystawial adres i aktywowal linie PSEN-.
    To samo bylo, jak odczytywal dane z pamieci programu rozkazem MOVC.

    Jesli czytal dane z pamieci zewnetrznej (XRAM), to aktywowal linie RD-
    (P3.7).
    Przy zapisie aktywowal linie WR- (P3.6).

    >> Możliwe było uruchamianie programu z zewnętrznego EPROM-a, czy też
    >> pamięci tego rodzaju był wykorzystywane do przechowywania
    >> dodatkowych
    >> zasobów, a kod należało upchnąć w tych kilku kB wewnętrznego
    >> flasha?

    >"External Access Enable. EA must be strapped to GND in
    >order to enable the device to fetch code from external program
    >memory locations starting at 0000H up to FFFFH."

    >Jeśli dobrze zrozumiałem można podpiąć pamięć programu albo danych,
    >nie widzę mix'u, może jest jakiś kruczek.

    To sie tyczy programu. Moze pobierac z wewnetrznego flash, albo caly
    program z zewnetrznej pamieci.

    Co do adresow - bodajze kompilator Keil mial wskazniki 3 bajtowe,
    gdzie najstarsze bity wskazywaly rodzaj pamieci.
    Ale to czysto softwarowo robota.

    J.




  • 36. Data: 2017-02-27 10:19:55
    Temat: Re: Programowanie AT89Cxx51
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:o8vc9i$k08$...@n...icm.edu.pl...
    W dniu 2017-02-26 o 20:50, Dariusz Dorochowicz pisze:
    >2) Zewnętrzna pamięć RAM ma wspólną przestrzeń adresową z wewnętrzną,
    >a
    >więc jej pewna ilość na początku (128 bajtów?) będzie
    >niewykorzystana.
    >Dobrze to rozumiem?

    Nie, to dwie osobne pamieci.
    Wiekszosc rozkazow operuje na wewnetrznej, a tylko movx na ze

    >I jeszcze jedno pytanie: jak w tej rodzinie wygląda kwestia
    >korzystania
    >ze stałych definiowanych w pamięci programu? Istnieje coś takiego,
    >jak
    >PROGMEM w AVR-ach, czy też jedynym wyjściem jest zwykłe tworzenie
    >kopii
    >tych stałych w pamięci RAM? Bo chyba nie jest tak dobrze, że
    >wystarczy
    >zdefiniować zmienną jako "const", jak we współczesnych
    >mikrokontrolerach
    >32-bitowych?

    Jesli chodzi o C ... to koszmar.
    uC moze pobrac dane z pamieci programu rozkazem movc ... ale skad ma
    wiedziec ktorego rozkazu uzyc ?
    Pamieci mamy 3, rozkazy 3 rozne.
    Jak sobie dobrze rodzielisz i zaprogramujesz, to swietnie, gorzej jak
    chcesz
    printf ("blad nr %d: %s", errnr, errmsg)

    i skad ten biedny kompilator ma wiedziec, czego uzyc ?
    O Keilu pisalem, AVR ma akurat podobny problem.

    J.


  • 37. Data: 2017-02-27 10:48:27
    Temat: Re: Programowanie AT89Cxx51
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2017-02-26 o 20:21, Atlantis pisze:
    > W dniu 2017-02-26 o 16:26, AlexY pisze:
    >
    >> To jest właśnie bankowanie pamięci, nie ma poleceń adresujących 17-bitowo.
    >
    > Czyli rozumiem, że teoretycznie w tych mikrokontrolerach możliwe jest
    > np. jednoczesne zastosowanie 64kB pamięci RAM i 64kB EPROM? Będą one
    > widoczne jako dwie osobne przestrzenie adresowe?
    > Możliwe było uruchamianie programu z zewnętrznego EPROM-a, czy też
    > pamięci tego rodzaju był wykorzystywane do przechowywania dodatkowych
    > zasobów, a kod należało upchnąć w tych kilku kB wewnętrznego flasha?
    >
    Pierwsze 51-ki nie miały wewnętrznej pamięci programu - czyli...
    P.G.


  • 38. Data: 2017-02-27 11:29:29
    Temat: Re: Programowanie AT89Cxx51
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Piotr Gałka" napisał w wiadomości grup
    dyskusyjnych:o90sld$lhb$...@n...chmurka.net...
    >> Możliwe było uruchamianie programu z zewnętrznego EPROM-a, czy też
    >> pamięci tego rodzaju był wykorzystywane do przechowywania
    >> dodatkowych
    >> zasobów, a kod należało upchnąć w tych kilku kB wewnętrznego
    >> flasha?
    >
    >Pierwsze 51-ki nie miały wewnętrznej pamięci programu - czyli...

    Czekaj Piotrze, bo o ile pamietam ...
    -8051 miala 4 czy 8kB wewnetrznego programu "programowanego maska",
    czyli trzeba bylo u Intela zamowic z konkretna zawartoscia,
    -byla wersja 8031 (a moze 8035?) , ktora wewnetrzego ROM wcale nie
    miala,
    -byla tez wersja 8751, Eprom z okienkiem do kasowania ... ale chyba
    nigdy nie widzialem, a w katalogach jakies niebotyczne ceny
    -w kraju czesto uzywano 8051 z jakis resztek produkcyjnych, z
    zewnetrznym epromem, po wylaczeniu wewnetrznego ROM, ewentualnie
    klonow na podobnej zasadzie.
    Dosc popularne byly klony siemensa, ktore mialy wiecej nozek, wiec nie
    ograniczaly funkcjonalnosci.

    Podobnie bylo u Motoroli i innych - wersja Eprom to jakis meteor, niby
    byla, a malo kto widzial.

    I dopiero Atmel wprowadzil jakas rewolucje cenowa, wczesniej Microchip
    w PIC, wczesniej byly rozne pomysly jak np ten Dallas z bateryjka.

    J.


  • 39. Data: 2017-02-27 13:11:24
    Temat: Re: Programowanie AT89Cxx51
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2017-02-27 o 06:42, Atlantis pisze:
    > On 26.02.2017 23:21, Dariusz Dorochowicz wrote:
    >
    >> Ale po co pytasz o ten procek i takie tematy? Chcesz coś na nim zrobić
    >> czy tak z ciekawości? Bo wiesz, to straszna staroć przecież. Jeżeli masz
    >> urządzenie, to konfigurację już masz, a jeżeli nie, to nie ma sensu się
    >> bawić w odkrywanie. Okolice typowej konfiguracji będziesz miał na
    >
    > W tej chwili nie planuję niczego budować na tym układzie. Pytam z
    > czystej ciekawości, albo że tak powiem - z powodu zainteresowania
    > historią. :) To znaczy nie wykluczam, że może kiedyś, z czystej
    > ciekawości spróbuję sobie coś takiego uruchomić, na podobnej zasadzie,
    > jak ludzie budujący własne retro komputery na Z80, jednak w tej chwili
    > są to rozważania czysto teoretyczne.
    > Gotową konfigurację już mam, ale jest prosty układ bez zewnętrznej
    > pamięci. Próbuję w tej chwili napisać na niego własny kod przy pomocy
    > sdcc i głównie dlatego temat mnie zainteresował. :)
    >
    Wpiszę swoje 3 grosze - może Ci się przyda (nie ja pisałem program -
    mogę coś mieszać).
    W DSM-51 (projekt z 1993r) w momencie włączenia zasilania:
    - 32k EPROM z programem był widoczny dwa razy (w obu połowach pamięci
    programu),
    - 32k RAMu było chyba widoczne tylko w dolnej połowie pamięci danych
    (niektóre adresy górnej połowy były użyte do sterowania sprzętu).
    Pod kontrolą tego programu z EPROMu edytowało się ręcznie (wbudowany
    assembler - z menu wybierało się mnemonik, a potem z menu kolejne jego
    parametry - taki wymóg czasów, gdy w szkołach pracowania
    mikrokontrolerów nie miała komputerów) program, który był umieszczany W
    RAMie. Była też (dla posiadających PC) możliwość wgrania do RAMu
    programu przez RS232.
    Uruchomienie programu polegało na zastąpieniu w dolnej połowie pamięci
    programu EPROMu przez RAM i reset procesora. W ten sposób wektory
    przerwań też pochodziły z programu załadowanego do RAMu.
    W uruchamianym w RAMie programie można było korzystać z iluś tam
    procedur zawartych w EPROMie (widocznym teraz w górnej połowie pamięci
    programu).
    Urządzenie miało dwa resety. Reset programu użytkownika robił reset
    procesora z pozostawieniem RAMu w dolnej połowie pamięci programu, a
    pełny reset przywracał wszystko do stanu jak po włączeniu zasilania.
    Watchdog generował reset nie modyfikując przestrzeni adresowych -
    zadziałanie watchdoga w programie użytkownika resetowało program
    użytkownika, a nie cały system.

    Poza przekazaniem pełnej władzy programowi w RAMie była też możliwość
    puszczania go krokowo. Rezydujący u góry program w EPROMie wkładał
    odpowiednio skoki do siebie do RAMu i wypuszczał od odpowiedniego
    miejsca (i stanu stosu) program w RAMie i łapał gdy doszedł do tego skoku.
    P.G.



  • 40. Data: 2017-02-27 13:49:29
    Temat: Re: Programowanie AT89Cxx51
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2017-02-27 o 11:29, J.F. pisze:
    > Użytkownik "Piotr Gałka" napisał w wiadomości grup
    > dyskusyjnych:o90sld$lhb$...@n...chmurka.net...
    >>> Możliwe było uruchamianie programu z zewnętrznego EPROM-a, czy też
    >>> pamięci tego rodzaju był wykorzystywane do przechowywania dodatkowych
    >>> zasobów, a kod należało upchnąć w tych kilku kB wewnętrznego flasha?
    >>
    >> Pierwsze 51-ki nie miały wewnętrznej pamięci programu - czyli...
    >
    > Czekaj Piotrze, bo o ile pamietam ...
    > -8051 miala 4 czy 8kB wewnetrznego programu "programowanego maska",
    > czyli trzeba bylo u Intela zamowic z konkretna zawartoscia,
    > -byla wersja 8031 (a moze 8035?) , ktora wewnetrzego ROM wcale nie miala,
    > -byla tez wersja 8751, Eprom z okienkiem do kasowania ... ale chyba
    > nigdy nie widzialem, a w katalogach jakies niebotyczne ceny
    > -w kraju czesto uzywano 8051 z jakis resztek produkcyjnych, z
    > zewnetrznym epromem, po wylaczeniu wewnetrznego ROM, ewentualnie klonow
    > na podobnej zasadzie.

    Lepiej to pamiętasz niż ja. Wydawało mi się, że 8051 było bez pamięci
    programu, bo była ona (z mojego punktu widzenia) bezużyteczna, ale
    faktycznie to chyba 8031.

    W 88 wymyśliłem nazwę MicroMade i zmotywowani tym "Micro" już w Piccolo
    użyliśmy 8748 (wersja z EPROMem - cena 1 sztuki tyle ile moja miesięczna
    pensja asystenta na PG).
    Kilka lat późniaj w Picco-GAL używaliśmy 8751.

    W tego typu urządzeniach, gdzie trzeba było mieś dużo linii we/wy
    podłączenie zewnętrznej pamięci programu zrobiło by z urządzenia wersję
    wybitnie nie pasujące do naszej nazwy. Zamiast jednego scalaka byłoby
    chyba ze 6 (trzeba by czymś zastąpić nogi zajęte przez podłączenie
    pamięci z programem).

    > I dopiero Atmel wprowadzil jakas rewolucje cenowa, wczesniej Microchip w
    > PIC, wczesniej byly rozne pomysly jak np ten Dallas z bateryjka.
    >

    O ile pamiętam to pierwsze wielokrotnie programowane procesory jakie
    używaliśmy to były jakieś ZILOG. Kilka lat później pojawiły się Atmele.
    P.G.

strony : 1 ... 3 . [ 4 ] . 5


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: