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



Teraz jest 9 sty 2025, o 17:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 9 kwi 2013, o 20:18 
Offline
Użytkownik

Dołączył(a): 20 lut 2013
Posty: 54
Pomógł: 0

Witam,
Odliczanie czasu w pętli przez wait, nie jest chyba najlepszym rozwiązaniem. Chciałbym to zrealizować na przerwaniach. Jak mogę to zrobić na atmedze32? Chodzi mi o odliczanie np. 200ms.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2013, o 20:29 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

- ustalasz przerwanie na przykład co 1ms
- dajesz jakąś zmienną
- w przerwaniu zwiększasz ją
- jak zliczysz do 200 to masz odliczone 200ms
- zerujesz zmienną i liczysz od nowa

Ot i po kłopocie.

Przykład:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2013, o 21:35 
Offline
Użytkownik

Dołączył(a): 20 lut 2013
Posty: 54
Pomógł: 0

A taki bardziej kompletny przykład?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2013, o 06:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 wrz 2012
Posty: 70
Pomógł: 0

To może coś takiego:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
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 2013, o 13:56 
Offline
Użytkownik

Dołączył(a): 20 lut 2013
Posty: 54
Pomógł: 0

Jak wstawie pod 200ms wartość 50 to odliczy mi 50ms, a nie 200ms. Dobrze to policzyłeś? Sprawdzałem ze stoperem, to wpisanie wartości 5000 da mi 5 sekund. Jest to atmega32 z taktowaniem zewnętrznym 16mhz i chciałbym to zrobić na timer1 jest on 16 bitowy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2013, o 15:39 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Zauważ kolego co kolega copek wpisał wyżej. Nie sprawdzałem tego z kalkulatorem przerwań w ręku, ale jeśli dobrze wyliczył przerwanie to będzie występowało ono co 4ms. Jeśli zmienna dojdzie do 50 a pomnozysz to przez 4ms to otrzymasz ile?

DING DING DING. Bingo, właśnie 200ms.
Wygrywasz powyższy kod który możesz sobie wklepać do bascoma i skompilować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2013, o 18:11 
Offline
Użytkownik

Dołączył(a): 20 lut 2013
Posty: 54
Pomógł: 0

Przeczytałeś co napisałem? Nie zgadza się ten czas z rzeczywistym. Być może źle policzył. W sumie wystarczyła by mi pomoc w wyliczeniu odpowiednich wartości, by uzyskać czas taki jaki potrzebuje. Interesowała by mnie możliwość odliczenia 1ms.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2013, o 19:07 
Offline
Użytkownik

Dołączył(a): 29 lis 2012
Posty: 1074
Lokalizacja: Sochaczew
Pomógł: 21

Kolega pomylił się tylko co do prescalera który powinien wynosić 256 przy zegarze 16MHz i masz przerwanie co 4ms.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 kwi 2013, o 19:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 wrz 2012
Posty: 70
Pomógł: 0

matrix napisał(a):
Kolega pomylił się tylko co do prescalera który powinien wynosić 256 przy zegarze 16MHz i masz przerwanie co 4ms.
Nie zauważyłem iż ma być zegar 16MHz, zapomniałem dodać iż obliczenia były dla 4MHz.



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ł: Brak zidentyfikowanych użytkowników 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