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 ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania?

Samuraj 11 Cze 2005 22:02 7005 15
REKLAMA
  • #1 1570037
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Jak ustawić te diabelskie bity ??
    Nie chcę zwali procka, bo na następny będę czekać do następnego tygodnia a praca goni.
    Według pdf'a włączony jest wewnętrzny generator i to by się zgadzało, bo można procesor programować bez kwarcu, ale już to, co powinno być ustawione według tego pdf'a niestety się nie zgadza.
    Podrzucam scren (ustawienia fabryczne) z CodeVision, jak widać wszystkie są ustawione, na 1 czyli nie zaprogramowane. Które ustawić i w jakiej kolejność, aby nie stracić programowania szeregowego?
    Ma kwarc 8MHz według dokumentacji wynika ze powinienem ustawić CKOPT na 1 oraz CKSEL3..1 na 1 i tak chyba jest ale to przeczy temu co jest powyżej
    A tak na marginesie to przydał by sie jakis dokładny manula dla topornych :) z opisem który do czego i jak ustawic bo w każdym programie jest inaczej. W pony prog pokazuje ze wszystkie nie zahaczone.
    Załączniki:
    • Jak ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania? Image4.jpg (76.02 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #3 1570156
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Wygląda na to samo
    Pod warunkiem ze zachaczone znaczą nie zaprogramowane czyli 1
    Na próbe zaprogramowałem S8535C i widac ze zmienia sie wartośc, widac to w ISP Programer jak i w CodeVision. Czyli procek jeszczeżyje tylko sie dziwnie jakos zachowuje.
    Zauważyłem cos jeszcze: programuje procka dowolnym wsadem odczytuje i jest róznica z tym co zaprogramowałem czyli coś nie tak. Co pozmieniac aby działał jak należy ?
    Dodam ze mam w domu jeszcze procka 90s8535 i on działa w płytce jak trzeba, tak więc wykluczam uszkodzony programator jak i bład w połaczeniach.
    Załączniki:
    • Jak ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania? Image1.jpg (45.63 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • REKLAMA
  • #5 1570236
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 619
    Czyli wychodziło by że mam tak ustawione, przestawilem tylko CKOPT na 0, niestety nic to ie dało. Dalej chodzi sobie na wewnętrznym i zachowuje sie jak che. Ma ktoś jeszcze pomysły ??
  • #6 1571762
    tajwoj
    Poziom 26  
    Posty: 560
    Pomógł: 106
    Ocena: 102
    Hej,
    Może to coś Ci pomoże. Odczyt PonyProg'a z mojej ATmega8535 pracującej na kwarcu 8MHz.
    Pozdrowienia
    Czy masz WinAVR?
    Załączniki:
    • Jak ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania? atm8535_kwarc.png (10.09 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 1572186
    waski78
    Poziom 20  
    Posty: 398
    Pomógł: 26
    Ocena: 89
    Skoro juz jesteśmy przy tym temacie to ja mam jeszcze jedno pytanko. Czy można w jakiś sposób przestawić atmege8 z wewnetrznego generatora na ZEWNĘTRZNY kwarc za pomocą programatora ze strony http://www.patron.net.pl/AVRintropl.htm i przy pomocy WinAVR ? Jeśli tak to jak ?
  • REKLAMA
  • #9 1572495
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Do tego służa bity CKSEL0..3 i robi się to programatorem a nie WinAVR, bo to jest właśnie kompilator.
  • #10 1576102
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Moze nie do konca na temat ale zwiazany z fuse bits

    Potrzebowalem ukladu ktory ma sporo we/wy i na forum polecono mi atmege. wiec wybralem atmega16. wczesniej do moich skromnych potrzeb wystarczal 89c2051. ale ten uklad mnie draznil :)
    Oczywiscie nie obylo sie z zamieszaniem fusami. odpalilem sobie kolejny zciagniety program i to byl ISP Programer. W ustawieniach FUSE AND LOCK BITS pomieszalem cos na szybko i zamiast wyjsc nacisnalem prog.
    Efekt wiadomy :)

    Ale nie o tym ... Moze to sie komus przyda lub moze to co zrobilem nie powinno miec odzwierciedlenia w praktyce ale u mnie pomoglo.

    Wyczytalem na 265 stronie pdfa ze do programowania rownoleglego potrzebne jest taktowanie zewnetrzne. jezeli takowego nie ma jest procedura ustawiania takiego trybu.
    Wiedz polaczylem ze soba PAGEL+XA1+XA0+BS1+GND
    Nastepnie wmiare jednoczesnie podlaczylem GND, 5V i 12V na RESET.
    Wiem bym byl niezly jak bym odmierzyl 100 mikrosekund :)
    Wiec pomieszalem jeszcze tak kilka razy i rozlaczajac przenioslem reset na GND.
    Taktowanie zrobilem programowo na porcie drukarki w drugim kompie
    i Atmel zyje. SKSEL 0-3 ustawione na 0b0000.
  • #11 1576976
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    sivex, więcej tego nie rób w domu, to co tu napisałeś, grozi uszkodzeniem zasilania i mikrokontrolera. Kompletnie nie zrozumiałeś tego, co jest napisane w pdf-ie. Punkt 4 algorytmu programowania awaryjnego ze strony 265 doc2466.pdf (programowanie fusebit) jest wykonalny tylko programatorem równoległym... CKSEL powinny być ustawione na 1111, jeżeli masz ochotę na zewnętrzny kwarc. 0000 to ustawienia na zewnetrzny generator.
  • #12 1578845
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Cytat:
    sivex, więcej tego nie rób w domu, to co tu napisałeś, grozi uszkodzeniem zasilania i mikrokontrolera.


    A co mozna zrobic z atmelem ktory zostal biedny przeznaczony na testy, niewiadomo co zostalo ustawione, zreszta pelno jest porad z wymyslnymi generatorami lutowanymi na "pajeczyne" i wydaje sie koledze ze one w rekach rozgrzanych pionierow programowania mikrokontrolerow nie prowadza do uszkodzenia wszystkiego co na okolo? :)

    Cytat:
    Punkt 4 algorytmu programowania awaryjnego ze strony 265 doc2466.pdf (programowanie fusebit) jest wykonalny tylko programatorem równoległym... CKSEL powinny być ustawione na 1111, jeżeli masz ochotę na zewnętrzny kwarc. 0000 to ustawienia na zewnetrzny generator.


    moze mamy inne pdfy?

    u mnie jest tak:
    Note, if External Crystal or External RC configuration is selected, it may not be possible
    to apply qualified XTAL1 pulses. In such cases, the following algorithm should be
    followed:


    ..i operacja ta ustawia bity na 0000 wiec takt zegarowy zreszta nie dziwne bo to programator podaje sobie impulsy na xtal1 tak jak mu jest potrzeba. zobacz chociazby sekwencje programowania. wiec nie jest to wyjscie awaryjne tylko ustawienie potrzebne do programowania. tu ja zabawilem sie w programator i co wazne atmega smiga jak zlota

    pozdrawiam
  • #13 1580114
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    sivex napisał:
    ..i operacja ta ustawia bity na 0000
    "Re-program the fuses" nie oznacza że się samo zaprogramuje... Aby zaprogramować jeden bajt fusebitów trzeba wykonać sekwencję rozkazu, adresową (BS1:BS2), danych (z ustawieniami fusebitów) i wysłać impuls programujący (s.269). Jeśli zrobiłeś to wszystko ręcznie, to jestem pewien podziwu... :D "External Clock" oznacza zegar zewnętrzny generatora przy ustawieniach 0000, ale jednak najczęściej używaną konfiguracją jest zewnętrzny kwarc, któremu odpowiada 1111... Polecam lekturę pdf-a od strony 23 do 29 w temacie ustawień fusebitów zegara systemowego. Datasheet jest ten sam, akurat w moim przypadku przerabiałem to bardzo dokładnie, w wyniku czego mam teraz przed nosem własnej konstrukcji programator równoległy do AVR, jak najbardziej sterowany z LPT w trybie EPP... ;)
    --
    Pozdrawiam, Daniel
  • Pomocny post
    #14 1601788
    ludas
    Poziom 13  
    Posty: 71
    Pomógł: 7
    Ocena: 1
    Samuraj- mam atmega8-16PI i programowałem go w CodeVisionAVR, udało mi się włączyć obsługę zewnętrznego oscylatora.
    Fuse bity ustawiłem jak na rysunku 1. Potem kliknąłem:
    1. Program\ Erase Chip
    2. Program\Flash
    3. Program\Fuse Bit(s)

    i wszystko działa na 8MHz.
    (Rys.2 przedstawia wynik "Read\Fuse Bits" po wszystkim)
    Załączniki:
    • Jak ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania? 1.JPG (48.45 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Jak ustawić fuse bity w ATmega z kwarcem 8MHz bez utraty programowania? 2.JPG (10.72 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #16 1602112
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    ATmega8 ma tylko inny bit na 7 bicie Fuse High Byte - RSTDISBL(który zaprogramowany - =0 uziemia ISP) - zamiast S8535C, reszta jest identycznie.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy prawidłowego ustawienia fuse bitów w mikrokontrolerze ATmega (m.in. ATmega8535, ATmega8) pracującym z zewnętrznym kwarcem 8 MHz, bez utraty możliwości programowania szeregowego ISP. Problemem jest niezgodność odczytanych wartości fuse bitów z dokumentacją oraz obawy przed uszkodzeniem mikrokontrolera. Wskazano, że fuse bity CKSEL0..3 oraz CKOPT odpowiadają za wybór źródła taktowania i należy je ustawić programatorem ISP, a nie kompilatorem WinAVR. Zalecane jest wykonanie najpierw "Erase Chip" (kasowanie pamięci) przed programowaniem fuse bitów, aby uniknąć blokady programowania (lock bits). Dla zewnętrznego kwarcu typowe ustawienia fuse bitów to CKSEL3..0 = 1111, a CKOPT włączony (1). W ATmega8 różni się tylko bit RSTDISBL w Fuse High Byte. Praktyczne wskazówki obejmują kolejność programowania: najpierw kasowanie, potem programowanie pamięci flash, a na końcu fuse bitów. Podkreślono konieczność korzystania z dokumentacji datasheet i manuali, gdyż różne programatory i środowiska (CodeVisionAVR, PonyProg, ISP Programmer) mogą inaczej prezentować stan fuse bitów. Wspomniano także o ryzyku uszkodzenia mikrokontrolera przy nieprawidłowym programowaniu fuse bitów i konieczności stosowania programatora równoległego do niektórych procedur awaryjnych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA