Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Częstotliwość oscylatora uC

Kubbaz 22 Wrz 2006 16:49 2661 8
  • #1 22 Wrz 2006 16:49
    Kubbaz
    Poziom 26  

    Witam

    Prosiłbym o wyjaśnienie poniższego fragmentu opisu działania oscylatora:

    Częstotliwość oscylatora uC

    Otóż: wewnętrzny oscylator procesora pracuje z częstotliwością 11059200Hz - to jest dość zrozumiałe - taki po prostu jest kwarc,ok - dalej.

    Dlaczego ta wartość (tj. 11059200) jest dzielona akurat przez liczbę 12 ??
    (chodzi coś o realną liczbę taktowania procesora) I czy zawsze jest to liczba 12 ?

    921600Hz - realna częstotliwość pracy uC
    .
    .
    .
    .
    .
    i potem cała seria jakichś dziwnych obliczeń w skutek czego otrzymujemy liczbę 4150 ;| .....
    Przyznam, że powyższe obliczenia są dość egzotyczne jak na razie - co mam nadzieje że z czasem minie :).

    Nieco sprostowania: po co mi to wszystko ....??

    Otóż znalazłem w "Elektroniku praktycznym" projekt Mikroprocesorowego wykrywacza metali AVT-5025 z uC AT89C2051 i BASCOMem na czele :), otóż rzecz krótką biorąc:

    1) nie kumam BASCOMa :), aczkolwiek 80% algorytmu sie domyślam ....
    i w związku z tym chcę napisać ten algorytm działania w C/C++

    2) nie chcę AT89C2051, bo już mam ATMEGA8 i to właśnie na ATMEGA8 chce odpalić ten projekt

    Poniżej dla ujęcia w/w fragmentu w większej całości - dokumentacja urządzenia.
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=1578947#1578947

    0 8
  • #2 22 Wrz 2006 17:00
    m8se
    Poziom 14  

    W uC serii '51 (czyli m.in. w AT89C2051) zegar jest wewnętrznie dzielony przez 12, tzn. jeden cykl maszynowy trwa 12 cykli zegarowych, podczas tych 12 cykli zegarowych wykonywane są czynności związane z pobieraniem danych z pamięci, operacjami na stosie, liczniku rozkazów etc.

    Liczba 12 jest tutaj charakterystyczna dla '51 (ale uwaga na klony, bo z nowymi bywa róznie:) ) ale w innych uC bywa inaczej, np. w AVRrze nie ma dzielenia wewnątrz układu i te obliczenia przy zastosowaniu atmegi8 są bezużyteczne i trzeba dokonać szerszej modyfikacji :)

    0
  • #5 01 Paź 2006 18:36
    Kubbaz
    Poziom 26  

    Tdv napisał:
    AVRy to zupełnie ninne uC niż '51 i w ich przypadku doboru wartości do tajmerów dokonuje się inaczej.

    używam uC ATMEGA8 (na kwarcu 8MHz)- czy mógłbyś powiedzieć jak się dobiera tą wartość to timer'a ?? - czy jest ona jakaś sztywna - stała - czy jest zależna od innych rzeczy ??

    0
  • #8 02 Paź 2006 03:36
    shg
    Specjalista techniki cyfrowej

    Cytat:
    Z obliczeń i z doświadczeń przeprowadzonych podczas symulacji programowej wynika, że na te operacje procesor "zużyje" 54 takty zegarowe


    A powiem że to bzdura.
    Zyżyje 54, 55 lub 56 cykli w zależności od tego jaka instrukcja była wykonywana w momencie wystąpienia przerwania (albo coś w tej okolicy, w każdym razie przerwanie może zostać opóźnione o 1, 2 lub 4 cykle), stąd działający na tej zasadzie pomiar czasu będzie niedokładny.

    Metoda paskudnie badziewna to była (jak i wiele innych programowych wynalazkow rodem z AVT).
    Na szczęście na AVR można to zrobić bardzo "elegancko" i co najważniejsze - dokładnie.
    Na końcu tego tematu:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=128587&highlight=
    masz konfigurację timera 1 w ATmega8 (i nie tylko) do generowania przerwań co 10ms.

    Żeby zmienić częstotliwość modyfikujesz wartość wpisywaną do rejestru OCR1A (16 bitów) i/lub preskaler (bity CSxx w rejestrze TCCR1B).

    0
  • #9 02 Paź 2006 07:44
    Tdv
    Poziom 33  

    Kubbaz napisał:

    gdy kliknę DOWNLOAD (obie opcje) przeglądarka FF pisze, że brak strony ...


    Nie sprawdzałem linka, jeżeli nie działa to zgłoś to adminowi ;-).

    0