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



Teraz jest 6 sie 2026, o 23:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
 Tytuł: Timer1 CTC
PostNapisane: 25 lis 2015, o 12:04 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Proszę o pomoc przy CTC
Używam atMEGA32
kwarc 18432000

18432000/64/200=1440=100Hz Ok
18432000/64/400=720 =200Hz Ok
18432000/64/600=480 =234Hz ?!
miernik w ostatnim przypadku pokazuje 234 zamiast 300

Tak samo na innych stopniach podziału prescalera max wartość to 234?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 25 lis 2015, o 12:16 
Offline
Moderator
Avatar użytkownika

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

W ogóle się temu nie dziw - bo robisz tzw "masakrę amerykańską piłą tarczową" ....

To co robisz to tzw technika "timerów programowych" Ona dla tak krótkich czasów (już poniżej 100 Hz) prawie nie ma sensu .... dla 100 Hz jeszcze tak no ale ABSOLUTNIE nie do generowania stabilnego i pewnego przebiegu ;) a TYM BARDZIEJ gdy go jeszcze generujesz w pętli głównej. Panie kochany timery programowe nie są w stanie być tak dokładne i co więcej ;) NIE MAJĄ ... hmmm nie muszą być TAK DOKŁADNE bo służą do CAŁKIEM INNYCH CELÓW ... do takich gdzie ich kiepska precyzja w porównaniu do timerów sprzętowych, jest w 100% wystarczająca a często nawet aż na wyrost ;)

Po prostu nie idź tą drogą ... Jak chcesz generować stabilniejszy przebieg to zdecyduj się na generowanie go bezpośrednio w sprzerwaniu timera sprzętowego.

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 16:36 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Timer1 zlicza w przerwaniu wg wskazówek.
Dodałem Timer2 pod który podłączone są Timery programowe.
Oba Timery 1 i 2 z przerwaniami, wyprowadziłem do osobnego pliku.

Chcę zapytać o samą inicjalizację w main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W tym drugim przypadku Timer1 nie pracuje
Jak to poprawnie deklarować?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 16:44 
Offline
Moderator
Avatar użytkownika

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

Ale czy kolega nie rozumie o czym piszę ?

to jeszcze raz prościej i krócej:

Timery programowe nie służą do generowania precyzyjnych i dokładnych przebiegów

jaśniej ?

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 17:06 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Dokładnie zrozumiałem i poprawiłem.
Tak jak wyżej napisałem, precyzyjny przebieg generuje Timer1 16bit i nic po zatym.
Wszystkie programowe obsługuje Timer2 8bit.

Moje pytanie dotyczy samej inicjalizacji.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


*oczywiście chodzi o inicjalizację



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 22:45 
Offline
Moderator
Avatar użytkownika

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

rohan napisał(a):
Moje pytanie dotyczy samej inicjalizacji.

No drugi raz wklejasz kod w którym w ogóle nie widać jak inicjalizujesz timery a znowu zadajesz pytanie czy ty je dobrze inicjalizujesz ...

to co pokazałeś to jakieś wywoływania twoich funkcji, a nikt nie wie co ty w nich wyprawiasz - nie wiadomo jaki kod ci nie działa - więc zastanów się

no chyba że takie zagadki zadajesz żeby zgadywać co ty tam wpisałeś ?

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 23:12 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Zaznaczyłem w komentarzach o które miejsce mi chodzi.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 23:23 
Offline
Moderator
Avatar użytkownika

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

zapamiętaj sobie jedno, ten kod:

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


ABSOLUTNIE nie nadaje się do używania go w procedurach obsługi przerwań

rohan napisał(a):
//-----------------------------------------------------------------------------------------------
         timer1();//Tak działa
         void timer2(void); // <---- koszmarek

to jest jakiś koszmarek - poczytaj w Bluebooku o funkcjach w C i jak się je wywołuje

kolejny koszmarek babolek - w swoim pliku com.c definiujesz


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


a nie widzisz, że w pliku main.c też masz zdefiniowaną tą samą zmienną ?

co jeszcze lepsze, w pliku *.h deklarujesz już całą kawalkadę zmiennych

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


których nigdzie nie ma zdefiniowanych poza tym Timer1 podwójnie

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 23:39 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Poprawiłem, funkcje przycisku przeniosłem do programowego timera.
Usunąłem zdublowaną deklarację.
Teraz działa jak należy :D
Teraz można zapisać
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dziękuję za pomoc

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 27 lis 2015, o 23:42 
Offline
Moderator
Avatar użytkownika

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

rohan napisał(a):
funkcje przycisku przeniosłem do programowego timera.

To popraw to ;) to jest funkcja która ma działać BEZPOŚREDNIO w pętli głównej programu, jest nieblokująca i będzie ładnie działać - po to właśnie została stworzona. To że działa ci w timerze programowym to hmmm no będzie ale to jest bez sensu ;) zrozum .... ona się dobrze czuje w pętli głównej i nie potrzebuje żadnego timera

jak już coś używasz z bloga
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

to czytaj dokładniej jak to działa i jak się tego używa ok ? ;)

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 28 lis 2015, o 10:22 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Przesyłam raz jeszcze, ze wszystkimi poprawkami
Timer2 pracuje
Timer1 nie pracuje :|

Program działa, tylko pod warunkiem że pierwszy zainicjalizuję timer2
Czy ta kolejność ma jakieś znaczenie?
Proszę raz jeszcze spojrzeć ;)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 28 lis 2015, o 10:53 
Offline
Użytkownik

Dołączył(a): 20 lip 2015
Posty: 83
Pomógł: 6

Przypatrz się uważnie temu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wniosek chyba jest prosty? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 28 lis 2015, o 11:39 
Offline
Użytkownik

Dołączył(a): 24 kwi 2014
Posty: 59
Pomógł: 0

Teraz widzę.
To była przyczyna
Dzięki kolego :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:10 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 10
Pomógł: 0

witam, mam pytanie dotyczące Timera1. mój procesor atmega32 pracuje na kwarcu 16 mhz
ustawiłem timer1 jako CTC
TCCR1B |= (1<<WGM12);
oraz przerwanie TIMER1_COMPA_vect w którym zapalam i gasze diode
TIMSK |= (1<<OCIE1A);
rejestr porównania ustawilem na 0
OCR1A = 0
chce sprawdzic jak szybko (często) moga byc obslugiwane przerwania.
jesli ustawie preskaler na 1024 lub 256 to wszystko działa wg obliczeń. częstotliwość sprawdzam oscyloskopem podłaczonym do wyjscia portu w którym jest dioda.
jesli preskaler zmniejszam do 64, 8, 1 to częstotliwość już się nie zmienia i wynosi ok 240khz
Jesli moje rozumowanie jest prawidłowe to w sumie rozumiem ze gdyby preskaler był np =1 to przerwanie musiałoby sie wykonywać z f=16Mhz a wtedy procesor nie miałby juz na nic czasu.
pytanie jaka jest maksymalna szbkosc pojawiania się przerwania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:37 
Offline
Moderator
Avatar użytkownika

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

MikroProsiaczek napisał(a):
pytanie jaka jest maksymalna szbkosc pojawiania się przerwania?

to zależy od ciebie a dokładniej ile kodu wpiszesz w przerwaniu ;) czy użyjesz prologu i epilogu (domyślnie są włączone) czy się ich pozbędziesz i sam napiszesz w asm wstawkę do przerwania - np miganie diodą LED nie będzie dużo zajmować ;)

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Wejście do przerwania poprzedzone jest tzw. prologiem a wyjście - epilogiem. W skrócie prolog to odłożenie na stos ważniejszych rejestrów procesora, a epilog - odtworzenie wartości tych rejestrów po zakończeniu przerwania.
U mnie w przykładowym projekcie wygląda to tak
Składnia: [ Pobierz ] [ Ukryj ]
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak widzisz jest to kilka, kilkanaście instrukcji. Pewnie to jest przyczyną maksymalnej częstotliwości z jaką obsługiwane jest przerwanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:43 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 10
Pomógł: 0

dziekuję za odpowiedz.
w przerwaniu mam tylko 3 linie, i właśnie zauważyłem ze jak dwie usunęłem to i częstotliwość wzrosła.
co to jest prolog i epilog i jak je wyłączyć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:46 
Offline
Moderator
Avatar użytkownika

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

MikroProsiaczek napisał(a):
co to jest prolog i epilog i jak je wyłączyć?

Znasz asembler ? potrafisz napisać wstawkę w asm do C ? .... jeśli nie - to nie bierz się za wyłączanie prologu i epilogu bo będzie masakra amerykańską piłą tarczową ;)

a wyłączyć można za pomocą ISR_NAKED

_________________
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  
 Tytuł: Re: Timer1 CTC
PostNapisane: 30 lis 2015, o 22:52 
Offline
Nowy

Dołączył(a): 23 gru 2014
Posty: 10
Pomógł: 0

niestety nie znam, a nie chciałbym się pociąć tą piłą.
próbuje zrobic generator sin. mam 256 próbek w pamięci i wypuszczam je przez PWM. narazie na kwarcu 18.432 (troche zwiekszyłem) udało mi się uzuskać 1.2 khz ale chciałbym więcej tak ok 20khz. może zmniejszyć ilosć próbek? a może jakiś inny pomysł?



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: 19 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Baidu [Spider] 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO