logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega88] Ustawianie częstotliwości taktowania - fusebity

Marek_Gorecki 05 Wrz 2012 18:03 2883 13
  • #1 11281627
    Marek_Gorecki
    Poziom 16  
    Witam;

    Mam procesor ATMEGA88. Procesor ten taktuje kwarcem 8Mhz. W programie zrobiłem dzielnik częstotliwości przez 8. Uzyskałem więc częstotliwość 1MHz.
    Ale nie do końca jestem pewien co do dwóch kwestii:

    1) czy Fusebity CKSEL mam ustawić dla kwarca 8MHZ, czy dla częstotliwości już podzielonej a więc 1MHz ?

    2) czy lepiej jeśli chodzi o pobór prądu jest dać kwarc dużej częstotliwości ,a następnie go mocno podzielić ,czy dać mały kwarc bez podziału? Czy też może jest to obojętne?
  • #2 11281643
    mickpr
    Poziom 39  
    Marek_Gorecki napisał:
    W programie zrobiłem dzielnik częstotliwości przez 8. Uzyskałem więc częstotliwość 1MHz.

    Chyba chodziło ci o ustawienia fusebitów.

    Zastanawiam się po co ci kwarc dla 8MHz (lub 1MHz) - skoro te częstotliwości bez problemu ustawisz na wewnętrznym generatorze RC.
    Domyślnie Atmega 88 jest ustawiona na 8MHz + włączony bit CKDIV (podział przez 8) - co daje właśnie częstotliwość zegara 1MHz.

    Co do pozostałych ustawień fusebitów , to temat wielokrotnie opisany na elektrodzie (i nie tylko) - wystarczy poszukać.
  • #3 11281798
    Marek_Gorecki
    Poziom 16  
    Uzywam rsa wiec nie moge zastosowac wewnetrznego generatora Rc . No wiec ponawiam pytanie , czy fusebity Cksel ustawia sie ze wzgledu na czestotliwosc przed czy po podziale?
  • #4 11282261
    mirekk36
    Poziom 42  
    Fusebit CKDIV8 - ZAWSZE podzieli ci KAŻDĄ częstotliwość taktowania jaką ustawisz fusebitami CKSEL, przez 8 .... rozumiesz?

    Dlatego fabrycznie miałeś ten procek ustawiony na wewn. oscylator RC = 8MHz i włączony CKDIV8 - dzięki czemu pracował domyślnie z taktowaniem 1MHz

    A kto ci powiedział że jak korzystasz z wewn. oscylatora to nie możesz skorzystać z RS232 ? to bzdura - spokojnie można skorzystać. Tylko trzeba wiedzieć jakie są ograniczenia. Np jeśli korzystasz do testów w temperaturze pokojowej 25st C +/- 5st C to żaden - nawet najmniejszy kłopot ;)

    ale jeśli miałbyś docelowo robić urządzenie pracujące na zewnątrz czy w inny sposób narażone na zewnętrzne zmiany temperatury w dużym zakresie czy też miałbyś go zasilać nie +5V a np 3,3V - to wtedy na pewno warto zastanowić się nad zewnętrznym rezonatorem kwarcowym.
  • #5 11282386
    Marek_Gorecki
    Poziom 16  
    Panowie - chyba coś źle tłumaczę.
    Spróbuje raz jeszcze.
    W pdfie od ATmega88 mam podane ustawienia CKSEL, które są uzależnione od częstotliwości kwarcu.
    Używam kwarca 8MHz ale, programowo poprzez rejestr CLKPR dzielę tą częstotliwość przez 8 , także mam jakoby 1Mhz.
    No i tu jest proste pytanie, jak mam ustawić CKSEL? Czy mają być ustawione na taktowanie 8 Mhz czy 1 Mhz?



    Jeśli chodzi o generator wewnętrzny RC to nie mogę go zastosować ,ponieważ układ musi pracować w różnych temperaturach (centralka alarmowa).
  • #6 11282423
    mickpr
    Poziom 39  
    Marek_Gorecki napisał:
    Jeśli chodzi o generator wewnętrzny RC to nie mogę go zastosować ,ponieważ układ musi pracować w różnych temperaturach (centralka alarmowa).

    To najciekawszy powód stosowania kwarcu, jaki słyszałem.
    Nie drwię, ale co to ma do rzeczy?

    Cytat:
    The CKDIV8 fuse determines the initial value of the CLKPS bits. If CKDIV8 is unprogrammed, the CLKPS bits will be reset to “0000”. If CKDIV8 is programmed, CLKPS bits are reset to “0011”, giving a division factor of eight at start up. This feature should be used if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. Note that any value can be written to the CLKPS bits regardless of the CKDIV8 Fuse setting. The Application software must ensure that a sufficient division factor is chosen if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. The device is shipped with the CKDIV8 fuse programmed.
  • #7 11282443
    Marek_Gorecki
    Poziom 16  
    [quote="mickpr"]
    Marek_Gorecki napisał:
    Jeśli chodzi o generator wewnętrzny RC to nie mogę go zastosować ,ponieważ układ musi pracować w różnych temperaturach (centralka alarmowa).

    To najciekawszy powód stosowania kwarcu, jaki słyszałem.
    Nie drwię, ale co to ma do rzeczy?[/quote

    no to spróbuj jak wyglada transmisja po Rsie w temperaturze - 20stopni ,albo +40.
    Ja już przerabiałem ten temat.
  • #8 11282489
    mickpr
    Poziom 39  
    Wg cytowanego przeze mnie fragmentu datasheet'a ustawienie CLKDIV8 określa tylko początkowy dzielnik, który może być zmieniony odpowiednim zapisaniem rejestru.
    Tak doczytałem - nie sprawdzałem.
  • #9 11282513
    Marek_Gorecki
    Poziom 16  
    mickpr napisał:
    Wg cytowanego przeze mnie fragmentu datasheet'a ustawienie CLKDIV8 określa tylko początkowy dzielnik, który może być zmieniony odpowiednim zapisaniem rejestru.
    Tak doczytałem - nie sprawdzałem.


    kolego - nie rozumiesz o co mi chodzi.

    Moje pytanie brzmi - jak mam ustawić CKSEL? Jeśli używam kwarca 8MHz a programowo go dzielę przez 8.
    CKSEL ma być 101 dla 1 Mhz, ale 111 dla 8Mhz. Które ustawienie jest prawdziwe?
  • #10 11282526
    mickpr
    Poziom 39  
    Dzielenie następuje PO ustawieniach CKSEL, jeśli o to ci chodzi.
    CKSEL wybierasz częstotliwość kwarcu, zaś CKDIV8 / preskalerem CLKPS sobie ją dzielisz - ustalając częstotliwość Atmegi.
  • #11 11283460
    Marek_Gorecki
    Poziom 16  
    Czyli fusy CKSEL mam ustawić na 8Mhz?
  • Pomocny post
    #12 11283516
    Konto nie istnieje
    Poziom 1  
  • #13 11283523
    Marek_Gorecki
    Poziom 16  
    atom1477 napisał:
    Tak.
    CKSEL dotyczy ustawień oscylatora. A że sygnał z tego oscylatora później będzie dzielony przez 8 to już tego oscylatora nie obchodzi.


    na taką odpowiedź czekałem.
    Dzięki
  • #14 11283569
    mirekk36
    Poziom 42  
    mirekk36 napisał:
    Fusebit CKDIV8 - ZAWSZE podzieli ci KAŻDĄ częstotliwość taktowania jaką ustawisz fusebitami CKSEL, przez 8 .... rozumiesz?


    Wystarczyło czytać uważniej bo od samego początku (zresztą nie tylko ja) pisałem właśnie o tym ;)
REKLAMA