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



Teraz jest 30 sty 2026, o 14:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
Autor Wiadomość
PostNapisane: 20 paź 2013, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Witam Wszystkich. Mam na imię Michał, chciałbym dokończyć programować procka (atmega8) do mojego wzmacniacza i jest to mój pierwszy post na forum :) Posiadam programator od Pana Mirka i niebieską książkę. Na wstępie napiszę że nie doczytałem jej do końca i postanowiłem trochę popisać, przetestować kilka rzeczy z książki które były mi potrzebne do napisania programu, który o dziwo działa prawie jak chciałem.

Założenia początkowe były takie:

- Włącz, wyłącz (długie wciśnięcie), zmiana wejścia za pomocą przekaźników (krótki klik) i to wszystko jednego przycisku - prawie zrealizowane, nie wiem jak zrobić przerzucanie wejść sygnału najlepiej bez użycia dodatkowych scalaków. Chciałbym to zrealizować za pomocą softu najlepiej włącz/wyłącz z opóźnieniem 1s, po włączeniu krótkie wciśnięcie zmienia wejście na następne. Do tej pory napisałem kod który podczas krótkiego kliku włącza wzmacniacz i uaktywnia regulację głośności dopiero po włączeniu. Przyciski zwierają do masy.
- Sterowanie głośnością za pomocą potencjometru z silnikiem DC. Wykorzystuję tu mostek H L293DNE który po podaniu stanu wysokiego na nogę 1 (1,2 EN) blokuje możliwość sterowania (to co opisałem wyżej). Od tej nogi mam również podłączoną przez rezystor diodę LED która sygnalizuje wyłączenie wzmacniacza - zrobione, działa.

Dodatkowo chciałbym zrealizować bardzo prosty soft start który składał by się z 2 przekaźników i sterowany byłby z atmegi. Jeden przekaźnik zamyka obwód zasilania po stronie pierwotnej przez rezystory mocy a drugi przekaźnik zwierałby te rezystory po czasie 2 sekund. To chyba nie będzie trudne i myślę, że za pomocą _delay_ms(2000) da radę to zrobić.

Chciałbym prosić o opinię - poradę jak to wszystko zrealizować jak najprostszą metodą, co można zrobić szybciej, prościej i co zrobiłem źle :P

Poniżej 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  
PostNapisane: 20 paź 2013, o 21:19 
Offline
Moderator
Avatar użytkownika

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

No widzisz - (a już dzisiaj to komuś pisałem na tym forum) .... kłopot w tym że się zatrzymałeś w czytaniu ;) ... a warto przynajmniej raz przeczytać ją w całości - tak JEDEN RAZ, bo wtedy byś wiedział że taka obsługa klawiszy to tylko dydaktyka i pierwsze zetknięcie - czego na co dzień nawet nie warto zbyt często stosować nie mówiąc już o innych ciekawych technikach programowania które omawiam dalej i do których potem byś dążył i miał smaka żeby to zrozumieć bo i możliwości daje to większe

ale na spokojnie i prostszymi metodami już można dużo zrobić - posiłkuj się jednak poradnikami z mojego bloga i zobacz akurat nomen omen jest tam fajny poradnik o obsłudze klawiszy ale już takiej porządnej choć jeszcze nie tak zaawansowanej jak pod koniec książki. To jednak z tym można już duuuuuużo zrobić ;)

http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

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

hopek napisał(a):
To chyba nie będzie trudne i myślę, że za pomocą _delay_ms(2000) da radę to zrobić.


tak i pomyśl co się będzie działo z twoim programem jak mu przywalisz takim delayem po plecach ;) ... a co w tym czasie z realizacją innych zadań, które chcesz prawie w tym samym czasie robić ?

a uwierz mi że można nie dość że bez kocich delayów to jeszcze wiele rzeczy w jednym czasie i to wcale nie jest wiedza jakaś z kosmosu tylko dla nie wiadomo jakich speców

masz taki rozdział w bluebooku

"wstęp do stystemów czasu rzeczywistego"

samo przeczytanie go na sucho , zobaczenie co tam będziemy wyprawiać w ćwiczeniu i rzuceniem okiem na kod że to nie jakiś mega JEŻ - a już będzie łatwiej myśleć ;)

_________________
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: 20 paź 2013, o 21:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Obiecuję doczytam :) Z tymi delayami to sam zdążyłem zauważyć że nieraz to wydłuża znacznie obsługę dlatego zabiorę się do dokończenia lekturki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2013, o 21:28 
Offline
Moderator
Avatar użytkownika

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

hopek napisał(a):
dlatego zabiorę się do dokończenia lekturki


wiem wiem, że rączki świerzbią żeby już .... tym bardziej że fajny projekcik i już tyle działa - gratulacje - ale to tylko pokazuje że szybko w miarę idzie ci nauka ...

a w międzyczasie na szybko jak nie wytrzymujesz to mówię - zobacz na blogu fajną i tzw "NIEBLOKUJĄCĄ" obsługę klawiszy 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  
PostNapisane: 20 paź 2013, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Jest taki żart "Jak się nazywa firma niecierpliwego? W Gorącej Wodzie Company"... coś w tym jest :P Ale Panie Mirku dziękuję za rady i obiecuję poczytać, popróbować. A co z "softwarowym rejestrem przesuwnym"? To mnie najbardziej zastanawia... Ale żeby nie być takim hop-siup to narazie dam sobie z tym spokój :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2013, o 22:43 
Offline
Moderator
Avatar użytkownika

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

hopek napisał(a):
A co z "softwarowym rejestrem przesuwnym"?


hmmm a czytał pan o przesunięciach bitowych ??? w bluebooku ? czy coś umknęło ? ;) bo softwarowe rejestry przesuwne to masz pan na pęczki, na kilogramy na hektolitry :lol: .... ilo, chcesz, bitowy ? 8-, 16- czy może 32-bitowy ? w którą stronę chcesz przesuwać ? w prawą ? w lewą ?

chcesz aby były cykliczne tzn zapętlone ?

zobacz np tutaj:

http://mirekk36.blogspot.com/2012/10/ro ... skowa.html

akurat do tego to nie musisz być hej do przodu - zrobisz to od razu, od ręki ;)

stwórz sobie zmienną ilu tam bitową chcesz a potem ją przesuwaj ile wlezie ;) i masz rejestr przesuwny

chyba że chodzi ci o coś innego

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

hopek napisał(a):
Jest taki żart "Jak się nazywa firma niecierpliwego? W Gorącej Wodzie Company"


:lol: dobre dobre - nawet nie słyszałem 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  
PostNapisane: 22 paź 2013, o 22:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Hmm w sumie przesuwanie bitu w prawo z "loopem" zrobiłem tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie jest to może najlepszy sposób, ale w moim przypadku działa :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2013, o 22:54 
Offline
Moderator
Avatar użytkownika

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

nienajlepszy sposób to jest zawsze taki, który NIE DZIAŁA. A ten który działa jest w porządku ;) ... co najwyżej z czasem w miarę potrzeb oczywiście można go optymalizować ;)

_________________
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: 11 lis 2013, o 21:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Witam Ponownie, prowadzę kolejne zmagania z moim sterownikiem, tym razem poszedłem za radą i zastosowałem opcję SuperDebounce z poradnika Pana Mirka ze względu na wyeliminowanie kocich delay-ów:).

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


Krótki opis kodu:
Krótki klik KEY1 włącza przekaźnik zasilania głównego podpięty pod PB0 przez tranzystor i gasi diodę LED sygnalizującą tryb stand-by.
Długi klik wyłącza zasilanie ze zwłoką około 1 sekundy - czyli powraca do stanu stand-by.
Chciałbym jednak żeby po włączeniu przekaźnika zasilania czyli po podaniu stanu niskiego na PB0 pojawiał się również stan niski na PD7 ale z opóźnieniem około 2 sekundy.
Tu mam problem, bo nie chce robić tego za pomocą _delay_ms() bo to mi rujnuje cały program ;/

Próbowałem kombinować z
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w pętli głównej ale niestety poległem :(
W jaki sposób mógłbym to zrobić, czy ktoś może mnie nakierować?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 21:57 
Offline
Użytkownik
Avatar użytkownika

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

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


A w pętli głównej:
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  
PostNapisane: 11 lis 2013, o 22:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Ok tylko nie rozumiem trochę gdzie mam zdefiniować tą flagę, wybaczcie że pytam o takie takie rzeczy... Chciałbym prosić o wytłumaczenie co i jak, może to mi trochę rozjaśni sytuację.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 23:32 
Offline
Użytkownik
Avatar użytkownika

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

Flaga (nazwa może być dowolna) to jest normalna zmienna globalna. Przed main wpisz po prostu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A działać to ma tak: po wejściu do funkcji pwr_on ustawiamy zmienną flaga i nakręcamy timer programowy. Timer zaczyna liczyć od tej wartości do zera. W pętli głównej sprawdzamy czy zmienna flaga jest ustawiona. Jeśli tak to sprawdzamy czy timer doliczył do zera. Jeśli tak to załączamy przekaźnik i zerujemy zmienną flaga po to żeby w następnym obiegu pętli nie sprawdzać już czy timer ma wartość zero. Bez tej zmiennej program po wejściu do pętli głównej od razu załączył by przekaźnik. Bo zmienna Timer2, po starcie programu, ma wartość zero.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 20:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Witam i bardzo dziękuje za pomoc. Po wpisaniu zmiennej z postu powyżej Eclipse zaczął się oburzać że zmienna niezadeklarowana itp, ale to był mój błąd ponieważ wpisywałem zmienną nie w tym miejscu co trzeba. Dopiero po chwili doszedłem do tego że musi być ona zadeklarowana na samym początku, zaraz po zdefiniowanych pinach i portach.
jacekk232 po Twoich zmianach przekaźnik softstartu załączał się nie tylko po włączeniu zasilania głównego, ale po wyłączeniu również, ale dodałem tylko w funkcji pwr_off
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i działa jak należy :)
Człowiek uczy się na błędach ale i tak jeszcze raz dziękuję za pomoc, bez niej by się nie obeszło :) Klikam dalej, może uda mi się skończyć sterownik w tym roku :lol:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 20:55 
Offline
Użytkownik
Avatar użytkownika

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

No tak włącza się bo tak działa obsługa klawisza. Zauważ, że pwr_on zaczyna działać po krótkim wciśnięciu klawisza. A powinna po zwolnieniu. Jak wciskasz klawisz dłużej to najpierw wywoływana jest obsługa krótkiego wciśnięcia a potem obsługa długiego wciśnięcia. Więc jak chcesz wywołać funkcję pwr_off to najpierw wywołana jest funkcja pwr_on.
Jak na moje to funkcja obsługi klawisz powinna być przerobiona aby obsługa krótkiego wciśnięcia następowała po zwolnieniu klawisza a nie po wciśnięciu.

Spróbuj wypróbować lekko zmodyfikowaną funkcję do obsługi klawisza
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Funkcja ogólnie działa tak samo z ta różnicą, że reakcja na krótkie wciśnięcie następuje po zwolnieniu klawisza.
W tym przypadku powinno działać bez zerowania flagi w funkcji pwr_off.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 22:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Rozumiem o co chodzi... Jeśli wcisnę przycisk i przytrzymam to załączy mi jeden przekaźnik i zaraz go wyłączy. Nie wiem czy wypada mi tak pytać "jak to mam zrobić" bo w sumie superdebounce - to moje pierwsze starcie. Ale podejrzewam że zwykłymi if-ami da się to zrobić :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 22:50 
Offline
Użytkownik
Avatar użytkownika

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

No w moim poprzednim poście masz funkcję do obsługi klawisza. Jest trochę zmodyfikowana. Reakcja na krótkie wciśnięcie następuje po zwolnieniu przycisku więc jeśli dłużej przytrzymasz przycisk to nastąpi reakcja na długie wciśnięcie a na krótkie już nie.
Więc zależnie od długości wciśnięcia klawisza zostanie wywołana tylko jedna funkcja albo pwr_on albo pwr_off.

Kod tej funkcji z mojego postu po prostu podmień z tym co masz w programie i usuń
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
z funkcji pwr_off i powinno działać dobrze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 23:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Działało tak jakby odwrotnie, tzn włączało długim a wyłączało po krótkim kliknięciu, ale zamieniłem miejscami kfun1 z kfun2, oraz zmieniłem zmienną klock na 16 bitową i smiga :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 23:26 
Offline
Użytkownik
Avatar użytkownika

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

No zapomniałem dodać że zmieniłem klock z 8 bitowej na 16 bitową.
Moja funkca key_press ma odwrotnie przypisane funkcje kfun1 i kfun2 niż twoja. Ale to szczegół. Najważniejsze że już działa :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 23:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

I Chwała Ci za to. Amen :) Jutro się jeszcze pobawię, ale dziś już mi wystarczy :) Jutro znowu do pracy ;) Dziękuję serdecznie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 01:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Panowie, mam kolejne pytanie i proszę o pomoc. Jeśli chciałbym migać LEDem w części kodu poprzez timer a nie koci delay ;) to czy muszę konfigurować Timer1 żeby nie zakłócić pracy Timer2? Timer 2 jest wykorzystywany tylko do opóźniania załączania jednego przekaźnika.

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


Ma to działać w ten sposób że dopóki wzmacniacz się nie uruchomi (dopóki oba przekaźniki nie będą włączone) to pokrętło z rury plexi ma migać na czerwono
Tutaj zrobiłem to za pomocą delaya, działa jak chcę, ale psuje mi to cały debounce :(
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Ale niestety LED nie miga tylko przygasa delikatnie i część programu odpowiedzialna za załączenie wzmacniacza przestaje działać, tzn zapala się tylko jedna dioda od zasilania...


Może to zobrazuję:
Delay
https://www.youtube.com/watch?v=GD_ldH_6YY8

Timer
https://www.youtube.com/watch?v=vfsNwe7nUXo
Gdzie jest błąd i jak to napisać żeby było dobrze?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 09:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 cze 2012
Posty: 414
Lokalizacja: Oborniki
Pomógł: 5

Zauważ, ze sprawdzasz stan przekaznika podlaczonego do PB0. W tej funkcji if(POWERING UP).
Czy ten przekaźnik od zasilania głównego się wyłącza po uruchomieniu wzmacniacza? Jezeli jest od zasilania to pewnie nie, a w tym momencie masz opoznienie w tej petli 250ms no i Ci sie program zapetla.

Jezeli to jest wlasnie problem, to powinienes napisac to w ten sposob
If(POWERING_UP && !POWER_IS_ON)

Poza tym nie wiem dlaczego masz w srodku RED_ON, a w konentarzu "zgas led"??
Lepiej zrobic to w osobnych if-ach.

Pozdrawiam M.

Wysłane z mojego GT-I9500 przy użyciu Tapatalka

_________________
Pozdrawiam:
Mikołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 16:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sie 2013
Posty: 165
Lokalizacja: Sycyna Południowa
Pomógł: 4

Ogolnie te warunki mi działają, chodziło mi raczej o timerowe miganie LED niz za pomoca delaya. Pisalem o tym na poczatku poprzedniego postu :)

Wysłane z mojego LG-E610 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 16:43 
Offline
Użytkownik
Avatar użytkownika

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

Widzę, że trochę ci się pomyliły timery programowe z timerami sprzętowymi. W projekcie używasz jednego timera sprzętowego (Timer2) w trybie CTC. Ten timer służy do generowania przerwania co 10ms. Przerwanie tego timera jest wykorzystane do działania timerów programowych. W tym projekcie akurat Timer1 i Timer2. Timer1 i Timer2 to są zwykłe zmienne globalne.
Nic nie stoi na przeszkodzie aby tych timerów było więcej i miały zupełnie inne nazwy np. Timer8, Timer_led_tog.
Tak więc do migania diodą nie musisz konfigurować kolejnego timera sprzętowego tylko stworzyć kolejny timer programowy np. pTimer_led.
Poza tym zastąpienie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

To trzeba zapisać trochę inaczej np. tak:
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 w przerwaniu od Timera2 sprzętowego) trzeba dodać mechanizm nowego timera programowego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć 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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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