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



Teraz jest 29 mar 2024, o 02:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 8 kwi 2021, o 22:26 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

Witam, piszę taki testowy program, który ma migać diodą co 1s stworzyłem takie program jak poniżej i coś mi nie do końca działa, bo dioda powinna zmieniać swój stan co sekundę, a tutaj dzieje się to zawsze o sekundę dłużej czyli, np. w tym przypadku co 2s. Jak mogę naprawić i dlaczego tak się dzieje? Czy w ogóle sam zamysł, który tutaj przedstawiłem jest poprawny?

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: 8 kwi 2021, o 23:37 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

antosV10 napisał(a):
Dlaczego dioda zmienia swój stan w czasie o 1s dłuższym?


Ponieważ w warunku zatrzymujesz swój program na 1s delayem. Jak już korzystasz z timera to unikaj dalaya.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2021, o 09:20 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

Dziękuję za pomoc i cenne uwagi :D jeszcze chciałem dopytać czy taka funkcja jaką poniżej napisałem jest poprawna? Bo na pierwszy rzut oka wszystko działa ok ale chciałbym, żeby ktoś doświadczony na to spojrzał. Jak np użyję delay'a to dioda zmienia swój stan dokładnie co sekundę, a z tą funkcją zdecydowanie częściej.

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: 10 kwi 2021, o 11:21 
Offline
Moderator
Avatar użytkownika

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

Polecam ci gorąco Bluebooka, wiele rzeczy by ci się wyjaśniło - nie tylko z języka C ale i z programowania AVR'ków

https://atnel.pl/mikrokontrolery-avr-jezyk-c.html

A w tym kodzie skoro chcesz bazować na fladze OCF1A to po jakiego grzybka aktywujesz sprzętowe przerwanie w TIMSK1 i masz pustą procedurę? To jest bardzo ale to bardzo przekombinowana droga żeby w ten sposób migać diodą co sekundę.

_________________
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: 10 kwi 2021, o 15:00 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

mirekk36 napisał(a):
Polecam ci gorąco Bluebooka


Zaglądnąłem do Bluebooka i faktycznie znalazłem taką funkcję w rozdziale dotyczącym pilota na podczerwień. Napisałem taki kod jak poniżej, żeby migać diodą co sekundę, ale dioda zapala się tylko raz na początku programu, a potem nic się nie dzieje? Sprawdzałem też kod z kilku stron na internecie i był bardzo podobny, ale także mi nie działają.
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 kwi 2021, o 08:29 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

Zmieniłem w kodzie tylke wartość rejestru OCR1A na 62499 i wszystko działa. Dlaczego, gdy był on ustawiony na 62500 dioda nie migała skoro jest ro rejestr 16-bitowy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2021, o 11:00 
Offline
Użytkownik

Dołączył(a): 31 lip 2016
Posty: 154
Pomógł: 4

antosV10 napisał(a):
Zmieniłem w kodzie tylke wartość rejestru OCR1A na 62499 i wszystko działa. Dlaczego, gdy był on ustawiony na 62500 dioda nie migała skoro jest ro rejestr 16-bitowy?

Tylko, że licznik Timera liczy od zera.
Od 0-62466 = 62500

------------------------ [ Dodano po: 4 minutach ]

zorro napisał(a):
antosV10 napisał(a):
Zmieniłem w kodzie tylke wartość rejestru OCR1A na 62499 i wszystko działa. Dlaczego, gdy był on ustawiony na 62500 dioda nie migała skoro jest ro rejestr 16-bitowy?

Tylko, że licznik Timera liczy od zera.
Od 0-62466 bo nie przekraczasz 62536

------------------------ [ Dodano po: 7 minutach ]

zorro napisał(a):
antosV10 napisał(a):
Zmieniłem w kodzie tylke wartość rejestru OCR1A na 62499 i wszystko działa. Dlaczego, gdy był on ustawiony na 62500 dioda nie migała skoro jest ro rejestr 16-bitowy?

Tylko, że licznik Timera liczy od zera.


------------------------ [ Dodano po: 4 minutach ]

zorro napisał(a):
antosV10 napisał(a):
Zmieniłem w kodzie tylke wartość rejestru OCR1A na 62499 i wszystko działa. Dlaczego, gdy był on ustawiony na 62500 dioda nie migała skoro jest ro rejestr 16-bitowy?

Tylko, że licznik Timera liczy od zera.
Od 0-62466 bo nie przekraczasz 62536


------------------------ [ Dodano po: 27 minutach ]



------------------------ [ Dodano po: 28 minutach ]




Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2021, o 12:02 
Offline
Użytkownik

Dołączył(a): 31 lip 2016
Posty: 154
Pomógł: 4

Jaką wartość wpisałeś do rejestru porównania OCRx?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2021, o 22:28 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

Faktycznie wartość była za duża myślałem, że rejestr 16 bitowy może trzymać wartości do max 65536. Na tej podstawie napisałem funkcję, która ma czekać określoną liczbę us, ale znowu dioda zmienia swój stan w czasie dłuższym tak o 1, 2 s. Dlaczego mi to nie działa, skoro przy funkcja które czekają określoną liczbę milisekund lub sekund wszystko jest ok? Coś przeoczyłem w tej funkcji? W pętli głównej podaję jej jako argument liczbę 1milion bo dioda ma zmieniać swój stan co sekundę.

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 10 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