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

[ATmega8][avr-gcc] Bariera optyczna

madiz08 22 Kwi 2014 21:33 4821 37
  • #31
    BlueDraco
    Specjalista - Mikrokontrolery
    el2010tmp napisał:

    Zmienne globalne wykorzystywane w przerwaniach powinny być deklarowane jako volatile.


    Nic podobnego. Dotyczy to wyłącznie tych zmiennych, które są używane w różnych procedurach działających na różnych poziomach priorytetu procesora, czyli np. w procedurze obsługi przerwania i w "pętli głównej" lub procedurze z niej wywoływanej.
  • Relpol przekaźniki
  • #32
    madiz08
    Poziom 14  
    No właśnie, odnośnie tak małej ilości cykli na przerwanie to dlatego zapytałem co będzie jeżeli przerwanie nie zdąży się wykonać i wygeneruje się nowe. Takie coś mogłoby chyba działać, jeżeli przerwanie polegałoby jedynie na zmianie stanu bitu, a tu jeszcze musi być ta przerwa po paczce impulsów.
    Dobrze, to czyli czas na podłączenie kwarcu, postaram się na dniach kupić parę sztuk, mam jeszcze linki sprzed skrócenia tematu jak pytałem o totalne podstawy podłączenia, tylko trochę o ustawieniach poczytam.
    Poczytam też o trybie PWM z otrzymanego linku. Tak na pierwszy rzut oka dziwne trochę, że można wygenerować dokładną częstotliwość, myślałem, że te mikrosekundy są największą dokładnością, ale na spokojnie musze sobie to przeczytać.
    Odnośnie deklarowania zmiennych globalnych dla przerwań to jest jednak w porządku tak?
  • Relpol przekaźniki
  • Pomocny post
    #33
    BlueDraco
    Specjalista - Mikrokontrolery
    Przecież ATmega może działać na 8 MHz na wewnętrznym oscylatorze. Jeśli nie zdążysz z obsługą przerwania, po prostu "zgubisz" przerwanie. W trybie PWM przy 8 MHz nie będziesz miał z tym problemu.
  • #34
    madiz08
    Poziom 14  
    Cooo??? Można podnieść wewnętrzną częstotliwość taktowania powyżej 1MHz? Naprawdę ta moja wiedza mizerna w budowie i możliwościach atmegi, cały czas mnie coś zaskakuje. Bardzo mnie zaciekawił ten temat jak i tryb PWM. Dzisiejszy wieczór po pracy siadam i czytam w tym temacie.
    Dzięki
  • #36
    madiz08
    Poziom 14  
    Spora lektura, ale już na 26 stronie znalazłem temat CLOCK SOURCES

    Przepraszam jeżeli coś oczywistego ominąłem lub źle sobie przetłumaczyłem
    [ATmega8][avr-gcc] Bariera optyczna
    CKSEL jest to coś (dokładnie nie wiem co) cztero-bitowe co odpowiada za źródło i szybkość zegara, jego bity to bity konfiguracyjne.
    "When this Oscillator is selected, start-up times are determined by the SUT Fuses"
    czy to znaczy, że te czasy automatycznie się ustawią w zależności od ustawienia zegara?
    1. czym jest CKSEL (fizycznie), czy jest to 8-bitowy rejestr?
    2. Czy ustawienia fusebitów można wprowadzic programowo, z wiersza poleceń
    3. Programy jak AVR Studio mają oddzielne opcje ustawiania FUSEBITÓW, ja pisze na Programmer's notepad i nigdzie nie mogę znaleźć informacji o takim ustawieniu w tym programie, dlatego moje pytanie nr3
  • Pomocny post
    #37
    LordBlick
    VIP Zasłużony dla elektroda
    Fusebity to ustawiane są programatorem przez program go obsługujący np. avrdude lub wbudowany w AVR/Atmel Studio. Programers notepad to taki bardziej rozbudowany edytor tekstu.
    Opis fusebitów jest w sekcji „Memory Programming” (s. 215).
    Ja mogę się pochwalić takim programem ułatwiającym zrozumienie noty katalogowej odnośnie fusebitów:
    http://code.google.com/p/avrmate/
    Do odpalenia potrzebny jest python w wersji 2 (najnowszy w tej chwili 2.7.6) oraz biblioteki gtk. Małe zastrzeżenie: Nie wiem jak to się sprawuje w Windows, bo używam Linux.
  • #38
    madiz08
    Poziom 14  
    DZIAŁA!!! ALE MOC :) !!!!!
    Dwa dni męczyłem się, aby móc zmienić te bity konfiguracyjne, przez mój programator USBasp, avrstudio, atmel6studio, nakładki avrdude i wszędzie jakieś błędy w komunikacji, (dodatkowo też chciałem zobaczyć podesłany link odnośnie fusebitów http://code.google.com/p/avrmate/ , ale też errory), aż w końcu dzisiaj zainstalowałem MkAVRcalculator, który połączył się. Na razie wgrałem stary program działający na funkcji _delay_, bo ustawienia bitów na timery miałem gotowe z linku http://diycenter.acid19.linuxpl.com/readarticle.php?article_id=3 pod Atmega16 (MkAVRcalculator w podstawowej wersji 16-ki nie obsługuje), ale mam podane na tacy noty katalogowe, także trochę informacji do odpowiednich ustawień i też układ zadziała na timerach Atmegi8. No radość niemała, zamiast diody włączyłem przekaźnik i przy każdym zasłonięciu było tylko jedno kliknięcie, czyli działa tak jak być powinno :) . Na dobrą sprawę cieszę się, że wcześniej układ nie chodzil prawidłowo, bo pewnie nie przyswoiłbym sobie informacji o timerach, a tymbardziej nie wiedziałbym, że można zmieniac wewnętrzne taktowanie.

    Słuchajcie Panowie, bardzo, bardzo wdzięczny jestem wszystkim, którzy mi tu pomogli, od momentu kiedy temat jeszcze nie został skrócony, czyli jak pytałem o podstawowe podłączenia Atmegi8, aż teraz po ustawienia fusebitów. Teraz za parę złotych mam urządzenie które mogę użyć do multum zastosowań. Te wszystkie kody, coś co było dla mnie hieroglifami robi się coraz bardziej czytelne. Jeszcze ciekawi mnie temat PWM i w moim układzie go zastosuję, ale myślę że już z tym sobie poradzę i tu już nie będę się rozpisywał. Trochę przystopować muszę z mikrokontrolerami, bo w uzależnienie zaraz wpadnę :)
    Pozdrawiam i jeszcze raz dziękuję za pomoc.