Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 07:44


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 25 sie 2012, o 15:24 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Witam
    Panowie zrobiłem sobie nowy problem...;P Otóż chcę uruchomić dwa timery na AT2313. Jednak tak, że Timer0 ma mieć priorytet. Jeśli on coś wykonuje to Timer2 czeka. Timer2 ma sterować silnikiem. Nie chcę pakować silnika do Timera0, gdyż ten przetwarza sygnał dźwiękowy i musi być bardzo precyzyjny- dodanie dodatkowych linijek spowolni lub zakłóci pracę programu, który to znów musi oczekiwać ciągle na nadejście dźwięku.....
    Dodatkowo Timer0 jest uruchamiany od przerwania komparatora.. co dyskwalifikuje stworzenie na nim timera programowego...
    Da się? ;P



    Ostatnio edytowano 25 sie 2012, o 15:29 przez 20rafalo, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 15:29 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    20rafalo napisał(a):
    Otóż chcę uruchomić dwa timery na AT2313. Jednak tak, że Timer0 ma mieć priorytet.


    Zapomnij o tym, procki AVR nie mają ustawianych priorytetów.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 15:30 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Gdzieś znalazłem taką możliwość, która niby stwarza priorytet - w tym przypadku dla komparatora: ISR(ANA_COMP_vect, ISR_NOBLOCK)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 15:36 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    No no no - to rzeczywiście znalazłeś priorytet ;) ..... a niech tego kto ci takie bzdury napisał drzwi ścisną ;)

    więc lepiej doczytaj sobie panie kochany co to jest ISR_NO_BLOCK , do czego, jak się używa i czym to grozi w łapkach osoby, która nie ma pojęcia o asemblerze.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 16:19 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Mistrzu Mirku tutaj na forum topic1346-30.html kolega "Krauser" przedostatni post.
    Właśnie miałem wrażenie, że czasem program się zawiesił, ale mam wszystko na płytce stykowej i zganiam na nią ;P

    To usuwać z kodu? bo jeszcze coś mi padnie ;/

    PS Kompilator poradzi sobie z linią:

    #define KROK4 (PORTD |= T4; PORTD &= ~(|T2|T3); PORTA &= ~(T1);)

    Chyba nie trzeba jej tłumaczyć ;P - podobnie opisałem jak u Ciebie w książce odnośnie silników unipolarnych



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 18:59 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Dokładnie takie zdanie.
    Krauser napisał(a):
    A inne przerwania są blokowane na czas obsługi tych wykonywanych. Chyba, że odblokujesz sobie taka możliwość ISR(ANA_COMP_vect, ISR_NOBLOCK).

    mirekk36 napisał(a):
    Zapomnij o tym, procki AVR nie mają ustawianych priorytetów.

    Chodzi dokładnie o to, że w specyfikacji procesora musisz znaleźć rozdział Interrupts i tabelkę Reset and Interrupt Vectors. Te przerwania które są wyżej w tabeli (mają mniejszy adres w pamięci) mają wyższy priorytet i tego nie zmienisz. Chcąc dokładnie wiedzieć czy twoje przerwanie może być wykonane pomimo tego, że inne jest w trakcie musisz zaglądnąć do tej tabeli. Mówiąc przerwanie od timera0 utrudniasz innym odpowiedź, bo przecież timer0 generuje przerwania z różnych źródeł np. przepełnienie lub zrównanie wartości licznika z wartością do porównania.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2012, o 19:40 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    20rafalo napisał(a):
    Mistrzu Mirku tutaj na forum topic1346-30.html kolega "Krauser" przedostatni post.


    Kłopot w tym, że ja rozumiem co napisał kolega Krauser a ty nie .... wyjaśnił ci wyżej.

    Masz stałe priorytety przerwań w AVR - zależnie od kolejności w tablicy wektorów.

    A ISR_NO_BLOCK wcale nie służy do zmian priorytetów więc nie powołuj się na słowa kolegi Krauser - gdy jak mówię ich nie do końca jeszcze rozumiesz....

    ISR_NO_BLOCK - może ci tylko i wyłącznie spowodować że na czas takiego przerwania nie zostaną zablokowane inne, i niestety nieumiejętne posługiwanie się takim mechanizmem w rękach początkującego, który jeszcze tak w ogóle poznaje co to są w ogóle przerwania i jak działają doprowadzi w pięć sekund do przepełniania stosu i super niekontrolowanych efektów. Zresztą nie doprowadzi a pewnie już doprowadza .....

    Reasumująz ISR_NO_BLOCK jest po to żeby z tego korzystać w super specyficznych przypadkach (ja praktynie z tego nie korzystam - może w 1%) .... a żeby z tego korzystać to jeszcze raz dobitnie powtórzę - trzeba najpierw mieć opanowane więcej niż w 100% posługiwanie się w normalnym trybie przerwaniami....

    zatem (tak to bywa Krauser), że czasem niektóre porady mogą zaszkodzić niż pomóc - szczególnie gdy widać że tu kolega na razie walczy z podstawami. Takie jest moje zdanie ale oczywiście nie oznacza to że każdy musi się z nim zgadzać.

    ------------------------ [ Dodano po: 1 minucie ]

    w twoim przypadku polecam ci od razu usunąć ISR_NO_BLOCK - a jestem na 1000000% przekonany że wszystko co chcesz osiągnąć da radę na tym AVR'ku zrobić bez tego.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO