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



Teraz jest 27 wrz 2024, o 18:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 13 lis 2013, o 20:29 
Offline
Nowy

Dołączył(a): 13 lis 2013
Posty: 5
Pomógł: 0

Witam.

Chciałbym zmierzyć czas pomiędzy dwoma impulsami (stanami wysokimi) występującymi na pinie ICP1. Używam do tego celu timera1 oraz kodu znalezionego w internecie, zmodyfikowanego na własne potrzeby:

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


Według mnie kod powinien działać poprawnie, lecz na wyświetlaczu LCD odświeżana jest przez cały czas liczba z przedziału 322**-322** (nie widać dwóch ostatnich cyfr ze względu na ciągłe odświeżanie). Według mnie jest coś nie tak z funkcją "pomiar gotowy", ponieważ, gdy w pętli głównej programu ustawię "if (pomiar_gotowy==0)", wyświetlacz przez cały czas jest pusty. Proszę o pomoc w poprawieniu kodu tak, abym mógł odczytywać na wyświetlaczu czas pomiędzy dwoma impulsami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2013, o 21:41 
Offline
Moderator
Avatar użytkownika

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

Jeśli masz Bluebooka: http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

to zajrzyj do rozdziału o dekodowaniu RC5 zrealizowanego właśnie na ICP1 ... gdzie robione są pomiary z dokładnością co do mikrosekund

_________________
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: 14 lis 2013, o 09:47 
Offline
Nowy

Dołączył(a): 13 lis 2013
Posty: 5
Pomógł: 0

Niestety, nie posiadam jeszcze bluebooka. Na pewno go zakupię, gdyż słyszałem wiele pozytywnych opinii na jego temat. Jednak, wracając do kodu przedstawionego przeze mnie - czy ktoś zauważył błąd i może naprowadzić mnie, w którym miejscu jest coś nie tak? Dodam, że kod ma docelowo mierzyć prędkość obrotową w metrach na sekundę, lecz nie mogę prawidłowo wyłapać czasu między dwoma narastającymi zboczami na ICP1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 10:43 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.



Ostatnio edytowano 6 lis 2015, o 13:49 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 10:54 
Offline
Nowy

Dołączył(a): 13 lis 2013
Posty: 5
Pomógł: 0

Liczba jest cały czas taka sama (w tym przedziale), nie zmienia się gdy występują różne czasy pomiędzy zboczami narastającymi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 11:02 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.



Ostatnio edytowano 6 lis 2015, o 13:49 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 11:11 
Offline
Nowy

Dołączył(a): 13 lis 2013
Posty: 5
Pomógł: 0

Nawet jak usunę mnożenie przez 65536, to wynik jest taki sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 11:38 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.



Ostatnio edytowano 6 lis 2015, o 13:49 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2013, o 14:50 
Offline
Nowy

Dołączył(a): 13 lis 2013
Posty: 5
Pomógł: 0

Faktycznie, mój błąd. Postanowiłem jeszcze raz napisać kod od początku:

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


Pod port PD6 mam podpięty kontaktron (teraz w fazie testów microswitch). Jedna nóżka jest podpięta do portu PD6, druga do masy. Dodałem do kodu również linię:

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


Jeśli chodzi o kod, to zamieniając linię

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.


na wyświetlaczu mam ciągle 0, czyli do zmiennej czas1 nie zapisuje mi się aktualny czas wystąpienia impulsu zapisany w ICR1. Gdy podmienię zmienną na czas2, podczas wystąpienia impulsu wartość zostaje wyświetlona na wyświetlaczu.

Postanowiłem wykonać taki test:

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


i obie wartości (wynik oraz tym) pokazują to samo na wyświetlaczu - czyli "czas2". Widać, że działanie nie wykonuje się. Co zrobić w tej sytuacji?



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 4 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