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

Pierwszy start procesora ATtiny26

wladziu22 01 Gru 2009 14:30 2321 17
  • #1 7331814
    wladziu22
    Poziom 17  
    Cześć wszystkim.

    Zanim cokolwiek zrobię zapytam się...
    Zakładamy, że czytałem informacje na forum i mam nówkę nieśmiganą zdrową ATtiny26 oraz sprawny programator.

    Jeśli podłączę w ATtiny26 odpowiednio piny VCC, AVCC, GND, AGND, XTAL1 i XTAL2 (kwarc 7,3..MHz)
    oraz
    piny MOSI, MISO, SCK, RESET pod programator (ISP na porcie równoległym+74HC244)
    oraz
    za pomocą pony-proga dam odczyt fusebitów to:
    (pytanie)
    Cz powinienem uzyskać połączenie z uC i powinny pojawić się w okienku pony proga jakieś zaznaczone fusebity?

    Ewentualnie czy powinienem jeszcze coś zrobić?
  • Pomocny post
    #4 7333550
    mirekk36
    Poziom 42  
    No pewnie że możesz - inaczej po przeprogramowaniu fusów na zewnętrzny kwarc procek by nie ruszył aż do jego podłączenia.

    Tylko zastanów się dobrze czy warto podłączać kwarc jeśli ma on być mniejszy lub równy 8MHz. Najczęściej jest to w ogóle w takiej sytuacji bez sensu. Chyba że zamierzasz taktować procka większą częstotliwością niż 8MHz to wtedy staje się to konieczne i zrozumiałe ;)
  • #7 7333926
    a2d2a2m
    Poziom 15  
    mirekk36 napisał:
    No pewnie że możesz - inaczej po przeprogramowaniu fusów na zewnętrzny kwarc procek by nie ruszył aż do jego podłączenia.

    Tylko zastanów się dobrze czy warto podłączać kwarc jeśli ma on być mniejszy lub równy 8MHz. Najczęściej jest to w ogóle w takiej sytuacji bez sensu. Chyba że zamierzasz taktować procka większą częstotliwością niż 8MHz to wtedy staje się to konieczne i zrozumiałe ;)

    Dlaczego uważasz to za bezsennsowne, skoro wewnetrzny generator to 1MHz, a kwarc zapewni wiekszą dokładność.
  • #8 7333954
    mirekk36
    Poziom 42  
    a2d2a2m napisał:
    Dlaczego uważasz to za bezsennsowne, skoro wewnetrzny generator to 1kHz, a kwarc zapewni wiekszą dokładność.


    No to dokładnie co powiedziałeś o zapewnieniu większej dokładności to największy mit obrazujący totalne niezrozumienie początkująych w tej dziedzinie elektroników/programistów.

    Jeśli bardzo ale to bardzo dokładnie sam sobie spróbujesz odpowiedzieć na pytanie w czym tę dokładność większą zapewni ci kwarc 1MHz zamiast wewnętrznego oscylatora 1MHz - to praktycznie sam dojdziesz do wniosku na końcu - dlaczego jest to bzdura i mit ;) legenda itd
  • #9 7334895
    wladziu22
    Poziom 17  
    mirekk36 napisał:
    No ale po co ci pętla PLL? skoro do zwykłego ATtiny26 można spokojnie podłączyć kwarc 16MHz i będzie ładnie chulać.


    Taki miałem pod ręką.

    A może tak rozwiniesz ten wątek o precyzyjności oscylatora wewnętrznego i zewnętrznego?
    A tak poza tym przypadkowo trafiłem na Twój programik (kalkulator avr). Masz może taki pod pony proga?
  • Pomocny post
    #10 7334991
    PiotrPitucha
    Poziom 34  
    Witam
    Sprawa jest prosta, jeśli procesor ma wykonywać jakiś program o niekrytycznych zależnościach czasowych to wewnętrzny oscylator jest bardzo dobry, jeśli ma wykonywać funkcje czasowe to koniecznie kwarc.
    Kwestia doboru częstotliwości też nie jest banalna w układach typu zegar, transmisja danych itd. , musisz zadbać o to by częstotliwość kwarcu dzieliła się w jakiś sensowny sposób. Przy ATtiny26 to może nie jest problem ale w procesorach z mniejszą pamięcią programu wybranie zbyt wysokiej częstotliwości kwarcu może spowodować że zamiast działać na 8 bitowych licznikach będziesz zmuszony stosować 16 bitowe i nie zmieścisz się w ograniczonej przestrzeni pamięci programu.
    Piotr
  • #11 7335264
    wladziu22
    Poziom 17  
    Tak się składa, że będę używał timerów do mierzenia czasów 0,5 - 60 ms oraz przetwornika AC. Z tego co wyczytałem ATtiny26 ma dwa 8 bitowe timery. Mam coś takiego jak "AVR Fp Calc Timier Tool v2". Aby uzyskać zakres tych czasów (w miarę dokładny) będę musiał trochę pokombinować z ustawieniami dzielnika ewentualnie ze zmiana taktowania z 8 na 4 MHz. W przypadku licznika 16 bitowego byłoby to prostsze do osiągnięcia. (dla Fq = 8MHz i TCCRxx = 8 podany zakres powyżej osiągam dość dokładny)
  • Pomocny post
    #12 7335283
    mirekk36
    Poziom 42  
    wladziu22 - i do tego najspokojniej w świecie możesz użyć wewnętrznego oscylatora a wręcz zapomnieć o kwarcu zewnętrznym. To tylko ułatwi ci pracę i budowę urządzenia.
  • #14 7338996
    wladziu22
    Poziom 17  
    Chciałem jeszcze potwierdzić, że nieśmigana ATtiny26 od razu odpaliła bez kwarcu. Odczyt bitów w ponyprog pokazał zaznaczone bity:
    SUT0, CSEL3, CSEL2, CSEL1 oraz SPIEN => Internal RC 1MHz, 6CK+64ms
    Oczywiście idząc Waszym tropem zmieniłem na:
    SUT0, CSEL3, CSEL1, CSEL0 oraz SPIEN => Internal RC 8MHz, 6CK+64ms

    Dziękuję za pomoc.
  • #15 7339260
    mirekk36
    Poziom 42  
    wladziu22 ---> to ci jeszcze podpowiem, że jeśli by już nawet doszło do takich sytuacji, że potrzebowałbyś jakoś specjalnie ustabilizować częstotliwość wewn oscylatora RC - kiedyś tam z jakichś powodów to poczytaj sobie o czymś takim jak bajt kalibracyjny OSCCAL. Ale na razie to tylko tak bardziej z ciekawości niż z potrzeby na tym procku. Prędzej może ci się to przydać na prockach ATmega w których będziesz korzystał z UART'a i wtdy dopiero po raz pierwszy może się spotkasz z prawdziwą jedną z potrzeb albo zastosowania kwarca albo poradzenia sobie właśnie z wewn oscylatorem za pomocą jego kalibracji poprzez wpisanie odpowiedniej wartości do OSCCAL. Na elektrodzie nawet znajdziesz tematy gdzie zobaczysz - jak łatwo za jego pomocą kalibruje się oscylator aby uzyskać prawidłowe prędkości dla UARTA o ile zajdzie w ogóle taka potrzeba.
  • #16 7339302
    wladziu22
    Poziom 17  
    Zgadzam się z Tobą...co nieco już o tym czytałem na forum i w dokumentacji. Nawet jeden z forumowiczów fajnie przedstawił dla wszystkich wartości OSCCAL jakie "krzaki" dostaje wysyłając/odbierając z/na PC dane. A w dokumentacji jest napisane, że wewnętrzny oscylator normalnie może odbiegać od nominalnej wartości o +-3%. Jednak po synchronizacji można zmniejszyć błąd do +-1%.
  • #17 7339352
    mirekk36
    Poziom 42  
    I ooo to właśnie chodzi - a jeśli potrzebujemy dużych i pewnych na 100% prędkości RS232 - to wtedy zachodzi jedna z istotniejszych potrzeb aby zastosować w ogóle kwarc zamiast oscylatora. I wtedy też na potrzeby akurat transmisji RS232 stosuje się tzw "kwarce przyjazne dla RS232" Jak sobie zajrzysz na ostatnią stronę rozdziału UART w dowolnej nocie PDF procka AVR to zobaczysz tabelę częstotliwości taktowania procków począwszy od 1MHz do 16MHz. I jak się dobrze przyjrzysz to zrozumiesz jakie wartości kwarców (bo nie oscylatorów - takich nie ma) są przyjazne dla UART'a

    zwróć uwagę np na częstotliwości taktowania takie jakby troszkę nietypowe np: 7.3728MHz albo 11.0592MHz - i zobacz po kolei dla wszystkich prędkości jakie masz procenty błędów? Teraz już chyba zaczynasz lepiej rozumieć że kwarc zamiast oscylatora nie daje się po to "żeby mieć większą dokładność procesora" bo to zbyt ogólne i przesadne - przez co ludziska - tzn początkujący wciskają kwarce 1MHz, 4MHz czy 8MHz żeby tylko wyeliminować ten niedokładny oscylator bo im np polecenie wait 1 - nie będzie dokładnie odmierzać 1 sekundy, za to łudzą się, że z kwarcem będzie ;)

    Z tym, że jak już dobierać kwarc dla RSa to przy okazji nieco zwiększyć taktowanie procka. Ja np jeśli już mam zastosować kwarc to zwykle większy równy 11.0592MHz

    Reasumując oczywiście bywają jeszcze inne przypadki kiedy warto wziąć kwarc w rękę zamiast oscylatora wewn, ale większość z nich dotyczy głównie tego żeby mieć większe taktowanie niż 8MHz - choć nie tylko - jak sam widzisz.

    Aha pytałeś o AVRCalculator ten mojej produkcji - ale nie za bardzo rozumiem twojego pytania o to czy mam go dla PonyProga ???

    przecież PonyProg nie jest ci potrzebny do szczęścia. Ten program działa w oparciu o AVRDUDE a z kolei tego AVRDUDE nie musisz mieć wcześniej zainstalowanego - ponieważ mój program jak wykryje że go nie ma to zaproponuje ci jego instalację - tylko będziesz musiał wskazać folder a on "urodzi" odpowiednie pliki i już. Jedyny problem to ten, że nie poćwiczysz na nim w wersji DEMO ze swoim prockiem ATtiny26. Bo obsługuje on z popularniejszych procków tylko ATmega8 czy ATtiny2313. Więc to tylko na nich mógłbyś zobaczyć jak wygodnie i bezpiecznie w porównaniu z PonyProgiem - majstruje się przy fusebitach
  • #18 7339480
    wladziu22
    Poziom 17  
    Na pewno kiedyś używałem tabel opisujących zależność Baud Rate UARTA od Fosc, bowiem ATtiny to mój drugi AVR. Kilka lat temu "jechałem" na ATmega16 z kwarcem=7.3728MHz i prawie wszystkie peryferia uruchomiłem. Jednak wtedy zbytnio nie przejmowałem się ani "fusami" ani kwarcem przy projektowaniu płytki testowej ("fusami" zajął się kolega). Poza tym informacje nieużywane ulatniają się ;-) A teraz przyszła chęć i wolny czas by się czym zająć. Dlatego musiałem co nieco ogarnąć i zaczerpnąć informacji.

    Tak patrzę do pdf-a ATmega16 i widzę, że na 9600bps i fosc=7.3728Mhz Error=0% (przy odpowiednim UBRR i U2X).
    Tak z ciekawości znalazłem stary kod wykorzystujący UART i mam tam w sumie poprawne wyliczenie:
    UBRR = (Fosc/16/9600-1) = 47.

    A co do pytania o kalkulator "fusów" i pony progra. W zasadzie jest to już nieaktualne bo po przeczytaniu kilku postów i zorientowaniu się, że to demo i tak nie działa dla ATtiny26 i współpracuje z AVRDude postanowiłem sam rozgryźć "fusy" i tradycyjnie jak kiedyś do programowania flash użyć pony proga nie mieszając sobie już w głowie z kolejnymi programami (nakładkami GUI).
    A to, że ponyprog działa w oparciu o AVRDude nie wiedziałem, stad to moje niezrozumiałe dla Ciebie pytanie.
REKLAMA