Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega8 - Początkujący - 1sze potknięcie (fuse bity)

Ciemnosci Hetman 09 Jul 2013 03:00 1530 6
Computer Controls
  • #1
    Ciemnosci Hetman
    Level 9  
    Bry,

    to mój pierwszy temat, więc proszę o wyrozumiałość - problem przedstawia się następująco. Otóż zacząłem bawić się w programowanie uC(to już pierwszy z problemów) Mam gotowy programator USBasp(kupiony), adapter jakoś tam parszywie przylutowany do płytki uniwersalnej, no i uC - ATmega 8. Środowisko programistyczne to WIN AVR, AVRdude z Burn-O-Matem, ale dość przechwałek, przechodzę do sedna.

    Otóż, dokładnie wg instrukcji napisałem i skompilowałem program z zapewne dobrze znanej książki P.Borkowskiego AVR & ARM. Po paru nieudanych próbach wkońcu dioda się zaświeciła, ale stwierdziłem, że potrzebuję jeszcze zmienić fuse bity(ponieważ tak w książce jest napisane). Jednak po tym programator bynajmniej przestał odpowiadać, pokazuje USBasp, ale nie wykrywa uC. Adapter na pewno jest sprawny (sprawdziłem połączenia z 50 razy, zanim odkryłem, że to wina fuse bitów).Próbowałem też zaprogramować przez asemblera i wgrać za pomocą PonyProg, co spełzło na niczym. W książce dopiero po fakcie przeczytałem,jak zestresowany maturzysta, że to w książce (o fuse bitach) tyczyło się programowania własnego programatora USBasp.Na elektrodzie coś o nich znalazłem, ale jako początkujący nie mam o tym zbytnio pojęcia.

    Ustawienia, w którym został zaprogramowany uC po raz pierwszy(domyślne ustawienia avrdude): SPIEN, BOOTSZ1, BOOTSZ0, SUT0, CKSEL3,CKSEL2,CKSEL1 na 0, reszta na 1
    po raz 2gi(przyrównując do ustawień domyślnych): CKOPT na 0, CKSEL3, CKSEL2,CKSEL1 na 1, a reszta bez zmian

    Moje pytanie do bardziej zaawansowanych (+3 gratis).
    1. Czy to, że w ogóle programator nie wykrywa uC, to na pewno wina fuse bitów ? (czy moja diagnoza jest słuszna)
    2. Czy jest jeszcze możliwość "odratowania" ATmegi ?
    3. Czy nie będzie problemów programowaniem w przyszłości (coś było o nieodwracalnej zmianie dostępu do pamięci procka)
    4. Czy programator mógł ulec uszkodzeniu, w sumie tam też jest uC (też mi się wydaje to pytanie głupie, ale wolę się upewnić)?
  • Computer Controls
  • #2
    Steryd3
    Level 33  
    Całość o fusebitach jest dobrze opisana w książce Baranowskiego ale i spokojnie w nocie ATmega8 o tym przeczytasz. Przy kombinacji w bitach konfiguracyjnych mogą przytrafić się z tego co pamiętam dwie przykrości które to mogą uniemożliwić programowanie po ISP. Pierwsza a nich to zmiana ustawień źródła sygnału zegarowego taktującego mikrokontroler na taki który aktualnie nie jest w układzie zaimplementowany-np.na kwarc którego nie masz. Rada na to jest prosta- trzeba zaimplementować w układzie takie źródło które jest ustawione. Kolejną przykrością która może się przytrafić to wyłączenie możliwości programowania po ISP- tu już sprawa jest bardziej przekichana bo trzeba posiadać programator który programuje AVRy równolegle. Tak więc wszystko jest do okiełznania- jeżeli oczywiście to sprawa Fuse bitów i dysponuje się odpowiednimi środkami. Zazwyczaj jednak koszt zakupu programatora równoległego nie ma sensu( bo specjalnie do niczego innego on się nam nie przyda chyba, że otwierał byś wielkoseryjną produkcję ale i wtedy to dyskusyjne) i lepiej kupić kolejną ATmega8 a starą spisać na straty ( za pomocą wiertarki można np. zrobić efektowny breloczek).
  • Computer Controls
  • #3
    dondu
    Moderator on vacation ...
    Steryd3 wrote:
    ... lepiej kupić kolejną ATmega8 a starą spisać na straty ( za pomocą wiertarki można np. zrobić efektowny breloczek).

    A może w celu poszerzania swojej wiedzy autor powinien jednak nauczyć się jak radzić sobie z takim problemem?
    W końcu może go to spotkać jeszcze nie raz - ma za każdym razem robić breloczek?

    Dla autora tematu: http://mikrokontrolery.blogspot.com/2011/04/zablokowany-mikrokontroler-atmel.html

    Dodatkowo zobacz jeszcze inne przyczyny, bo może problem nie leży w fusbitach:
    http://mikrokontrolery.blogspot.com/2011/04/problemy-z-zaprogramowaniem.html
  • #4
    piotrva
    VIP Meritorious for electroda.pl
    Steryd3 wrote:
    lepiej kupić kolejną ATmega8 a starą spisać na straty

    I mieć potem efektowny składzik sprawnych procesorów wartych kilka stówek ;) Pozdrawiam.
    Breloczki to można sobie robić ze spalonych procesorów, a lepiej ze starych pamięci EPROM z okienkiem :D

    Ogólnie dondu napisał chyba na ten temat wszystko, ze swojej strony polecam (jeśli nie mamy jeszcze narzędzi do radzenia sobie z błędnymi wartościami fusebtów) rozpoczęcie prób odblokowywania od podłączenia zewnętrznego sygnału zegarowego. Można wykorzystać NE555, inny procesor zmieniający stan pinu w pętli bez opóźnień lub inny generator.
    Jeśli to nie pomoże (a daje sobie radę z tego co testowałem na atmega168 ze wszystkimi opcjami zegara) to wtedy warto złożyć fusebit doctora.
  • #5
    Steryd3
    Level 33  
    Nie twierdzę, że kolega ma tworzyć fabrykę breloczków - moją intencją było stwierdzenie, iż bardziej uzasadnioną ekonomicznie opcją jest zakup nowego ATmega8 niż zakup programatora. Jeżeli natomiast problemem jest źródło sygnału zegarowego -tu istotnie można się pobawić. Czasem warto wydać 4 zł, uświadomić sobie istniejące zagrożenia i iść dalej prosto do celu a nie bawić się godzinami w lepienie układu "na pająka" który pewnie nie przyda się już nigdy. Ma to niewątpliwie walory edukacyjne. A poza tym zgadzam się z kolegami.
  • #6
    piotrva
    VIP Meritorious for electroda.pl
    IMHO można kupić nową atmegę8, garść elementów, które i tak przydadzą się w warsztacie początkującego i zmontować sobie na płytce stykowej fusebit doctora - nic nie tracimy a mamy 2 procesory ;)
  • #7
    Ciemnosci Hetman
    Level 9  
    O, dziękuję serdecznie za tak wyczerpujące odpowiedzi :) temat uważam za wyczerpany i do zamknięcia