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



Teraz jest 19 kwi 2024, o 12:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 33 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
 Tytuł: Preskaler
PostNapisane: 18 sie 2016, o 14:41 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

witam,

Czy można w jakiś sposób zmieniać preskaler podczas działania programu?



Ostatnio edytowano 18 sie 2016, o 14:51 przez budapreniak, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 18 sie 2016, o 14:48 
Offline
Moderator
Avatar użytkownika

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

A dlaczego miałoby to być wg ciebie niemożliwe ? ;) spróbuj to wyjaśnić - to myślę że przy tej okazji zrozumiesz że to normalna sprawa ;)

_________________
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: Preskaler
PostNapisane: 18 sie 2016, o 14:50 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Źle sformułowałem pytanie :) Wiem że się da, ale jak to właściwie zrobić
kawałek kodu odpowiadający za ustawianie preskalera:
Kod:
   if(enkoder <= 1500){
      TCCR1B |= (0<<CS12) | (0<<CS11) | (0<<CS10);
      TCNT1 = wynik;
      TCCR1B |= (1<<CS12) | (0<<CS11) | (0<<CS10); //256
      preskaler = 256;
      }
   if(enkoder > 1500 && enkoder <= 4000){
      TCCR1B |= (0<<CS12) | (0<<CS11) | (0<<CS10);
      TCNT1 = wynik;
      TCCR1B |= (0<<CS12) | (1<<CS11) | (1<<CS10); //64
      preskaler = 64;
      }
   if(enkoder > 4000 && enkoder <= 14560){
      TCCR1B |= (0<<CS12) | (0<<CS11) | (0<<CS10);
      TCNT1 = wynik;
      TCCR1B |= (0<<CS12) | (1<<CS11) | (0<<CS10); //8
      preskaler = 8;
      }
   if(enkoder > 14560){
      TCCR1B |= (0<<CS12) | (0<<CS11) | (0<<CS10);
      TCNT1 = wynik;
      TCCR1B |= (0<<CS12) | (0<<CS11) | (1<<CS10); //1
      preskaler = 1;
      }

Program działa po zmianie preskalera, ale nie tak jak powinien.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 18 sie 2016, o 14:57 
Offline
Moderator
Avatar użytkownika

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

No nie działa bo wciąż robisz operacje OR, pomyśl sobie

0b0000 0001 załóżmy że to pierwsza wartość preskalera

później chcesz ustawić

0b0000 0010 druga wartość preskalera

no to po tych twoich wartościach OR - otrzymasz

0b0000 0011 czyli nie to czego oczekiwałeś - nię będzie to ani pierwsza nie druga wersja tylko całkiem co innego ;)

A więc panie - przed ustawianiem ZAMASKUJ te trzy bity preskalera zawsze a później je ustawiaj ;)

_________________
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: Preskaler
PostNapisane: 18 sie 2016, o 22:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Kod:
TCCR1B |= (0<<CS12) | (0<<CS11) | (0<<CS10);

zmień na:
Kod:
TCCR1B  = (0<<CS12) | (0<<CS11) | (0<<CS10);


...w każdym miejscu programu, gdzie zmieniasz wartość preskalera.

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 04:31 
Offline
Moderator
Avatar użytkownika

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

IUVOit napisał(a):
zmień na:
Kod:
TCCR1B  = (0<<CS12) | (0<<CS11) | (0<<CS10);


...w każdym miejscu programu, gdzie zmieniasz wartość preskalera.


To nie jest dobry sposób a nawet bardzo zły :( ... bo niestety ta linia

Cytuj:
TCCR1B  = (0<<CS12) | (0<<CS11) | (0<<CS10)


w ogóle nie WYZERUJE tych bitów - stosowanie takiego wyrażenia (0<<x) wraz z operacją bitową OR w ogóle nie ma niestety sensu, proszę to sobie rozpisać bitowo a wtedy wszystko stanie się zrozumiałe.

ale już wyjaśniam bo widzę że i autor wątku popełnia ten sam błąd - trzeba ZAMASKOWAĆ czyli polecam i przypominam ten krwawy poradnik ;)
http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html

a tu w tym kodzie sprowadzi się to do wykonania przed każdą operacją ustawienia preskalera maskowania 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.


Przypominam to co BLUEBOOKU przypominałem po wielokroć

Operacja

Kod:
|= ustawia bity

&= ~ zeruje bity


Mam nadzieję, że teraz jaśniej dla wszystkich ;)


Autor postu otrzymał pochwałę

_________________
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: Preskaler
PostNapisane: 19 sie 2016, o 06:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

No fakt :-) ale glupote napisalem, przepraszam za wprowadzenie w blad! Za pomoca podstawienia sie wyzeruje inne bity a w dodatku to "0" i zamiana "or" z "and" :-D

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 07:51 
Offline
Moderator
Avatar użytkownika

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

IUVOit napisał(a):
ale glupote napisalem

eee tam zaraz ... ludzka rzecz się mylić... ileż to razy ja się pomylę i jakoś żyję .... ;)

Ja dzięki twojemu postowi dopiero zobaczyłem, że autor wszędzie wcześniej zrobił właśnie z tymi (0<<x) ... a nie zauważyłem tych zer przedtem. Dlatego postanowiłem wyjaśnić to szerzej.

_________________
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: Preskaler
PostNapisane: 19 sie 2016, o 08:02 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Dziękuję, dużo mi to wyjaśniło. Dodatkowo obejrzałem krwawy poradnik :)

Czyli zawsze unikać ,,(0<<CS12)"? Czy można użyć ich gdy ustawiam timery przy włączeniu programu lub po maskowaniu (łatwiej później edytować ustawienia timerów)?
Czy taki wpis tylko wydłuża czas trwania programu? Różnica pewnie nie zauważalna, ale gdy program musi być bardzo szybki to może to generować niepotrzebne opóźnienia?

Mam jeszcze jedno pytanko, a nie będę zakładał nowego tematu. Mam przerwanie generowane na timerze 1 od przepełnienia. TCNT1 jest obliczane i wpisywane w przerwaniu. W przerwaniu również muszę zapalić diodę np. z wypełnieniem 1/16 lub ze stałym czasem np. 1ms. Wydaje mi się że PWM byłby odpowiedni, albo timerem 0 odmierzać czas 1ms (tylko czy nie będzie problemów że timer będzie coś odliczał w przerwaniu w którym miga dioda).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 08:19 
Offline
Moderator
Avatar użytkownika

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

budapreniak napisał(a):
witam,

Czy można w jakiś sposób zmieniać preskaler podczas działania programu?


Przede WSZYSTKIM NIGDY tak nie rób, nie kasuj własnych postów z pytaniem bo robi się BAJZEL że aż strach. Kto później będzie wiedział o co chodziło ? A nie jesteś przecież nową osobą na forum. Liczę że był to pierwszy i ostatni taki przypadek.

------------------------ [ Dodano po: 3 minutach ]

budapreniak napisał(a):
Czyli zawsze unikać ,,(0<<CS12)"? Czy można użyć ich gdy ustawiam timery przy włączeniu programu lub po maskowaniu (łatwiej później edytować ustawienia timerów)?

Łatwiej edytować? Sorki ... ale później przez to można tak sobie namieszać że błędu będziesz szukał nie godzinami a dniami albo tygodniami.Już pokazałem że ten zapis jest po prostu nielogiczny. Wprawdzie on nie psuje działania ale później zauważyć gdzieś zera .... to masakra

budapreniak napisał(a):
Czy taki wpis tylko wydłuża czas trwania programu? Różnica pewnie nie zauważalna, ale gdy program musi być bardzo szybki to może to generować niepotrzebne opóźnienia?

Tu nie chodzi o czas działania programu bo co to ma za znaczenie często - ale już o zajętość niepotrzebną pamięci Flash procka ? - to chyba wiesz jakie to ważne

_________________
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: Preskaler
PostNapisane: 19 sie 2016, o 09:09 
Offline
Użytkownik
Avatar użytkownika

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

Witam,
Kolego "budapreniak", jeżeli dobrze zrozumiałem,
to próbujesz wyzerować bity w rejestrze tym wpisem (0<<CS12).
jeżeli zrobisz tak przykładowo
zmienna = 0b11111111;
po czym wpiszesz: zmienna |= (0<<2); to nie spodziewaj się że otrzymasz wyzerowanie 11111011 niestety pozostanie 11111111.
operator | sprawdzi czy w określonym przez ciebie przesunięciu jest choćby jedna jedynka, i w zmiennej i w przesunięciu . Po czym we wskazane przesunięciem miejsce wstawi 1 .
Do zerowania bitów stosuje się zapis np:
zmienna &=~(1<<2); co zmieni zmienną 1111 1111 na 1111 1011.
albo
zmienna &=~(3<<2); zmienną 1111 1111 na 1111 0011 - przesunięta wartość 3 (0000 0011), o dwa miejsca w lewo (0000 1100).
pozdrawiam Darek

------------------------ [ Dodano po: 17 minutach ]

przeczytałem jeszcze raz wątek, chyba dubluję - to już było tłumaczone. :D

------------------------ [ Dodano po: 39 minutach ]

A.. co tam - dokończę.
Potem zadziała nasza matylda :) było 0000 1100 teraz jest 11110011
a operator & porówna naszą krwawą maskę ze zmienną 1111 1111
i tam gdzie się powtarzają jedynki pozostanie 1, a tam gdzie nie wstawi 0. i wyjdzie z tego 11110011.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 18:10 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Została chyba ostatnia kwestia i program chyba będzie gotowy :)

Ogólnie wyliczyłem w exelu, zakresy obrotów dla poszczególnych ustawień preskalerów, tak aby każdej wartości obrotów odpowiadała jedna wartość TCNT1, jedynie dla niektórych przypadków wartość obrotów ma dwie wartości TCNT1 (z tego co mi się wydaje da to dość dobrą dokładność).

To jest to co działa, ale chyba czas trwania błysku lepiej by było regulować wypełnieniem. Niestety nie mogę tego zrobić żeby było dobrze. Próbuje i próbuje i nie idzie :( także znowu proszę o pomoc lub wskazówki ;p

KOD:
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: Preskaler
PostNapisane: 19 sie 2016, o 21:31 
Offline
Użytkownik
Avatar użytkownika

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

cześć,
powiem szczerze że średnio mi się podoba to wstrzymywanie procesora w przerwaniu na 500us, przy Twoim kwarcu chyba 16MHz to wstrzymujesz "uc" na 8000 tyknięć.
Chyba lepiej będzie ogarnąć to na PWM sprzętowym w timer1 i załączać PB0 czyli OC1A, w PWM'ie na określony przez OCR1A czas.
Chyba w tym kierunku bym podążał .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 21:50 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Właśnie ten delay mi się strasznie nie podoba. Też tak mi się wydaje, że PWM będzie lepszym rozwiązaniem, próbowałem to zrobić tylko mi coś nie idzie. Dlatego piszę żeby ktoś mnie nakierował jak się za to zabrać ;p



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 19 sie 2016, o 22:10 
Offline
Użytkownik
Avatar użytkownika

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

na którym to uc ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 20 sie 2016, o 06:43 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

atmega 8 (zewnętrznie taktowana 16MHz)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 20 sie 2016, o 12:22 
Offline
Użytkownik
Avatar użytkownika

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

Powinieneś, tak myślę, Pomyśleć nad ustawieniami :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

preskaler jest wspólny więc zostaje.
wyjście na LED przejdzie na PB1 -(OC1A)PWM.
wartość max licznika to ICR1, ( PB1 - w stan wysoki)
wartośc do porównania licznika z rejestrem, w OCR1A. (zmiana stanu PB1 na niski.)

Może jakoś tędy droga. ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 22 sie 2016, o 14:45 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Cześć, w końcu złapałem trochę czasu :)
Przemyślałem to i w exelu wyliczyłem nowe wartości które wpisuje do ICR1 (okres) liczę z niego 5 % i jest to moje OCR1A (wypełnienie). Tylko nie wiem gdzie umieścić wpisywanie nowych wartości do ICR1 i OCR1A, bo gdzie nie próbuje to nie działa to dobrze. Jakieś przerwanie od PWM (o ile jest) i po każdym przepełnieniu wpisanie wyliczonych wartości?

Dorzucam kod z przerwaniem:

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: Preskaler
PostNapisane: 22 sie 2016, o 20:33 
Offline
Użytkownik
Avatar użytkownika

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

Tak sobie myślę,
Kurcze, czegoś w takim razie nie wiem, skoro nie działa.
Szukam i nie mogę na nic konkretnego natrafić. Problemem może być zapis ICR. w chwili przepełnienia(ICR jest 16_bit , zapis bez buforowania,"w trybie 15 z buforowaniem" NIE BARDZO TO JESZCE ROZUMIEM). Chodzi o aktualizacje rejestru ICR, który składa się z dwóch rejestrow 8-bit i są zapisywane szeregowo.
Ale spróbuj zamiast aktualizować w przerwaniu od przepełnienia, może w przerwaniu od porównania. czyli zanim licznik zliczy do MAX.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

może to coś pomoże.
A może już ktoś wie jak to ogarnąć.?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 22 sie 2016, o 20:47 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Dzięki za odpowiedzi, ale niestety to jeszcze nie to :p
Przy tej i przy poprzedniej wersji programu tylko pierwszy takt jest ok (pierwszy po włączeniu), potem dioda już się odzywa.
Nie mam pojęcia gdzie może tkwić problem, wydaje się że wszystko powinno ładnie śmigać :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 22 sie 2016, o 21:06 
Offline
Użytkownik
Avatar użytkownika

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

Sorka ze tak Cię męczę z tymi kodami. :?
Może przejść na tryb 15 . tylko wtedy wyjściem jest OC1B. (PB2.) :(

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: Preskaler
PostNapisane: 22 sie 2016, o 21:20 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Bardziej to ja meczę o pomoc chyba ;p Na trybie 15 całkowita cisza, nawet ani razu nie mrygnie :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 00:05 
Offline
Użytkownik
Avatar użytkownika

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

1) zapomniałem załączyć COM1B1, od OC1B.
2) program do przejrzenia na spokojnie. znalazłem błędny wpis
w linijce : // ustawianie zakresu obrotów - 3 ify.
3) przypisanie do OCR ów i liczenie wypełnienia wkitrałem do pętli gł. , pozbywając się przerwania _OVF_ . coś niezdarnie, ale mryga, szybciej i wolniej :)
wreszcie zajarzyłem o co chodzi w tym kodzie . :D to generator stroboskopowy. :P A ja dopatrywałem się że to ma mierzyć, i zawzięcie szukałem sposobu na wpisanie OCRów i ICR w przerwaniu. :lol:
Trochę czasu, to ogarniemy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 09:43 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

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


zakres 120-42000.
Pierwszy if ustawia zakres 120 jeżeli chcemy zjechać poniżej 120.
Drug if podobnie, mam mnożnik ustawiony na 1000 i enkoder 120, to jak cofnę potencjometr to będę miał wartość 64656 czyli muszę dać na 120 jeżeli powyżej 60000, żeby mi wartość nie skakała.
Trzeci if nie pozwala przekroczyć 42000 ;p
3) Jak ICR i OCR będą zapisywane w pętli głównej to nie będą ciągle nadpisywane i nigdy nie wykona się pełen okres?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 11:43 
Offline
Użytkownik
Avatar użytkownika

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

Punkt 3.
Będą nadpisywane w każdym obiegu pętli. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 13:02 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Źle to zrozumiałem :p bo wartość licznika jest w TCNT a icr i OCR tylko ogranicza licznik. Dziś znowu coś pokombinuje, żeby to ruszyć. Ale narazie brak pomysłów ;(

edit:
A problemem nie jest że OCR i ICR są rejestrami 2 bitowymi? Bo coś kiedyś w internecie o tym czytałem, ale chyba programując w C to nie stwarza problemu, ale nie jestem pewien do końca ;p

edit 2:
dioda się zaświeciła, gdy kręcę potencjometrem to po prostu rozjaśnia się lub ciemnieje i jak zgaśnie to przy kolejnym kroku enkodera od nowa zaczyna się rozjaśniać, hmm

edit 3:
miałem pomylone OCR i ICR. Teraz jak jest niby ok, to LED świeci przy uruchamianiu, a po przejściu do pętli głównej nie daje oznak życia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 18:25 
Offline
Użytkownik
Avatar użytkownika

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

hehe. :D
fajne. :!:
Mryga sobie z różną częstotliwością. i podaje obr/min , f[HZ], enkoder ... :)

------------------------ [ Dodano po: 12 minutach ]

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


a przepisanie OCR1A i OCR1B w trybie 15 działa i w przerwaniu i w pętli. :D

------------------------ [ Dodano po: 32 minutach ]

w trybie 14 z ICR1 i OCR1A też hula :) na nodze OC1a.

tylko trochę mi się nie podoba regulacja wypełnienia. :?

------------------------ [ Dodano po: 40 minutach ]

a.. komentarz .
zamiast po skasowaniu bitów w rejestrze ustawiać tylko wybrane a pozostałe pomijać,
ustawiane były potrzebne bity razem z wyzerowaniem innych.
zamiast REJESTR |=....... BIT;
było REJESTR = .......BIT;
Tłumaczone wcześniej, dlatego sobie daruję. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 20:18 
Offline
Użytkownik

Dołączył(a): 09 sty 2015
Posty: 25
Pomógł: 0

Dzięki wielkie za pomoc i cierpliwość :) Kurka to ustawianie bitów muszę potrenować.
Led sobie mryga, tylko strasznie słabo i nie różnicy czy jest tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

w obu przypadkach mryga tak samo słabo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Preskaler
PostNapisane: 23 sie 2016, o 20:50 
Offline
Użytkownik
Avatar użytkownika

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

szukam błędu.
wyświetlam wartości tim, okres, OCR1A, OCR1B, coś złe proporcje przy zmianie preskalera.

------------------------ [ Dodano po: 30 minutach ]

są problemy w rzutowaniach .

------------------------ [ Dodano po: 58 minutach ]

po takiej operacji sprawdź na wyświetlaczu - wypełnienie = 0. :(
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

trzeba uzupełnić wiedzę na temat rzutowania, albo obejść
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: Preskaler
PostNapisane: 23 sie 2016, o 22:25 
Offline
Użytkownik
Avatar użytkownika

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

coś pomogło - taki wpis. np. 200, 100,
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 33 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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