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

atmega8 i częstotliwość

puntigamer 13 Lut 2009 16:42 2412 8
  • #1 6144938
    puntigamer
    Poziom 13  
    Witam
    Czytam, czytam i nie mogę wyczytać jasnych odpowiedzi na poniższe, ważne dla mnie pytania.
    1. Mam ATMegę8-16PU, która ma domyślnie ustawioną częstotliwość na 1MHz. Czy zmianę częstotliwości (na 2, 4 lub 8MHz) spowoduję ustawiając odpowiednio bity konfiguracyjne CKSEL? Pytam aby się upewnić.
    2. Jak do powyższego pytania odnosi się rejestr OSCCAL? czytam i nie do końca rozumiem.
    3. Czy po zmianie freq na wyższą niż 1MHz (czy wewn RC czy rezonatorem kwarcowym), będę mógł programować uC programatorem ISP? Chodzi o to, gdyż do programowania używa się wewnętrznego sygnału zegarowego.
    4. Rozumiem, że ATMega8 może pracować z częstotliwością 16MHz, ale czy tylko po podłączeniu zewnętrznego rezonatora np kwarcowego, czy da się to załatwić jakoś bitami konfiguracyjnymi przy użyciu wewnętrznego skalibrowanego układu RC?
    5. Chcę sterować 6-7 serwomechanizmami modelarskimi (wypełnienie 1 -2ms; co 20ms; PWM programowo, przerwania, liczniki; w C; i ostatnie pytanie czy najlepiej do tego użyć zewn. rezonatora kwarcowego 16MHz czy wystarczy wewnętrzny RC 8MHz? Chodzi o dokładność.

    Pytania może mają w sobie odpowiedzi, lecz chciałbym po prostu spytać bardziej doświadczonych w tym temacie, aby nie "wyłączyć" moich uC Smile
  • #3 6149645
    puntigamer
    Poziom 13  
    rozumiem, że sygn zewn zbędny jeśli fusy są ustawione na wewn.
    Czy po ustawieniu ich na zewn i podłączenie sygnału zewnętrznego nie zablokuje mi możliwość programowania uC przez ISP?

    Tylko domyślam się w co znaczy "zakładać" dokładność i rozumiem że trzeba coś obliczyć. Mógłbyś mi pomóc? Czy do tego powinienem określić dokładność jaką potrzebuję dla serw? 6 serw (manipulator)
    Jeśli chodzi o asm to może dam radę napisać w nim przerwania jak przejdę podstawy tego języka i poćwiczę. Całość będzie w C

    pozdrawiam. Adam
  • #4 6151131
    Freddie Chopin
    Specjalista - Mikrokontrolery
    jesli procek dziala to mozesz go programowac. jesli ustawiony jest na zewnetrzny sygnal i zewnetrzny sygnal jest, to procek dziala.

    dokladnosc zawarta jest w zalozeniach. masz fantazje miec dokladnosc 1 stopien, a moze 1/1000 stopnia, albo moze super czas reakcji rowny 1/100000 sekundy, albo costam jeszcze. bez zalozen w ogole nie ma o czym rozmawiac.

    4\/3!!
  • #5 6151781
    kamyczek
    Poziom 38  
    1.Do ustawienia typu i częstotliwości oscylatora służą bity CKSEL
    2. Rejestr OSCCAL służy do dokładnej kalibracji częstotliwości i po zerowaniu procesora zawsze automatycznie pobiera wartość dla 1MHz
    jeśli wybierasz inną wartość oscylatora wewnętrznego rc to powinieneś odczytać wartość osccal z układu i wpisać ją odpowiednią operacją przy starcie np w obsłudze przerwania zerowania. Nie musisz eksperymentować bo wartość ta jest zapisana w trakcie produkcji razem z sygnaturą układu.
    3. Jedyny warunek to ustawienie bitu SPIEN i nie wyłączenie linii resetu . oraz częstotliwość zegara na magistrali SPI równa 1/4 częstotliwości zegara systemowego.
    4. Zegar 16MHz tylko z oscylatorem zewnętrznym bądź sygnałem zegarowym z generatora .
    5. Jeśli zależy na dokładności bardziej precyzyjny będzie układ z zewnętrznym rezonatorem. Jeśli chcesz się bawić i nie zależy ci na precyzji będzie działało na każdym typie generatora.
  • #6 6152087
    _Robak_
    Poziom 33  
    Co do sterowania serwami to 7 serw wysterujesz jednym licznikiem, jesli uzyjesz 16 bitowego to dokladnosc bedzie az nadto :) i wtedy nawet 1 mhz wystarczy :)
  • #7 6158126
    puntigamer
    Poziom 13  
    do Freddie Chopin:
    *Jedynym założeniem jest możliwość ustawienia serwa z dość dużą dokładnością. Nie wiem względem czego obliczyć dokładność, bo co z tego, że będę mógł zmieniać wartość sygnału nawet o 1 us (np 10 bitów, wartości od 1000 do 2000, gdzie 1500 to środek) jeśli serwo nie odczyta tego poprawnie lub zegar wprowadzi zaburzenia.
    Chciałbym osiągnąć dokładność maksimum 1 stopień a najlepiej coś koło 0,6 stopnia. Serwa użyte do tego celu to GWS S03T/2BBMG standard więc powinny dużo umożliwić.
    *Czas reakcji nie jest ważny (jak wiem, serwa ustawiają się w określonej pozycji z jakąś swoją szybkością, którą i tak programowo będę chciał zwolnić, druga sprawa (i najważniejsza) to sygnał dać wszystkim serwom w przeciągu 20 ms i co 20 ms). Jeśli jest coś jeszcze to proszę o podpowiedź a zastanowię się nad czasem reakcji.

    _Robak_:
    Trafna uwaga. Skorzystam (dużo czytałem o tym uC) z 16bitowego licznika i pewnie 8 bitowego do odmierzania reszty czasów. 16 bitowego użyć do odmierzania szerokości impulsu rozumiem. Co do powtarzania sygn co 20ms i początków czasów wysterowywania każdego z serw uzyć 8bitowego? Jak to widzisz? Czy robiłeś coś podobnego i mógłbym pytać gdybym miał wątpliwości? Dzięki za upewnienie co do możliwości wysterowania takiej liczby serw zegarem 1MHz (mam nadzieję, że nie mówisz tylko o asm'ie) :) Jaką dokładność (nie patrząc na możliwości serw) mogę osiągnąć przy 1MHz Twoim zdaniem? Chętnie nauczę się tych wyliczeń.
    Na razie spytałem o częstotliwości, gdyż nie chciałbym mieć ciężkich do wykrycia problemów podczas programowania, przez złe założenia, jak pisał Freddie.

    Kamyczek:
    Cytat:
    3 ... oraz częstotliwość zegara na magistrali SPI równa 1/4 częstotliwości zegara systemowego.

    Jak to ustawić. Czy jeśli będę używał 16MHz rezonatora to magistrala SPI ma być 4Mhz?

    POZDRAWIAM
  • #8 6158886
    kamyczek
    Poziom 38  
    Mikrokontroler testuje stan linii DI i SCK ponieważ jest w tym rozwiązaniu podrzędnym aby wykluczyć błędy transmisji częstotliwość
    powinna być mniejsza lub równa 1/4 częstotliwości zegarowej ....
  • #9 6252977
    puntigamer
    Poziom 13  
    Kamyczek.. ale tutaj nie ma żadnej asynchronicznej pracy.. .gdybym podłączał dodatkowo rezonator zegarkowy to tak.
    Chodziło mi po prostu (obawa) czy po zmianie zegara systemowego na 16MHz bedę mógł programować ISP...
    Na razie mam kwarc 8MHz czyli ustawilem bity wg tego co napisałem na dole 7 strony w TYM temacie i "hula"
    Dzięki
REKLAMA