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



Teraz jest 29 mar 2024, o 10:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 6 sie 2017, o 11:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam,
55555 napisał(a):
Ja nawet chciałem użyć trybu CTC, ale nie wiem jak go skonfigurować
Jeśli mogę poprosić o przykład.

Hmm... to może tak. :)
dam do myślenia. ;)
ObrazekObrazekObrazek
Obrazek
:)

------------------------ [ Dodano po: 2 minutach ]

pozostaje jeszcze:
ISR(TIMER2_COMP_vect) {
.....
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2017, o 12:02 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Nawet gdyby było tam 1, to taki zapis nic by nie zmienił, bo nie tak zeruje się bity.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2017, o 12:14 
Offline
Użytkownik

Dołączył(a): 30 mar 2016
Posty: 30
Pomógł: 0

Daro69 czy mogę prosić o przykład kodu? I jeszcze jak włączać i wyłączać jakiś timer?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2017, o 19:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Tryb CTC konfigurujesz bardzo prosto. Na początek bierzesz notę procesora i w niej odszukujesz dział danego timera czyli "8-bit Timer/Counter2", następnie przechodzisz do podrozdziału "Register Description" i tu szukasz rejestru TCCR2 w którym to zawierają się bity m.in. WGM20 i WGM21 czyli "Waveform Generation Mode" po polskiemu tryby pracy licznika. Masz tu tabelkę z rozpisanymi możliwymi stanami owych bitów. Dla każdej kombinacji stanów tych bitów masz opis odpowiadającego im trybu pracy. Szukasz interesujący tryb pracy i sprawdzasz na którym bicie trzeba załączyć 1 (zero Cię nie interesuje ponieważ większość bitów domyślnie jest wyzerowana o czym się możesz dowiedzieć czytając początkowy opis danego rejestru)
Obrazek
zapamiętaj jedną rzecz. Jak chcesz ustawić dany bit w rejestrze na jeden to zapis wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

natomiast jeśli chcesz wyzerować dany bit to zapis wygląda tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

55555 napisał(a):
Dziękuje za radę z (0<<CS21), czyli go pominąć bo 0 jest tam domyślnie?
dokładnie tak, poza tym jak widzisz powyżej do ustawienia zera jest "&=" plus negacja sumy bitów, a do ustawienia jedynek "|=" i suma bitów, nie da się w jednej linii jednocześnie wyzerować jednych bitów i ustawić 1 na innych chyba że zapiszesz cały port wartością bitów.

Tak więc do ustawienia trybu CTC timera2 należy ustawić tylko bit WGM21 na 1 w rejestrze TCCR2 zgodnie z tabelką:
Obrazek
czyli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a następnie do rejestru porównania OCR2 musisz jednorazowo załadować wartość do której licznik ma liczyć.
A no i oczywiście trzeba ustawić preskaler ale to już tak samo jak w normal mode.
Musisz tylko uważać na noty bo często są błędy w nazewnictwie portów (wynikające zapewne ze sposobu ich tworzenia poprzez wklejanie gotowych bloków opisowych) nota ot atmegi64A którą ja czytałem ma wpisany port porównania dla timera 2 jako OCR0 co jest oczywiście błędne - ma być OCR3 - wynika to z logiki OCR czyli rejestr porównania a zero czy 2 oznacza numer timera czyli timera 0 lub timera 2 (dla timera 1 i 3 masz jeszcze dodatkowo L i H bo liczniki 16 bitowe a rejestry są 8 bitowe więc są dwa bity LOW i HIGHT; a dodatkowo te liczniki mają kilka rejestrów porównania oznaczane dużymi literami alfabetu czyli A, B ...)


Autor postu otrzymał pochwałę


Ostatnio edytowano 6 sie 2017, o 19:41 przez xentis, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2017, o 19:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Ajć, :?
Wbijam się pod postem kolegi xentis, napisałem to wysyłam. Będzie co poczytać ;)
Popatrz... 8-)
Chcę ustawić timer_2 w tryb CTC:
Na stronie 226 DS'a widzę że muszę załączyć bit WGM21, który znajduje się w rejestrze TCCR2.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Potem ustawiam preskaler np. na 1024 ( CS22 i CS20 ) w rejestrze też TCCR2 ,zgodnie z notą strona 228 i 226.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na marginesie: bit CS21 pozostawiamy bez zmian (domyślnie jest wyzerowany) ;)
Obrazek
ustawiam dodatkowy podział zezwalając licznikowi zliczać do np 77. (78 tyknięć razem z zerem).
8000000 / 1024 / 78 = ~100,1Hz (10ms).
albo do 155(156 tyknięć)
8000000 / 1024 / 156 = ~50Hz (20ms).
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz czas na zezwolenie na przerwanie od porównania z wartością rejestru OCR2.
Obrazek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz potrzebujemy obsłużyć nasze przerwanie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Złóżmy to w całość . :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jakoś coś takoś. :)
....................................................
55555 napisał(a):
I jeszcze jak włączać i wyłączać jakiś timer?

timer:
Załączyliśmy ustawiając preskaler :).
Możemy timer wyłączyć usuwając ustawiony preskaler. :)
Obrazek
o tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

albo wyłączyć tylko nasze przerwanie :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

:) pozdrawiam.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2017, o 19:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Daro69 napisał(a):
Ajć, :?
Wbijam się pod postem kolegi xentis, napisałem to wysyłam. Będzie co poczytać ;)
hehe ja też nie zauważyłem że już mały elaborat wyżej zamieściłeś :lol: - teraz kolega będzie miał do poczytania i utrwalenia ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sie 2017, o 08:24 
Offline
Użytkownik

Dołączył(a): 30 mar 2016
Posty: 30
Pomógł: 0

Dzięki chłopaki, jesteście wielcy.



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: 37 ]  Przejdź na stronę Poprzednia strona  1, 2

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