Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięGetADC w bascom
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Mam pytanie odnośnie wszystkich typów konwersji wyniku GetADC w bascom -
no co można przekonwertować wynik np 10bitowy ze wspomnianej instrukcji??
Np Volty, Hertze, co tam jeszcze jest ?
Lub ew podajcie jakieś linki .
no co można przekonwertować wynik np 10bitowy ze wspomnianej instrukcji??
Np Volty, Hertze, co tam jeszcze jest ?
Lub ew podajcie jakieś linki .
- piterino_16
- -
- Posty:400
- Rejestracja:26 paź 2005, o 21:20
- Lokalizacja:Inowrocław
- Kontaktowanie:
nie wiem czy jest tu odpowiedź na Twoje pytanie bo stronke tak na szybko poszukałem ale sprawdź bascom
pozdrawiam
pozdrawiam
Ok już raczej opanowałem co chciałem.
Teraz jak uzyskać dużą rozdzielczość?
jak wstawie jakąś zmienną do waitms
to mi to da dokładność do 1ms a co jeśli ja chce odmierzyć np 1.12ms ??? jak dzielić zmienną wynoszącą np 10 z rozdzielczością np 100 na jeden "punkt" zmiennej???
dałoby sie to uzyskać w 'waitus zmienna' i podawać w tysiącach ,ale jak już zostało powiedziane do waitus nie można przypisać czasu ze zmiennej...
Teraz jak uzyskać dużą rozdzielczość?
jak wstawie jakąś zmienną do waitms
to mi to da dokładność do 1ms a co jeśli ja chce odmierzyć np 1.12ms ??? jak dzielić zmienną wynoszącą np 10 z rozdzielczością np 100 na jeden "punkt" zmiennej???
dałoby sie to uzyskać w 'waitus zmienna' i podawać w tysiącach ,ale jak już zostało powiedziane do waitus nie można przypisać czasu ze zmiennej...
Już raz to mówiłem - i wiem jak to uzyskać - czas ma być ściśle proporcjonalny do wyniku GetADC lub ew. do GetRC do 2 miejsc po przecinku.
Po prostu nie bardzo wiem jakie działanie wstawić aby uzyskać te 2 miejsca po przecinku.
wiemy ze normalnie jest 1023 (zero też sie liczy) na "gołym" pinie.
[ Dodano: 05-11-2006, 14:59 ]
Ps wie ktoś może ile trwa zmierzenie 'czasu rozładowania' konda np. 100pF
komendą GetRC
Po prostu nie bardzo wiem jakie działanie wstawić aby uzyskać te 2 miejsca po przecinku.
wiemy ze normalnie jest 1023 (zero też sie liczy) na "gołym" pinie.
[ Dodano: 05-11-2006, 14:59 ]
Ps wie ktoś może ile trwa zmierzenie 'czasu rozładowania' konda np. 100pF
komendą GetRC
Witam,
O ile dobrze rozumiem, to wynik z dwoma miejscami po przecinku otrzymujesz ze sformatowania wartości mierzonego napięcia funkcją Fusing(), czyli otrzymujesz np. 2.53 V. Następnie możesz użyć funkcji Int() oraz Frac() w celu rozłożenia wyniku na część całkowitą i ułamkową (Int = 2, Frac = 0.53). Część ułamkową możesz ew. pomnożyć * 100, żeby uzyskać liczbę całkowitą.
Potem zostaje tylko złożyć te dwie liczby w jedną i napisać prostą procedurkę "wait" w asemblerze i gotowe.
O ile dobrze rozumiem, to wynik z dwoma miejscami po przecinku otrzymujesz ze sformatowania wartości mierzonego napięcia funkcją Fusing(), czyli otrzymujesz np. 2.53 V. Następnie możesz użyć funkcji Int() oraz Frac() w celu rozłożenia wyniku na część całkowitą i ułamkową (Int = 2, Frac = 0.53). Część ułamkową możesz ew. pomnożyć * 100, żeby uzyskać liczbę całkowitą.
Potem zostaje tylko złożyć te dwie liczby w jedną i napisać prostą procedurkę "wait" w asemblerze i gotowe.
No to już wiemy , że czas ma być wprost proporcjonalny do napięcia , ale jakie to mają być poroporcje i czy zależność jest liniowa Napisz proszę , jaki odcinek czasu przypada na jednostkę napięcia , do czego chcesz wykorzystać tę zwłokę w czasie i na jakim procu to ma dzałać.Już raz to mówiłem - i wiem jak to uzyskać - czas ma być ściśle proporcjonalny do wyniku GetADC lub ew. do GetRC do 2 miejsc po przecinku.
Po prostu nie bardzo wiem jakie działanie wstawić aby uzyskać te 2 miejsca po przecinku.
wiemy ze normalnie jest 1023 (zero też sie liczy) na "gołym" pinie...
Natomiast co do czasu rozładowania kondensatora, to jest on zależny(w przybliżeniu) od stanu jego naładowania i prądu rozładowania.
Piotrek
Cały wynik podaje funkcja Fusing() (np. "1.85"), w której mozna określić ile miejsc po przecinku powinien mieć wynik.
Jeżeli zakres ma być od 1 ms do 3 ms, a napięcie od 0 V do REF, to wystarczy podzielić zakres czasowy (3 ms - 1ms = 2 ms) przez maksymalną rozdzielczość konwersji (0 - 1024 - dla pełnego zakresu napięć), później pomnożyć przez wynik konwersji, a następnie dodać początek zakresu czasu przerwy, czyli ((2 ms / 1024) * ADC) + 1 ms. Wynik otrzymamy w ms, dla ułatwienia można go pomnożyć przez 1000 - jednostką bedą wtedy us, następnie użyć funkcji Int(), zostanie wtedy tylko część całkowita czasu przerwy w us. No i na koniec tylko procedurka w asm, czekająca odpowiednią ilość us. Tolerancja wyniku będzie w zakresie +-1 us.
Czy o to chodziło?
Jeżeli zakres ma być od 1 ms do 3 ms, a napięcie od 0 V do REF, to wystarczy podzielić zakres czasowy (3 ms - 1ms = 2 ms) przez maksymalną rozdzielczość konwersji (0 - 1024 - dla pełnego zakresu napięć), później pomnożyć przez wynik konwersji, a następnie dodać początek zakresu czasu przerwy, czyli ((2 ms / 1024) * ADC) + 1 ms. Wynik otrzymamy w ms, dla ułatwienia można go pomnożyć przez 1000 - jednostką bedą wtedy us, następnie użyć funkcji Int(), zostanie wtedy tylko część całkowita czasu przerwy w us. No i na koniec tylko procedurka w asm, czekająca odpowiednią ilość us. Tolerancja wyniku będzie w zakresie +-1 us.
Czy o to chodziło?
No to nas załatwiłeś na cacyW ten sposób mógłbym (po zmianie zakresów czasu-1.00ms-3.00ms) sterować serwami w jakimś urządzeniu...
Nie mogłeś od razu napisać , że:
"Chciałbym sterować serwomechanizmem , za pomocą potencjometru podłączonego do wejścia ADC AVR-ka - jak to zrobić ?"
BascomAVR posiada gotowe "mechanizmy" do sterowania serwami i tego sie trzymaj
Piotrek
Wiem że bascom ma gotowy skrypt.
Ale czy mozna nimi sterować precyzyjnie każde serwo oddzielnym
potencjometrem???
Bo z tego co wiem słaba jest ta funkcja.
[ Dodano: 10-11-2006, 08:26 ]
W sumie mechanizm na zasadzie GetADC już mam (ew. da sie na GetRC) ,
tylko ta rozdzielczość... na 3ms musi przypadać z 300kroków rozdzielczości.
[ Dodano: 15-11-2006, 14:50 ]
Cześć , mam taki pomysł aby klawiaturę zrobić ...na jednym pinie ,bez dodatkowych części ,prócz rezystorów -
Po prostu każdy przycisk miałby swój rezystor ,np 1,2,3 Kohm
dzięki czemu ADC by je rozróżniała , pozostaje kwestia Programu który powie
jaki został naciśnięty , np jeśli wynik jest w takich a takich granicach to jest to np
przycisk pierwszy ,itd.
Wiem że to utrudnianie sobie życia, ale jak ktoś chce mieć BARDZO dużo klawiszy ,a klaw.
AT odpada...To może być przydatne.
Ma ktoś pomysł jak napisać ten kawałek do mierzenia napięć na adc ?
Ale czy mozna nimi sterować precyzyjnie każde serwo oddzielnym
potencjometrem???
Bo z tego co wiem słaba jest ta funkcja.
[ Dodano: 10-11-2006, 08:26 ]
W sumie mechanizm na zasadzie GetADC już mam (ew. da sie na GetRC) ,
tylko ta rozdzielczość... na 3ms musi przypadać z 300kroków rozdzielczości.
[ Dodano: 15-11-2006, 14:50 ]
Cześć , mam taki pomysł aby klawiaturę zrobić ...na jednym pinie ,bez dodatkowych części ,prócz rezystorów -
Po prostu każdy przycisk miałby swój rezystor ,np 1,2,3 Kohm
dzięki czemu ADC by je rozróżniała , pozostaje kwestia Programu który powie
jaki został naciśnięty , np jeśli wynik jest w takich a takich granicach to jest to np
przycisk pierwszy ,itd.
Wiem że to utrudnianie sobie życia, ale jak ktoś chce mieć BARDZO dużo klawiszy ,a klaw.
AT odpada...To może być przydatne.
Ma ktoś pomysł jak napisać ten kawałek do mierzenia napięć na adc ?
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 25 gości