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.

Duży kwarc i podzielnik czy mały kwarc - co lepiej

Marek_Gorecki 06 Lip 2011 20:02 2367 12
  • #1 06 Lip 2011 20:02
    Marek_Gorecki
    Poziom 16  

    WItam;

    mam dylemat, chciałem zastosować układ ATMEGA 328. Procesor ten ma dzielnik częstotliwości. Potrzebuje około 4MHz. Co lepiej zrobić użyć kwarc około 16MHz i podzielę do przez 4 czy dać kwarc 4MHZ bez podziału?
    W którym przypadku będzie mniejszy pobór prądu?
    I drugie pytanie . W tym procesorze pojawiły się dziwne przerwania (chyba). Przy każdej prawie końcówce PCINT. Rozumiem że jest to przerwanie podobne do zwykłych INT0,INT1 itp. Czy można zadeklarować sobie tak aby dowolna nóżka procesora reagowała tak samo jak na INTy? Czy dobrze rozumiem?

    pozdrawiam

    0 12
  • #2 06 Lip 2011 21:40
    nsvinc
    Poziom 35  

    Pomyśl. Standardowy kwarc ma rozjazd rzędu kilkudziesięciu ppm, raczej niezaleznie od częstotliwości. Więc im szybszy dasz kwarc, tym wieksze bedzie miał rozjazdy. Ale skoro preskalujesz zegar generowany przez ten kwarc, to dokladnie tak samo preskalujesz jego rozjazd. Efekt? Na jedno wychodzi...

    Z drugiej strony, im wiekszy zegar, tym wiecej zbocz oscylatora, im wiecej zbocz oscylatora, tym wiekszy prąd przez niego pobierany.

    Podsumowując:
    - czy dasz szybki kwarc i dzielnik, czy dasz wolny kwarc bez dzielnika, dokladnosc bedzie... ekwiwalentna.
    - wolniejszy kwarc == oscylator żre mniej prądu

    0
  • #3 06 Lip 2011 22:16
    Marek_Gorecki
    Poziom 16  

    Czyli rozumiem że jedyna różnica to mikroskopijnie mniejszy pobór prądu.

    A co do drugiego pytania ? Jak jest z tymi przerwaniami ?

    0
  • #4 06 Lip 2011 22:17
    nsvinc
    Poziom 35  

    Niestety nie jestem AVRowcem - poczekaj na odpowiedz kogoś, kto się na tych prockach zna ;]

    0
  • #5 06 Lip 2011 22:27
    drzasiek
    Specjalista - Mikrokontrolery

    A co tam wiele oscylator nażre. Przecież pobór prądu zależy od ilości przełączających się tranzystorów i od częstotliwości ich przełączania się. Czy dasz większy kwarc czy mniejszy to ani liczby tranzystorów nie zwiększasz a jak podzielisz częstotliwość to częstotliwość ich przełączania się będzie taka sama więc ja bym obstawiał na raczej niezauważalne różnice w poborze prądu.

    0
  • #6 06 Lip 2011 22:31
    Marek_Gorecki
    Poziom 16  

    A wracając do 2 pytania - jak działają te przerwania PCINT ?
    Czy można dokłądnie zastąpić przerwania INT tymi przerwaniami ? Raczej tak nie jest bo producent by zrezygnował z przerwań INT bo byłyby niepotrzebne.

    0
  • #7 06 Lip 2011 22:32
    nsvinc
    Poziom 35  

    drzasiek napisał:
    Czy dasz większy kwarc czy mniejszy to ani liczby tranzystorów nie zwiększasz a jak podzielisz częstotliwość to częstotliwość ich przełączania się będzie taka sama więc ja bym obstawiał na raczej niezauważalne różnice w poborze prądu.

    Normalnie, tak. Ale gdy chcesz oszczędzać energię, te kilkadziesiąt uA różnicy zacznie się dla ciebie liczyć...
    Ja tu tylko odpowiadam na pytania ;]

    0
  • Pomocny post
    #8 07 Lip 2011 17:06
    Krauser
    Poziom 26  

    Przerwania PCINT maja tą zaletę, że mogą wybudzić procesor ze stanu Power Down (oscylator nie pracuje więc oszczędność energii jest największa) w reakcji na zmianę stanu pinu. Przerwania INT w Power Down mogą wybudzić uP w reakcji na stan niski i aby procedura przerwania została wykonana stan niski musi utrzymywać się na tyle długo by procesor zdążył to zauważyć (ma to znaczenie przy taktowaniu kwarcem). Wadą PCINT jest to, że jest jeden wektor do obsługi wszystkich PCINT przypadających na jeden port. Najlepiej wybierać piny z różnych portów wtedy w obsłudze nie trzeba sprawdzać co jest źródłem przerwania. PCINT traktowałbym jako dobry dodatek.

    0
  • #9 07 Lip 2011 17:12
    Marek_Gorecki
    Poziom 16  

    Dziękuję za odpowiedź.
    A czy da się przerwaniem PCINT zrobić zwykłe przerwanie ( tak jak np INT0) pracującego na zbocze?
    I jeszcze jedno - czy takie przerwanie pracować będzie na całym porcie? Można to ograniczyć do jednej nózki?

    Mam problem bo potrzebuje najlepiej 5 przerwań więc czy da się użyć tego PCINTA aby zrobić przerwanie na jakims Pinie procka?

    0
  • #10 07 Lip 2011 17:22
    Krauser
    Poziom 26  

    1. Jeśli PCINT ma pracować na jedno zbocze to trzeba na początku sprawdzać stan pinu i jak np. interesuje mnie zbocze opadające to sprawdzam czy jest stan niski. Jeśli tak to robię co mam zrobić, a jak stan wysoki to ignoruję.
    2. Przerwanie odblokowuje się dla całego portu, ale jeszcze wybiera piny które mogą to przerwanie wyzwolić. Może być to jeden pin (wtedy pozostałe nie wywołają przerwania) a może być też kilka (wtedy trzeba w procedurze obsługi sprawdzić który pin wywołał przerwanie)

    0
  • #11 07 Lip 2011 17:30
    Marek_Gorecki
    Poziom 16  

    Czyli są to niemalże tak samo funkcyjnie przerwania jak INTy z tym że różnica polega na tym że nie można ustalać sobie czy ma być reakcja na zborze rosnące, opadające czy na stan niski?
    Dobrze rozumiem?

    0
  • #12 07 Lip 2011 17:40
    Krauser
    Poziom 26  

    Tak. Procedura obsługi zostanie wykonana w odpowiedzi na zmianę stanu (zbocze narastające i opadające) i to na równi dla wszystkich wybranych pinów jednego portu, a ponieważ zwykle nie oto chodzi potrzebny jest dodatkowy kod.

    0
  • Pomocny post
    #13 09 Lip 2011 03:58
    emarcus
    Poziom 35  

    Marek_Gorecki napisał:
    Czyli są to niemalże tak samo funkcyjnie przerwania jak INTy z tym że różnica polega na tym że nie można ustalać sobie czy ma być reakcja na zborze rosnące, opadające czy na stan niski?
    Dobrze rozumiem?


    Jeszcze odnośnie pierwszej częsci pytania:
    W każdym Datasheet znajdziesz rozdział: "Typical Characteristics", w którym są wyrażnie i dostatecznie omówione związki i ograniczenia trzech podstawowych parametrów uC: napięcie zasilania; częstotliwość taktowania i pobór prądu.
    Nie są to bynajmniej parametry 'luźne' - jak z pytania wynika (pełna dowolność), ale są one dość mocno zależne od siebie. Zapoznanie sie z treścią tego rozdziału powinno rozwiać wątpliowości.

    PCINT (Pin Change INT), tak jak juz napisał krauser, reagują tylko na zmianę poziomu logicznego portu i jeżeli wystepują w uC, to są grupowane po 8 i także w tym stylu sa uruchamiane - jako cała grupa.
    Zechcesz użyć tylko wybrany, pojedynczy int. - potrzebujesz pozostałe maskować/ wyedytowac odpopwiedni register PCMSKx.
    Zapoznaj się z przykładem: PCINT_CHANGE.bas

    e marcus

    0