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.

Błędy w mikrosterownikach !?

radek.kaba 18 Lut 2004 19:32 825 2
  • #1 18 Lut 2004 19:32
    radek.kaba
    Poziom 14  

    Chciałbym zaproponować nowy temat, o błędach występujących w mikrosterownikach.
    Błędach lub nieścisłościach, o których istnieniu dowiadujemy się zazwyczaj gdy jakiś projekt nie chce działać tak jak powinien, chociaż wszystko wygląda o.k. i według danych dokumentacji: powinno być tak, a jest inaczej.
    Może to ułatwić życie (zaoszczędzić czas i nerwy, które niestety ktoś inny już stracił) komuś kto zamierza np. przestawić się na inny mikrosterownik i takie cuda mogą go zbić totalnie z tropu.


    Na zachętę podam dwa przykłady:

    1)
    MIKROSTEROWNIK : AT89S8252
    OBJAWY: Podczas wykonywania restartu, gdy zasilanie jest załączone mikrosterownik „lubi” sobie wpisać coś sam do EEPROMu.

    Po dokładnym sprawdzeniu, okazało się, że zmiany występują tylko w pierwszej lub drugiej komórce, więc po prostu zacząłem omijać te komórki i objawy ustąpiły.
    Ale problem okazał się głębszy, Almel przyznał się, żę do takich sytuacji może dochodzić jeżeli podczas takiego restartu, gdy na P2.4 lub P2.5 zewnętrzne układy wymuszają stan niski, to wpisuje wartość z portu P1 do EEPROM i o zgrozo!!! do FLASH (u mnie to nie występowało, może dlatego, że procesory były zabezpieczone przed zapisem).
    Co ciekawe: jako rozwiązanie Almel podaje przejście na serię „T” (skoro kupiłeś jeden to kupisz drugi) lub oczywiście zmianę konstrukcji, tak aby na P2.4 lub P2 nie występowało wymuszenie stanu niskiego.
    Ale u mnie w zupełności wystarczył offset dla eeprom (dla pewności 20h).

    2)
    MIKROSTEROWNIK : AT89S52
    OBJAWY: Po zaprogramowaniu kodu napisanego dla AT89S8252, program który działał poprawnie na S8252 (oczywiście po zmianie watchdoga i korzystaniu z zewnętrznego eeproma), na S52 działa poprawnie ok. 0,5s a potem wyświetlacz szaleje.

    Przyczyną szaleństwa wyświetlacza było przepełnienie stosu (co trzeba było wykryć żmudną metodą prób i błędów). Ale dlaczego, skoro według danych Atmela AT89S52 posiada 256 bajtów RAM dostępnej dla stosu (tak jak AT89S8252)?
    Okazuję się że procesory AT89S52 o tygodniu produkcji 0237 (i nie tylko) są trochę dziwne:
    a) ich wewnętrzny identyfikator to 1E5106 (czyli jak AT89S51) a nie 1E5206 ,
    b) rzeczywiście posiadają tylko 128 RAM,
    c) po przyklejeniu naklejki na wierzch i jej zdarciu napisy schodzą,
    Nie stwierdziłem aby te sytuacje zachodziły w seriach od 0245 (na razie). A w ogóle Atmel przyznaje się do ich produkcji dopiero od 2003 roku. A więc to był S51 z większą pamięcią programu i błędnym nadrukiem czy S52 z uszkodzonym RAM i błędem w ID, od samego wymyślania kombinacji boli głowa.
    Czy ta sytuacja nie nadaje się także do forum o oszustwach, tego nie wiem?

    Takich przykładów może być wiele, np. z deklarowaną wydajnością portów w różnych mikrosterownikach, czasach minimalnego resetu, wartościach elementów zewnętrznych itp. podawanych w oryginalnych dokumentacjach. Przytoczyłem najbardziej drastyczne i psujące krew.

    Jeszcze raz zachęcam do dzielenia się takimi przykładami, na pierwszy rzut oka z bezsensownymi objawami „na pewno musi działać i nie chce”, może nam wszystkim to ułatwić pracę, hobby lub zabawę w mikrosterowniki.
    Lepiej zapobiegać niż leczyć !

    Pozdrawiam Kolegów i przepraszam, że się trochę rozpisałem.

    0 2
  • #2 18 Lut 2004 22:09
    slawko_k
    Poziom 33  

    1. to jest chyba opisane w pdf'ie.

    0
  • #3 18 Lut 2004 22:19
    radek.kaba
    Poziom 14  

    Tak problem 1) jest opisany w erracie, ale zanim ją zmnalazłem zastosowałem offset i tak zostało.

    0