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ć fusebity dla zewnętrznego kwarcu 8MHz w Atmega8?

francu 27 Mar 2006 19:02 17393 17
REKLAMA
  • #1 2464020
    francu
    Poziom 16  
    Posty: 242
    Pomógł: 2
    Ocena: 1
    Witam.

    Wykonałem mały zestaw uruchomieniowy z procem atmega8 z kwarcem 8MHz. Kwarc nie jest chyba jednak "widziany" przez proca. Pod ikoną Run programmer->Manual program w Bascom jest zakładka Fuse and Lock bits. Mogę tam ustawić rodzaj i częstotliwość oscylatora. Standardowo Fusebit 987 jest ustawiony jako 1MHZ RC.

    Chcąc korzystać z zewnętrznego kwarcu 8MHz powinienem ustawić "1110:1110 external XTAL" czy "1111:1111 external XTAL" ?? Później chciałbym korzystać z kwarcu 10MHz. Jakie ustawienie będzie pasować??

    Mogę to ustawić gdzieś na stałe w Bascomie czy podczas każdego programowania??

    Pozdrawiam.
  • REKLAMA
  • Pomocny post
    #2 2464276
    maly35
    Poziom 14  
    Posty: 91
    Pomógł: 6
    Ocena: 2
    Jak raz ustawisz fuse bits to dopóki ich nie zmienisz pozostaną takie jak ustawiłeś (programowanie procesora ich nie zmienia). Jak je poustawiać znajdziesz tutaj (fajnie bo graficznie pokazana na PonyProg):

    http://www.tkdami.net/~voytek/programy/programy.html

    Jest to dla ATmega16 ale dla ATmega8 jest to samo. Lepiej o nich trochę poczytać bo jak się nakombinuje to potem może procek niewystartować:cry:
  • #4 2465094
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    oprucz tego proponuje włączyć opcje "FULL AMPLITUDE" to jest jeden z fuse bitów(niestety niepamiętam jak programator bascoma dokładnie go nazywa). poprawia on stabilnośćprocka na wyższych czestotliwościach, kosztem zwiększonego poboru prądu.
    dla 10Mhz nie jest to mzoę konieczne ale dla 16 to już zawsze chba trzeba.
  • Pomocny post
    #5 2465213
    ArtXs
    Poziom 24  
    Posty: 468
    Pomógł: 93
    Ocena: 111
    NAJPIERW PRZECZYTAĆ A PÓŻNIEJ ROBIĆ - NIE ODWROTNIE.

    Aby dokonać zmiany ustawienia kwarcu z wewnętrznego RC 1 MHz na zewnętrzny ( np.8MHz). Trzeba przejść do programowania ręcznego procesora MANUAL PROGRAM i wybrać zakładkę LOCK AND FUSE BITS. UWAGA w razie pomyłki można nie odpalić procesora!!!

    ATmega8

    CKSEL[3..0] - Fusebits opcję Fusebit A987 - 0001:Internal RC oscylator 1 MHz
    Zmienić ustawienia na – 1111:1111 external XTAL.
    Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [WRITE FS].

    CKOPT - Fusebits High opcję Fusebit H – 1:CKOPT 1
    Zmienić ustawienia na – 0:CKOPT 0
    Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [Write FSH].
  • REKLAMA
  • #6 2466340
    francu
    Poziom 16  
    Posty: 242
    Pomógł: 2
    Ocena: 1
    No to coś się nie zgadza.

    Z linka podanego przez maly35 wynika, że jeśli ustawię CKOPT=1 i CKSEL[0...3]=1111 to mogę podłączyć kwarc max 8MHz. Jeśli ustawię CKOPT=0 to mógłbym podłączyć kwarc o wyższej częstotliwości.

    Z postu ArtXs wynika co innego.

    Jak to naprawdę jest??
  • #7 2466435
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    CKSEL[3..0] = 1111
    to jest pewne

    a co do CKOPT to w nocie katalogowej piszą:
    Cytat:
    For resonators, the maximum frequency is 8 MHz with CKOPT unprogrammed and 16 MHz with CKOPT programmed

    programed to znaczy 0
    unprogramed znaczy 1

    czyli dla 10Mhz CKOPT=0
  • REKLAMA
  • #8 2466486
    francu
    Poziom 16  
    Posty: 242
    Pomógł: 2
    Ocena: 1
    To znalazłem.

    Właśnie w bascomie ustawiłe fusebity i proc się zblokował:/
    CKSEL ustawiłem na 1111, CKOPT był wcześniej na 1 i nie zmieniałem.

    Teraz nie chce czytać proca ani programować:(

    Ps.
    Podobno mozna odblokować programatorem równoległym?? Co to takiego?? Ma ktoś schemat??
  • #9 2466499
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    sprawdz połączenia kwarcu z uP. kwarc musi być blisko procka i musą być 2 kondensatory do masy (z zakresu 22pF-33pF).

    jaki masz programator ??? niektóre ISP mają opory przy duzych czestotliwościach kwarcu.

    ADD:
    jeśli zmieniałeś tylko fusebity od kwarcu to wystarczy zewnętrzne żródło sygnału zegarowego np inny procek z zewnętrznym kwarcem lub generator.
    sygnał podaje sie na Xtal1.

    ja zawsze łaczyem dwa procki.
    Xtal2(sprawnego procka) >> Xtal1(zablokowany procek)
    sprawny procek musi miec podpięty kwarc i go wykozystywać a zablokowany musi byc odpięty kwarc.
    połączenie mozna zrobić przez jakis mały kondensator lub rezystor (ja zawsze łączyłem bezpośrednio).
    oba procki muszą być zasilane ze wspólnego zasialnia i przewód mostkujący musi byc jak najkrótszy
  • #10 2467308
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    ArtXs napisał:
    CKOPT - Fusebits High opcję Fusebit H – 1:CKOPT 1
    Zmienić ustawienia na – 0:CKOPT 0
    Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [Write FSH].

    Zrobiłem dokładnie tak jak pisze ArtXs i wszystko ślicznie śmiga (podłączyłem 8MHz, nie wiem jak z kwarcami powyżej tej częstotliwości).
    Mam tylko pytanie odnośnie tego co zacytowałem powyżej. Co ustawia ta opcja i czy konieczna jest ta zmiana? Na stronie Bascoma jest tutorial jak ustawiać zewnętrzy kwarc i tam zmieniane jest tylko ustawienie Fusebit A987 na same jedynki. Z tym, że z wiadomości francu wynika, że bez tej zmiany kontroler sie blokuje.
    francu napisał:
    To znalazłem.
    Właśnie w bascomie ustawiłe fusebity i procesor się zblokował:/
    CKSEL ustawiłem na 1111, CKOPT był wcześniej na 1 i nie zmieniałem.
    Teraz nie chce czytać proca ani programowaćSad
    Ps.
    Podobno mozna odblokować programatorem równoległym?? Co to takiego?? Ma ktoś schemat??

    Ja zablokowałem niedawno w identyczny sposób dwie ATmegi8.
    W dokumentacji do ATmegi8 można znaleźć układzik do odblokowania. W załączniku masz ten układ wraz z wartościami kondensatora i rezystora, które u mnie zadziałały. Wartość rezystora musisz sobie dobrać doświadczalnie, u mnie z braku rezystora ok. 1k połączyłem dwa o wartościach jak na rysunku :)
    Powodzenia.
    Załączniki:
    • Jak ustawić fusebity dla zewnętrznego kwarcu 8MHz w Atmega8? RC.png (11.63 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #11 2569921
    krzychu-gsxr
    Poziom 10  
    Posty: 41
    Witam wszystkich ja mam identyczny problem z fusami chciałem zaprogramować w bascomie ATMEGE8L z rezonatorem 8MHz przestawiłem fuse na 1111:1111 i zapisałem po zaprogramowaniu weryfikacja nie powiodła sie.
    Teraz jak chce programować to wyświetla sie komunikat że nie można zidentyfikować mikrokontrolera może ktoś powie co zrobiłen źle? dzięki
  • #12 2569942
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Cześć
    Oprócz tego ustawienia:
    ArtXs napisał:
    CKSEL[3..0] - Fusebits opcję Fusebit A987 - 0001:Internal RC oscylator 1 MHz
    Zmienić ustawienia na – 1111:1111 external XTAL.
    Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [WRITE FS].

    ...czy zrobiłeś również to?
    ArtXs napisał:
    CKOPT - Fusebits High opcję Fusebit H – 1:CKOPT 1
    Zmienić ustawienia na – 0:CKOPT 0
    Po tej zmianie zatwierdzić ją przyciskając JEDEN RAZ przycisk po prawej stronie [Write FSH].


    Pamiętaj, że rezonator musi być podłączony w trakcie zmiany fusebitów!!

    Odblokować swoją ATmege możesz stosując układ RC, który narysowałem w poprzednim poście.

    Pozdrawiam.
  • #13 2576630
    krzychu-gsxr
    Poziom 10  
    Posty: 41
    dzięki 1ceman zmieniłem fusy tak jak pisałes i wszystko ruszyło pozdrawiam
  • #14 2934805
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    witam
    zmienilem ustawienia na – 1111:1111 external XTAL. raz na [WRITE FS]

    ale zapomnialem przestawic CKOPT - Fusebits High opcję Fusebit H – 1:CKOPT 1
    na – 0:CKOPT 0 i sie zablokopwac czy ta metoda pomoze ??
    bo jakos narazie nic, a jak odblokowac przez inny procek??

    jest udalo sie !!!!

    troszke inaczej to zrobilem do programatora dolaczylem kwarc zewnetzny 8MHz i kondensatory 27 pF i dziala :)
  • #15 6613908
    fiskusmati
    Użytkownik obserwowany
    Posty: 769
    Pomógł: 18
    Ocena: 25
    Ja zmieniam fucy w nowym procku tak jak pisaliscie ale jak zmienie i klikam to write fs potem write fsh to po zaprogramowainu procka ustawiani wracają do poprzedniego stanu i zeby w rzeczywistosci dac sekunde prockowi to musze pisac waitms 180 i mam sekunde :-)
  • #16 6614380
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Temat stary jak świat. Przykładowe ustawienie: External Crystal Resonator High Frequency CKSEL 1111 SUT 00. To jest ustawienie dla kwarcu 8MHz. Kla kwarcu powyżej 8MHz należy również zaprogramować CKOPT (CKOPT = 0).
  • #18 7002466
    fiskusmati
    Użytkownik obserwowany
    Posty: 769
    Pomógł: 18
    Ocena: 25
    Znów odnowie temat, po zmianie fuse bitów i podłączniu kwarcu 8mhz na lcd w obu liniach sa kwadraty, a przed zmianą były tylko w jednej linii. Przypominam ze procek jest nowy.


    Pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy ustawienia fusebitów w mikrokontrolerze Atmega8 dla pracy z zewnętrznym kwarcem 8 MHz oraz 10 MHz. Standardowo fusebity są ustawione na wewnętrzny oscylator RC 1 MHz (CKSEL=0001). Aby korzystać z zewnętrznego kwarcu, należy ustawić fusebity CKSEL na 1111 (external XTAL). Dla kwarcu 8 MHz zalecane jest ustawienie CKOPT=1, co ogranicza maksymalną częstotliwość do 8 MHz, natomiast dla kwarcu 10 MHz CKOPT powinno być ustawione na 0, co pozwala na wyższą częstotliwość i stabilniejszą pracę. Fusebity ustawia się w Bascomie w zakładce Manual Program -> Fuse and Lock bits i zapisuje przyciskiem WRITE FS (dla CKSEL) oraz WRITE FSH (dla CKOPT). Po jednokrotnym ustawieniu fusebitów pozostają one zapisane w mikrokontrolerze i nie zmieniają się przy kolejnych programowaniach.

Ważne jest, aby podczas zmiany fusebitów kwarc był podłączony i stabilny, a do kwarcu dołączone były kondensatory (22-33 pF) do masy. W przypadku błędnego ustawienia fusebitów mikrokontroler może się zablokować i nie odpowiadać na programator ISP. W takiej sytuacji można go odblokować stosując metodę podania zewnętrznego sygnału zegarowego na pin XTAL1, np. z innego mikrokontrolera lub generatora, lub używając programatora równoległego według schematu dostępnego w dokumentacji Atmega8.

Dodatkowo zaleca się włączenie opcji "FULL AMPLITUDE" (CKOPT=0) dla stabilnej pracy przy wyższych częstotliwościach, choć dla 8 MHz nie jest to konieczne. W Bascomie fusebity można ustawić na stałe lub przy każdym programowaniu, jednak po jednokrotnym zapisie pozostają one w mikrokontrolerze. Problemy z programowaniem i weryfikacją mogą wynikać z nieprawidłowego podłączenia kwarcu lub błędnych ustawień fusebitów.

Podsumowując, dla Atmega8 z kwarcem 8 MHz fusebity CKSEL=1111 i CKOPT=1, dla 10 MHz CKSEL=1111 i CKOPT=0. Fusebity ustawia się w Bascomie w Manual Program -> Fuse and Lock bits, a po błędach odblokowanie mikrokontrolera wymaga zewnętrznego sygnału zegarowego lub programatora równoległego.
REKLAMA