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



Teraz jest 2 gru 2024, o 18:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 21 mar 2018, o 19:50 
Offline
Użytkownik

Dołączył(a): 02 lut 2017
Posty: 25
Pomógł: 0

Witam Wszystkich

Mam następujący problem w związku z tym proszę o pomoc
Chodzi o to że mam z zewnątrz nażuconą częstotliwość pomiaru ADC na 1kHz co o ile przy dostępnych preskalerach ADC jest raczej niemożliwe.
Ale znalazłem zapis w BlueBooku że istnieje możliwość generowania automatycznych przerwań do obsługi aDC przy użyciu Timerów.
Nie wiem czy dobrze kombinuję ale podejżewam że taki sposób byłby dla mnie idealny. Tylko jak się to obsługuje?
Czy mógłby ktoś zamieścić taki kod lub podać czy można to znaleźć w Nocie?
Nie wiem - a może w przerwaniu od przepełnienia Timera zrobić pomiar?
A tak wogóle to po co się ustawia preskaler dla ADC skoro i tak pomiar wykonujemy na żądanie (procedura pomiarowa w BluBooku)?
Bardzo proszę o pomoc
pozdrawiam
Arek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2018, o 21:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1031
Lokalizacja: Trójmiasto
Pomógł: 190

solark napisał(a):
Chodzi o to że mam z zewnątrz nażuconą częstotliwość pomiaru ADC na 1kHz co o ile przy dostępnych preskalerach ADC jest raczej niemożliwe.
nieco myslisz częstotliwość pomiaru z częstotliwością taktowania ADC.
solark napisał(a):
A tak wogóle to po co się ustawia preskaler dla ADC skoro i tak pomiar wykonujemy na żądanie (procedura pomiarowa w BluBooku)?
A wiesz jak działa przetwornik ADC? Przecież to jest moduł cyfrowy który jak każdy moduł cyfrowy potrzebuje siły napędowej jaką jest taktowanie. W nocie masz wyraźnie napisane że dla rozdzielczości 10bitowej przetwornik powinien mieć taktowanie od 50kHz do 200kHz więc preskaler masz po to by zegar systemowy podzielić przez tyle by przetwornik był napędzany zgodnie z zapisem w nocie czyli w zakresie 50 - 200kHz.
Co do pomiarów z częstotliwością 1kHz to oczywiście możesz ustawić sprzętowy timer by generował przerwanie co 1kHz i od tego przerwania generować pomiar, tylko nie wiem czy uC się wyrobi z tak częstym pomiarem bo sam pomiar też trwa a przecież musisz coś jeszcze zrobić z wynikiem pomiaru (nie wiem wyświetlić na wyświetlaczu czy wysłać przez UART)



Ostatnio edytowano 21 mar 2018, o 21:48 przez xentis, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2018, o 21:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

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


Ustawiasz wyzwalanie przetwornika przez Timer/Counter0 i odblokowujesz przerwanie.

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



Zbieramy to wszystko w całość, mamy tylko kilka funkcji do wywołania.


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


To pewne podstawy, powinno działać dla ATmega644P, ale kopiuję to na gorąco, bez sprawdzania.
Pobaw się, popróbuj może coś z tego wyniesiesz :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2018, o 18:42 
Offline
Użytkownik

Dołączył(a): 02 lut 2017
Posty: 25
Pomógł: 0

Tak szczerze mówiąc to chodzi mi o pomiar ADC z czujnika takiego jak ten:

https://www.dfrobot.com/wiki/index.php/Analog_EMG_Sensor_by_OYMotion_SKU:SEN0240

Ułożyłem sobie taki kod a w zasadzie przerobiłem kod dla Arduino dla mikrokontrolera
Używam ECLIPSE:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


Bardzo proszę o podpowiedz co robię źle z tym kodem
Otóż owszem Pomiar na ADC działa jednak gdy wyśietlam wartość
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to wynosi ona około 500 i niewiele się zmienia
Natomiast układ daje na wyjściu od 0 do 3V Ja mam napięcie odniesienia 2,56 a podaje wyjście układu na dzielnik rezystorowy tak żeby osiągnąć te 2,56
Skąd więc w spoczynku mam wartość 500?
W każdym razie widzę że układ działa bo w czasie aktywności mięśni cyfry się zmieniają ale są one z kosmosu i nie wiem co się dzieje.
Bardzo mi zależy na poprawnym działaniu tego układu więc bardzo proszę o pomoc
pozdrawiam
Arek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2018, o 22:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2017
Posty: 140
Pomógł: 6

Sprawdzałeś miernikiem jak zmienia się napięcie? Układ daje na wyjściu 0-3V w czasie normalnej pracy? Bo może ma tak działać, że daje np 1.5V i odchyla się o mili wolty



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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