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

AT89S8252 - Jak zapobiec wysypywaniu się pamięci w mikrokontrolerze?

recon 29 Sty 2006 10:07 3573 17
REKLAMA
  • #1 2232341
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Witam
    Mam problem z tym mikrokontrolerem mianowicie co jakiś czas wysypuje sie w nim pamięć .Procesor pracuje w maszynie która steruje m.in. załączaniem świetlówek, silnika rewersyjnego, grzałek. Układ jest wieloprocesorowy a ten konkretny procesor czyta klawiaturę 12-przyciskową(matrycowo) i steruje wyświetlaczem led. Odległość od płyty czołowej gdzie jest klawiatura i wyświetlacz ok 2m. Układ ma standardowy reset(10uF i 8k2) na zasilaniu procka dławik 22uH(po dławiku 100uF i 100nF). Czy Atmele są wrażliwymi mikrokontrolerami?
    Co można jeszcze zrobić w takim wypadku?
    Po wgraniu nowego softu procek pracuje poprawnie
  • REKLAMA
  • #2 2233359
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    A linie /EA masz na stałe do plusa zasilania??
  • #3 2233430
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Tak jest na stałe podłączona do 5V
  • REKLAMA
  • #4 2233449
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Masz na myśli że gubi zawartość pamięci flash? Spróbuj odczytać taki jeden "wysypany" i porównaj pliki (żeby określić liczbe błędów i ich powtarzalność). Czy próbowałeś wymienić na inną sztukę?
  • #5 2233653
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Tak zostaje zmieniona zawartość pamięci Flash ale nie cała tylko komórki
    o adresie 0 (z wartości 02(LJMP) na 00(NOP)) i adresie 3 (z 7F(MOV) na 03(RR)).
    Po resecie procesor czyta pamięć i zamiast rozkazu skoku zastaje NOP
    Co może być tego przyczyną ? Czy istnieje możliwość że w wyniku zakłócenia wywołanego włączeniem silnika(dużej ilości świetlówek) może nastąpić uaktywnienie szyny SPI i przypadkowe programowanie(myśle że raczej mało możliwe).
    Ma ktoś jakiś pomysł co z tym zrobić?
    Dodam że piny procesora od SPI(MOSI,MISO,SCK) służą do czytania klawiatury(matryca 3X4) a odległość mikroprzełączników od procesora to około 2m(taśma komputerowa) i nie jest to powodem tej konkretnej sztuki procka bo na innych też sie to dzieje.
  • #6 2234099
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A jaki masz układ resetu? Żeby wejść w tryb programowania trzeba utrzymać procesor w resecie.
  • #7 2234242
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Napisałem wyżej, standardowy reset (10uF od plusa i 8k2 do masy)
  • #8 2239725
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #9 2239919
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Jeśli miałbym zmieniać procesor to pewnie byłby to jakiś PIC albo coś z rodziny ST6 bo czytałem że są mniej wrażliwe na zakłócenia.
    Jednak ta opcja to ostatnia możliwość(ze względu na duże zmiany w systemie) i dlatego szukam innego rozwiązania.
    Co do zmiany programu to też bym przy tym nie obstawał bo może sie okazać że kolejny procek będzie miał uszkodzone(żle zapisane) komórki o innych adresach i problem powraca.
    Ma ktoś jeszcze jakieś pomysły?
  • #10 2240450
    symndz
    Poziom 16  
    Posty: 211
    Pomógł: 1
    Ocena: 2
    odpowiedz PIERWSZA

    prawdopodobnie angla znasz wiec czytaj:

    In revisions "S" and earlier of the AT89S8252 and AT89LS8252 devices, inadvertent writes to either the Flash program memory or the data EEPROM memory can occur. An inadvertent write is a possibility in the following two scenarios.

    Case A Conditions
    1. A MOVX instruction is used to write to the internal EEPROM.
    2. P2.4 = 0 (driven by external hardware)
    P2.5 = 1
    3. The RST pin is asserted high during execution of any MOVX instruction that writes to the EEPROM, while VCC is on. In this case, an inadvertent write to the EEPROM address location corresponding to the value at Port 1 and pins P2.0 - P2.5 can occur.

    Case B Conditions
    1. A MOVX instruction is used to write to the internal EEPROM.
    2. P2.4 = 0 (driven by external hardware)
    P2.5 = 0 (driven by external hardware)
    3. The RST pin is asserted high during execution of any MOVX instruction that writes to the EEPROM, while VCC is on. In this case, an inadvertent write to the Flash memory address location corresponding to the value at Port 1 and pins P2.0 - P2.5 can occur.

    Solutions
    1. Avoid driving pins P2.4 and P2.5 to logic level "0" by external hardware before performing a "warm" (soft) reset.
    2. Use revision "T" or later of the devices involved.

    Dodano po 14 [minuty]:

    po DRUGIE:
    jesli to mozliwe mozesz sprobowac ZABLOKOWAC zapis przez ISP poprzez:
    a) czesciowe "wylaczenie" dostepu do flash, blokada odczytu/zapisu bez skasowania zawartosci (ale nie zawsze mozna z roznych wzgledow),
    b) calkowite przez Serial Programming Fuse, jesli mozesz programowac uklad na zewnatrz programatorem,

    po TRZECIE,
    mozesz sprobowac AT89S8253 (nie testowalem osobiscie ale powinni poprawic conieco),

    a po CZWARTE,
    jest uklad AT89C51RB2/RC2, kompatybilny pinowo z poprzednimi, rozniacy sie jedynie sposobem programowania ISP bo poprzez port szeregowy :). Brak w nim EEPROM w obszarze RAM ale do czytania klawiszy chyba nie potrzebujesz takich funkcji.

    Sam polecam czwarte rozwiazanie bo z AT89S8252 tez mialem problemy ale innego rodzaju niz opisane.

    Dodano po 11 [minuty]:

    Marcin

    www.embedded.org.pl
  • #11 2342621
    recon
    Poziom 15  
    Posty: 217
    Pomógł: 6
    Ocena: 3
    Witam
    Założyłem porządny filtr na zasilaniu procka i dodatkowe filtry RC na wejściach (na początku były tam diody 1N4148 w odpowiedniej konfiguracji) na razie wszystko jest ok ale zobaczymy czy to wystarczy
    Nie posiadam programatora który programuje równolegle gdyż uaktywniłbym również serial programming fuse jak pisał kolega symndz
    najwyżej trzeba będzie zmienić procek.
    Pozdrawiam
  • #12 2502156
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Witam.

    Mam podobny problem z AT89C51RC2.
    W betoniarni pracuje 5 sztuk jako sterowniki wagowe.
    Wszystko działa poprawnie pomimo, że cała sterownia naszpikowana jest stycznikami, przekaźnikami, cewkami do elektrozaworów itp.

    Problem jest jak nastąpi zanik napięcia(nawet jak stacja stoi).
    Szafa ma wyłącznik główny i wyłacza wszystkie terminale. Po parokrotnych włączeniach i wyłączeniach pada program główny. Kasuje się około 100 pierwszych bajtów programu. Zasilacz standardowy na trafie dobrze filtrowany, reset na rezystorze i kondensatorze. Ustawione bity blokujące dostep do pamięci programu (Level2). Objawy są takie same we wszystkich 5 sztukach. Nic nie pomaga. Trzeba było dać UPS.

    I tu moje pytanie.
    1. Czy jeżeli napięcie zasilania uP oscyluje na granicy jego poprawnej pracy to można uszkodzić wewnętrznego Flasha?
    2. Czy problem zniknie po założeniu układu resetującego (np. DS1812)?
    3. Czy taka jest uroda tego Atmela?.

    Mam na biurku sporo podobnych sterowników, różnych producentów i nikt nie zrobił tego na Atmelu. Głównie Philips i NEC i w dodatku wszystko na zewnętrznej pamięci.
    Widać Atmele nie nadają się do "poważnych" zadań.:cry:
  • #13 2502441
    symndz
    Poziom 16  
    Posty: 211
    Pomógł: 1
    Ocena: 2
    dokladnie, ten model sie nie nadaje do wszystkiego


    Marcin

    www.embedded.org.pl
  • #14 2502647
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    To jaki wytrzyma takie wahania zasilania?
  • REKLAMA
  • #15 2502819
    symndz
    Poziom 16  
    Posty: 211
    Pomógł: 1
    Ocena: 2
    to jest tak ze kazdy mozna zaklocic (stad wynikaja min mozliwosci odczytu zablokowanej pamieci) tyle ze ten at89s... jest szczegolnie podatny ..
    szczegolnie przy ukladzie resetu na rezystorze :) to wybrazam sobie reszte ukladu i projekt urzadzenia .. moze warto poszukac ukladu OTP?

    scislego odpowiednika (innej firmy) tego ukladu, nie znam, ale od czego google!
    teraz pojawily sie nowsze wersje tegu ukladu z wieksza pamiecia to powinny byc lepsze, a dwa, wczesniej podalem taki ktory jest pinowo odpowiedni ale nie ma wew. EEPROM i inaczej sie go programuje w ukladzie

    .. jest jeszcze AVR atmela tez pinowo zgodny z powyzszymi i latwo przenosi sie kod w C .. symbolu kosci nie pamietam jednak ale to chyba latwo odszukac ..
  • #16 2502867
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Kolega symndz mnie nie zrozumiał.

    Ja mam problem z pamięcią Flash w AT89C51RC2. Program ładowany jest przez fabryczny bootloader przez UARTA. Pamięć blokowana jest bitami sprzętowymi.
    A co do projektu. Jest to terminal wagowy pracujący z napieciem wej. rzędu 20mV pracujący w strasznych warunkach starej sterowni betoniarskiej. I DZIALA POPRAWNIE (jak tylko ma zasilanie:D)
  • #17 2503670
    symndz
    Poziom 16  
    Posty: 211
    Pomógł: 1
    Ocena: 2
    w takim razie to by oznaczalo ze nalezy nie uzywac wcale tej seri AT89.... Atmela ..

    .. albo naprawde trzeba sie przyjerzec krytycznie projektowi sterownika
  • #18 2503926
    sq6ade
    Poziom 40  
    Posty: 6855
    Pomógł: 482
    Ocena: 285
    Mam 3 szt AT89S8252 kupionych na początku ich sprzedaży. Żaden nie da sie zaprogramować nawet równolegle na fabrycznym programatorze.
    Z epromem na zewnątrz pracują prawidłowo. Kiszka.

Podsumowanie tematu

✨ Problem dotyczy mikrokontrolera AT89S8252, w którym okresowo dochodzi do niezamierzonej zmiany zawartości pamięci Flash, szczególnie w komórkach o adresach 0 i 3, co skutkuje błędnym odczytem instrukcji po resecie. Układ pracuje w środowisku z dużymi zakłóceniami elektromagnetycznymi generowanymi przez silnik rewersyjny i świetlówki, a linie SPI wykorzystywane są do odczytu klawiatury matrycowej oddalonej o około 2 metry. Standardowy układ resetu oparty na kondensatorze 10uF i rezystorze 8,2kΩ może być niewystarczający. W dyskusji wskazano, że wcześniejsze rewizje mikrokontrolera AT89S8252 i AT89LS8252 są podatne na przypadkowe zapisy do pamięci Flash lub EEPROM podczas wykonywania instrukcji MOVX, zwłaszcza gdy reset jest aktywowany w trakcie zapisu, a niektóre piny portu P2 są w określonych stanach. Zalecane jest zastosowanie solidniejszych filtrów zasilania, dodatkowych filtrów RC na wejściach oraz rozważenie zmiany mikrokontrolera na nowszy model lub inny typ mniej podatny na zakłócenia, np. z rodziny PIC lub ST6. Wskazano również, że mikrokontrolery Atmel z serii AT89 są szczególnie wrażliwe na zakłócenia i wahania zasilania, co może prowadzić do uszkodzenia pamięci Flash. W środowiskach przemysłowych z silnymi zakłóceniami i niestabilnym zasilaniem rekomenduje się stosowanie układów resetujących (np. DS1812) lub zasilaczy UPS. Niektórzy użytkownicy zgłaszają problemy z programowaniem i stabilnością pamięci w tych mikrokontrolerach, co może wymagać zmiany platformy sprzętowej lub zastosowania nowszych, bardziej odpornych układów.
Wygenerowane przez model językowy.
REKLAMA