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

Jak programować AT89S52 przez RS232 zamiast programatora?

Mcin 07 Paź 2004 19:19 4712 12
REKLAMA
  • #1 898463
    Mcin
    Poziom 11  
    Posty: 12
    Jestem początkujący, dlatego proszę wybaczyć jeżeli pytanie jest banalne.
    Założenie jest takie że mam jakiegoś dowolnego Atmela z serii AT89xx (np AT89S52).
    1. Co ten Atmel musi mieć abym mógł do niego podłączyć moduł 232 żebym dzięki temu mógł go programować(UART/SPI/ISP)
    2. Jak mam połączyć tego Atmela z modułem max232?
    3. Jakiego programu używać do przesyłania skompilowanych plików?

    Zastanawia mnie wogóle po co się kupuje te programatory skoro dużo taniej można skorzystać z programowania przez 232- może o czymś nie wiem?
  • REKLAMA
  • #2 898507
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 51
    Mcin napisał:
    Jestem początkujący, dlatego proszę wybaczyć jeżeli pytanie jest banalne.
    Założenie jest takie że mam jakiegoś dowolnego Atmela z serii AT89xx (np AT89S52).
    1. Co ten Atmel musi mieć abym mógł do niego podłączyć moduł 232 żebym dzięki temu mógł go programować(UART/SPI/ISP)
    2. Jak mam połączyć tego Atmela z modułem max232?
    3. Jakiego programu używać do przesyłania skompilowanych plików?

    Zastanawia mnie wogóle po co się kupuje te programatory skoro dużo taniej można skorzystać z programowania przez 232- może o czymś nie wiem?


    Witam.
    Niestety masz błędne założenia :wink:
    1.Nie sposób zaprogramować procka typu 89xx poprzez jego interfejs RS232.
    2.Nijak (jeśli chodzi o zaprogramowanie).
    3.Takiego ,który obsługuje Twój progtamator(musisz go mieć!!!).
    Wygląda mi na to że jeszcze o wielu rzeczach nie wiesz :)

    Pzdr.
    Piotrek Sz.
  • #3 898638
    Mcin
    Poziom 11  
    Posty: 12
    W takim razie które procki (Atmela albo inne) na to pozwalają?
  • REKLAMA
  • #4 898841
    romekz
    Poziom 11  
    Posty: 76
    Ocena: 2
    Kolega naoglądał się urządzeń, w których można zmieniać oprogramowanie wewnętrzne (firmware) poprzez RS. Znakomita większość profesjonalnych urządzeń ma taką możliwość. Tam to się robi jednak inaczej. Procesor ma wgrany tzw. boot (lub boot'uje z zewnętrznej pamięci ), który jest odpowiedzialny za start procesora. I gdy np. wykrywa podłączenie RS lub takie połączenie jest inicjowane z zewnątrz przechodzi to fazy wczytywania nowego oprogramowania do zewnętrznej pamięci. Jak podłączenie RS jest nie wykrywane to procesor przechodzi do wykonywania programu zawartego w zewnętrznej pamięci. Jednym zdaniem tylko boot jest stały a resztę można zmienić.
  • REKLAMA
  • #5 899295
    etedio
    Poziom 24  
    Posty: 587
    Pomógł: 45
    Ocena: 13
    na szczęście procesory AT89Sxx i AVR mają ISP - można elegancko programować przez port LPT i kilka (5) kabelków, a programator to w najprostszym przypadku złącze LPT i kilka oporników, w dodatku BASCOM AVR świetnie to obsługuje (z układami 51 nie próbowałem zbytnio ale też chodzi)

    programowanie przez RS ma np. kilka mikrokontrolerów Philipsa, zawierają właśnie wewnętrzny boot loader, ale ich cena jest lekko zaporowa :wink:

    Atmel natomiast dopiero ostatnio zastępuje słynne AT89C51/52 wersjami S więc po prostu ISP to względnie nowa rzecz
  • #6 899394
    mzielin
    Poziom 22  
    Posty: 483
    Pomógł: 31
    Ocena: 16
    Natomiast dla chętnych nie ma żadnego problemu, aby wykorzystać ATMega które mają wewnętrzny bootloader, lub do układu dołączyć zmodyfikowany układ avr901 przeprogramowujący procesor główny.
  • REKLAMA
  • #7 900914
    Mcin
    Poziom 11  
    Posty: 12
    Znalazłem kilka procków i z ich instrukcji wypisałem parę właściwości.

    Może ktoś mi powie które własciwości mówią że procek pozwala na programowanie przez rs-a i które z tych procków dają się tak programować?

    1. T89C51CC01-można nabyć za ok 76zł
    • Boot Code Section with Independent Lock Bits
    • 2K Bytes of On-chip Flash for Bootloader
    • In-System Programming by On-Chip Boot Program (CAN, UART) and IAP Capability
    http://www.atmel.com/dyn/resources/prod_documents/doc4129.pdf

    2.AT89C51RC2/RB2-można nabyć za ok 36zł
    • Boot ROM Contains Low Level Flash Programming Routines and a Default Serial Loader
    http://www.atmel.com/dyn/resources/prod_documents/doc4180.pdf
    3.ATmega8 - 13zł
    - Optional Boot Code Section with Independent Lock Bits
    In-System Programming by On-chip Boot Program True Read-While-Write Operation
    http://www.atmel.com/atmel/acrobat/2486s.pdf
  • #8 901244
    natalia.
    Poziom 14  
    Posty: 65
    Pomógł: 2
    Sądzę, że wtwoim przypadku najlepszym rozwiązaniem będzie programowanie mikrokontrolerów w układzie (ISP). Jeżeli chcesz bawić się z procesorami z rodziny C51, to w grę wchodzą procesory 89S?? (istotne jest to "S"). Programuje się na wiele sposobów. Jak odwiedzisz stronę www.aec-electronics.co.nz, tam znajdziesz bezpłatne oprogramowanie sterujące i informacje jak zrobić wręcz prymitywny programator (który właściwie jest kabelkiem do złącza centronix).
    Programowanie przez rs-a wymaga istnienia w procku programu ładującego (samo nic się nie robi) i zawęża się praktycznie do mikrokontrolerów MEGA AVR.
    Inną alternatywą jest użycie mikrokontrolerów z rodziny AVR.
  • #9 901770
    SIEKIERA_666
    Poziom 22  
    Posty: 505
    Pomógł: 22
    Ocena: 79
    Witam

    A co z układami ADuC8xx ?? One tez są oparte na rdzeniu 51 i z tego co wiem to programuje się je przez RS232. Czy równiez wymagają Bootloader'a. Właśnie zabieram się za ADuC824 i stąd moje zainteresowanie.

    :sm19:
  • #10 901879
    rtom
    Poziom 18  
    Posty: 458
    Pomógł: 6
    Ocena: 18
    Wiec sprawa wyglada tak. Widze, ze niektorzy myla rozne pojecia, a skoro jestes poczatkujacy to tylko Ci to namiesza. Uklady atmela typu 89Sxx, np AT89S53, AT89S8252 mozna przystosowac do programowania przez LPT, wykorzystujac SPI. Jednak, jak wynika z praktyki SPI wykorzystuje 5 linii umieszczonych na porcie P1. Podczas programowania jesli sa tam np. podlaczone linie sterujace wyswietlacza to nie ma mowy o programowaniu i trzeba kombinowac. Co do przystosowania tych prockow do programowania rownoleglego, to isnieje taka mozliwosc, ale na pewno nie przez SPI.
    Najlepszym rozwiazaniem jest procek atmela AT89C51RD2. Ma on pamiec eeprom 2k, RAM 1k, flash 16k i mozliwosc programowania przez RS232. W obszarze pamieci RAM-Xdata znajduje sie bootloader, ktory po uaktywnieniu trybu programujacego (zwykle odbywa sie to przez uaktynienie pinu PSEN i podanie napiecia programujacego na EPP) rozpoczyna ladowanie nowego programu do flash'a. Jest to "metoda" tkz. flip RS. Wedlug mnie programowanie prez RS-a jest najwygodniejsze i najbardziej eleganckie (jeden kabel, ,zamiast dodadkowego od LPT!).
    Cena tego opisywanego atmelka to nieco ponad 30zl. Inne procki typu phillips tez sa spoko np. P89C51RD2 - 16k flash 1k RAM, ale nie ma eepromu, cena porownywalna do atmelka. Co do ADUC8xx, to po pierwsze sa drogie (chyba, ze free sample) do tego nie nadaje sie dla poczatkujacych (problemy z lutowaniem, koniecznosc wnikliwej lektury dokumentacji - aby skorzystac z pamieci xdata).
  • #11 901935
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    89SXX programuje sie SZEREGOWO poprzez SPI (Serial Peripheral Interface). Ta wlasciwosc nazywa sie ISP (In System Programming).Rowniez mozna programowac rownolegle w programatorze. Programator moze byc roznie podlaczany RS232,USB,LPT. Oczywiscie traci sie wtedy mozliwosc programowania w systemie. Sa rozne programatory ktore programuja przez SPI a ktore mozna podlaczyc pod LPT (chyba najprostszy programator bo sklada sie tylko z kabelka ewentualnie kilku opornikow) USB czy RS232. Potrzeba wtedy ukladu ktory dokona konwersji na SPI. Zazwyczaj jest to jakis zaprogramowany mikroprocesor. Jak wspomnieli wczesniej koledzy oczywiscie sa tez wersje prockow ktore maja mozliwosc napisania i wgrania wlasnego bootloadera i wtedy mozesz sam sobie zaprojektowac jak ma byc programowany procek (mozna rowniez przez wbudowany UART)
    Pozdro
    Dexter
  • #12 901985
    rtom
    Poziom 18  
    Posty: 458
    Pomógł: 6
    Ocena: 18
    Fakt: szeregowo poprzez SPI, stosujac np. oprogramowanie AEC_ISP i LPT1, rownolegle w programatorze 12V!
  • #13 8927505
    mtryb14
    Poziom 11  
    Posty: 10
    Ocena: 7
    Już dawno zapomniane ale może ktoś będzie szukał
    • Zaprojektowany dla nowych chipów ISP, 89S51, 89S52, 89S53 i 40-pin DIP,
    • Programowanie w systemie (ISP) za pomocą 6-pin , (nie potrzebuje zewnętrznego programatora),
    • TxD i RxD portu szeregowego do komunikacji z urządzeniami szeregowymi,
    • 32 bit GPIO,
    • Wbudowany prostownik i +5 V DC regulatora napięcia,
    • Jednostronna PCB.

    Hardware

    Konstrukcja płyty jest utrzymywana tak prosto, jak to możliwe. Schemat przedstawia kompletny osprzęt do nauki AT89Sxx pokładzie. Port 0,1,2,3 są dostępne dla interfejsów urządzeń zewnętrznych. P3.0 i P3.1 są wykorzystywane do UART.

    R1 330 1/4W + / -5%
    R2 10k 1/4W + / -5%
    C1 1000uF/16V kondensatorów elektrolitycznych
    C2 100uF/16V kondensator elektrolityczny
    C3 100nF lub ceramiczne wielowarstwowe
    C4 10uF/16V elektrolitycznych
    C5, C6 33pF ceramicznych
    D1 1N4001 / 1N4002 dioda prostownika krzemowa
    D2 Led
    U1 Lm7805, regulator napięcia
    U1 AT89Sxx
    Port równoległy DB25, złącze 25pins

    w środku projekt płytki do druku, schemat,zasilanie itd. czyli wszystko co potrzebne
    Załączniki:
    • Wszystko.rar (62.02 KB) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

✨ Programowanie mikrokontrolerów AT89S52 i innych z rodziny AT89xx przez interfejs RS232 bez dedykowanego programatora jest w praktyce niemożliwe, ponieważ te układy nie posiadają wbudowanego bootloadera umożliwiającego programowanie przez UART. Standardowo programowanie odbywa się szeregowo przez interfejs SPI (ISP - In-System Programming) lub równolegle za pomocą programatora podłączanego do portu LPT, USB lub RS232, który konwertuje sygnały na odpowiedni protokół. Mikrokontrolery AT89Sxx z literą "S" w nazwie (np. AT89S52) obsługują programowanie ISP przez SPI, wykorzystując port P1 i 5 linii sygnałowych. Do programowania potrzebny jest programator (często prosty układ z kilkoma rezystorami) oraz oprogramowanie takie jak AEC_ISP lub BASCOM AVR. Niektóre mikrokontrolery Atmel, np. AT89C51RD2, posiadają wbudowany bootloader umożliwiający programowanie przez RS232, jednak są to wyjątki i wymagają specjalnych warunków aktywacji trybu programowania. Mikrokontrolery AVR z rodziny ATmega często mają wbudowany bootloader i mogą być programowane przez UART. Układy ADuC8xx oparte na rdzeniu 8051 również umożliwiają programowanie przez RS232, ale wymagają bootloadera. Programatory RS232 działają jako interfejs konwertujący sygnały RS232 na SPI lub inne protokoły programowania. Programowanie bez programatora jest możliwe tylko jeśli mikrokontroler ma wbudowany bootloader obsługujący komunikację szeregową. W przeciwnym razie konieczne jest użycie programatora sprzętowego. Schematy prostych programatorów ISP dla AT89Sxx są dostępne, a porty P3.0 i P3.1 służą do komunikacji UART. Programowanie przez RS232 jest więc możliwe tylko dla wybranych modeli z bootloaderem, natomiast standardowo AT89S52 programuje się przez ISP (SPI) z użyciem programatora.
Wygenerowane przez model językowy.
REKLAMA