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



Teraz jest 14 sty 2025, o 19:51


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: 27345
Lokalizacja: Szczecin
Pomógł: 1041

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: 27345
Lokalizacja: Szczecin
Pomógł: 1041

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: 27345
Lokalizacja: Szczecin
Pomógł: 1041

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 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO