ATNEL tech-forum https://forum.atnel.pl/ |
|
timery programowe https://forum.atnel.pl/topic23920.html |
Strona 1 z 1 |
Autor: | krawi92 [ 16 wrz 2021, o 18:14 ] |
Tytuł: | timery programowe |
Hej, mam problem z korzystania z timerów programowych. Jeśli powiedzmy chcę sobie migać pojedyncza diodą, lub zwiększać wartość np: OCRx to ok. Ale chciałem np: w timerze zwiększać i zmniejszać wartość pwm. Nie bardzo wiem, jak do tego podejść bo gdy w instrukcję timera wrzuce np: pętle for, no to ona kręci się z pełną prędkością. |
Autor: | tonygryps [ 16 wrz 2021, o 18:42 ] |
Tytuł: | Re: timery programowe |
Strasznie mylisz pojęcia (jak masz bluebooka to musisz jeszcze raz poczytać o timerach programowych) timery programowe nie działają jak delay tylko np. ustawiasz jakiś timer w tryb ctc ( u ciebie to timer 1) tak aby jego przerwanie wykonywało się co jakiś określony czas (ustala to taktowanie procka preskaler i wartość wpisana w rejestr OCR tego timera) i w tym przerwaniu robisz np jak Ty język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. |
Autor: | krawi92 [ 16 wrz 2021, o 19:01 ] |
Tytuł: | Re: timery programowe |
Ja utknąłem w pewnym punkcie. Chcę kręcić servem w jedną i w drugą na zmianę. Na początku zrobiłem to na 2 pętlach for (for uint8_t i=0;i<255;i++){ pwm1=i; _delay_ms(50); { (for uint8_t i=255;i>1;i--){ pwm1=i; _delay_ms(50); { Ale, chce się pozbyć tych delajów i pomyślałem, że mogę to zrobić na timerach programowych, tylko nie wiem właśnie jak do tego podejść. |
Autor: | tonygryps [ 16 wrz 2021, o 19:19 ] |
Tytuł: | Re: timery programowe |
No właśnie bez pętli for ustaw tak warunek if żeby wykonywał kod co 50 ms i dodatkowo użyj zmiennej np kierunek np tak |
Autor: | krawi92 [ 16 wrz 2021, o 19:40 ] |
Tytuł: | Re: timery programowe |
Załapałem. W moim kodzie timer1 wykonywał po prostu obieg pętli co taki czas jaki mu zadałem. Miałem ogólnie problem jak zawrócić w drugą stronę, bo zwiększanie to nie problem, wystarczyło pwm1++; |
Autor: | krawi92 [ 17 wrz 2021, o 18:19 ] |
Tytuł: | Re: timery programowe |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. No, w końcu się udało |
Autor: | Marhef [ 18 wrz 2021, o 12:20 ] |
Tytuł: | Re: timery programowe |
krawi92 napisał(a): if(pwm1 == 18)kierunek = 0; To jedno zmieniłbym na if (pwm1 <= 18). Dlaczego? A co, jeśli zmienisz wartość tej zmiennej w innej części programu i będzie mniejsza od 18? Będzie nadal działać, ale chyba nie tak, jakbyś chciał
|
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |