Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zbyt wolne działanie mikrokontrolera

27 Lip 2009 11:42 1220 4
  • #1 27 Lip 2009 11:42
    285037
    Usunięty  
  • Pomocny post
    #2 27 Lip 2009 11:46
    Usunięty
  • Pomocny post
    #3 27 Lip 2009 11:47
    kred
    Poziom 19  

    Skopiuj fuse bity z tego szybciej dzialajacego procka i powinno byc ok.

    0
  • Pomocny post
    #4 27 Lip 2009 14:57
    mirley
    Poziom 17  

    Zależnie od tego czy chcesz mieć wewnętrzny oscylator czy zewnętrzny kwarc to fusebity będą inne. Dobrym zwyczajem jest deklarowanie na początku typu mikrokontrolera i szybkości oscylatora(lub kwarcu):

    Code:

    $regfile = "attiny2313.dat"
    $crystal = 16000000


    Dodaj te linijki na początku aby być pewnym że kompilator wie jaka jest szybkość oscylatora. To co wpiszesz tutaj musi się zgadzać z tym co jest rzeczywiście w uC aby wszystko działało jak należy.

    Reszta problemów to w 100% fusebity, dzielnik CKDIV prawdopodobnie jest zaprogramowany. poniżej masz cały opis ATTINY2313:

    1. ATtiny 2313

    Ustawienia fabryczne
    Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATtiny2313 są bity CKSEL3..0 = "0010", SUT1..0 = "10" oraz CKDIV8 = "0". Oznacza to że fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow" pracuje na wewnętrznym oscylatorze RC z najdłuższym czasem startu i dzieleniem częstotliwości przez 8, co daje w efekcie taktowanie 1MHz.

    Zewnętrzny Rezonator Kwarcowy 0,9 - 16MHz
    Gdy chcemy używać zewnętrznego rezonatora kwarcowego to musimy przestawić bity CKSEL3..1 w zależności od jego częstotliwości. Dla częstotliwości 0,9-3MHz bity CKSEL3..1 powinny mieć wartość "101", dla 3-8MHz powinno być CKSEL3..1 = "110" a dla częstotliwości większych od 8MHz bity CKSEL3..1 mają być ustawione na "111".
    W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu mikrokontrolera do normalnej pracy po resecie lub trybie Power-Down itp. Najczęściej stosowane są trzy tryby. Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 = "10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające powoli narasta.

    Wewnętrzny oscylator 4/8MHz
    Wewnętrzny oscylator o częstotliwości 4MHz uruchamiamy ustawiając bity CKSEL3..0 rowne "0010" lub "0011", dla częstotliwości 8MHz zgodnie z kartą katalogową powinno to być "0100" lub "0101". Czas powrotu mikrokontrolera do normalnej pracy po resecie lub trybie Power-Down itp. ustawiamy bitami SUT1..0. Wartość SUT1..0 = "00" stosujemy gdy aktywny jest układ BOD, dla szybko narastającego napięcia zasilającego wartość SUT1..0 powinna być rowna "01" a dla wolno narastającego zasilania SUT1..0 = "10"

    Dzielenie częstotliwości zegara
    Za dzielenie częstotliwości zegara przez 8 odpowiada bit CKDIV8, jest on najczęstsza przyczyna problemow z działaniem mikrokontrolera. Dzielenie jest aktywne jeśli CKDIV8 = "0"

    To samo też znajdziesz tutaj: http://mirley.firlej.org/fuse_bity_w_mikrokontrolerach_avr

    0
  • #5 27 Lip 2009 15:48
    285037
    Usunięty  
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo