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



Teraz jest 19 cze 2026, o 01:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 29 gru 2014, o 19:39 
Offline
Nowy

Dołączył(a): 29 gru 2014
Posty: 4
Pomógł: 0

Witam mam problem z przetwornikiem ADC w atmedze 328p 20MHz mianowicie nie działa prawidłowo tryb Free run gdy pominę ustawienie bitu ADATE otrzymuje pojedynczą konwersje z poprawnym pomiarem czyli dla 0V na wyświetlaczu mam 0 a dla 5V mam 4.99V oczywiście po resecie. Ustawienie bitu ADATE powoduje ciągłą konwersję ale niestety nie otrzymuje wartości oczekiwanych na wyświetlaczu:
podanie 5V na pin PC4 daje na wyświetlaczu 4,98V natomiast podanie 0V daje 4,86V. Nie potrafię tego naprawić. Z góry dzięki za podpowiedzi.

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: 29 gru 2014, o 20:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

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

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

?

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2014, o 20:07 
Offline
Użytkownik

Dołączył(a): 31 mar 2014
Posty: 55
Pomógł: 2

Nie wiem czy oglądałeś:
http://mirekk36.blogspot.com/2013/06/przetwornik-adc-w-avr-dla-poczatkujacych.html

Polecam obejrzeć i na pewno rozwiążesz swój problem. Ja też miałem trochę zabawy z ADC ale po obejrzenie odcinków i w odcinku 5 jest z tego co pamiętam o trybie Free Running na Atmega8, ja korzystam z atmega 328 i mi bez problemowo chodzi, tyle że odczytuje wszystkie bity.
Tak mi się wydaje że brakuje kilku wierszy w programie bo nie wiem co tu wkleiłeś? wygląda na wycinki z kilku plików.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2014, o 20:18 
Offline
Nowy

Dołączył(a): 29 gru 2014
Posty: 4
Pomógł: 0

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

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

?

Pozdr.


Zmieniłem i wyświetla cały czas wartość 5.00 V niezależnie od tego co jest na wejściu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2014, o 06:39 
Offline
Użytkownik

Dołączył(a): 31 mar 2014
Posty: 55
Pomógł: 2

Nie wiem czy rozwiązałeś swój problem ale:
po pierwsze pierw powinieneś załączyć kanał:
Kod:
ADMUX = (ADMUX & 0b11111000) | kanal;

potem włączyć przerwanie:
Kod:
sei();

a na końcu włączyć konwersje;
Kod:
ADCSRA |= (1<<ADSC);


Poza tym typ float jest nie efektywny, polecam te poradniki wideo Pana Mirka obejrzysz i zobaczysz, że znajdziesz rozwiązanie. Niby długo trwają ale jest tak wytłumaczone, że nie ma bata, że nie zrozumiesz ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2014, o 21:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
...a mnie najbardziej brakuje:
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: 1 sty 2015, o 18:02 
Offline
Nowy

Dołączył(a): 29 gru 2014
Posty: 4
Pomógł: 0

po ponownym napisaniu programu zgodnie z
http://mirekk36.blogspot.com/2013/06/pr ... acych.html
wszystko ruszyło ale zachciało mi się jeszcze aby wykorzystać inne kanały do pomiarów i znowu problem ponieważ w czasie pomiarów wyniki z kanału aktualnie mierzonego są w zmiennej dla innego kanału wszystko się miesza. Korzystam z czterech kanałów
wynik z ADC4 mam w zmiennej adc2 zamiast w adc1 i odwrotnie, w zmiennej adc3 mam jakieś śmieci natomiast adc4 wygląda na to że działa ok.

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


sei jest włączone

a tu przerwanie od adc w który zmieniam kanały:

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: 1 sty 2015, o 18:31 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

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

Spróbuj nie korzystać z freerun tylko po konfiguracji i na końcu przerwania uruchom start konwersji.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 18:48 
Offline
Nowy

Dołączył(a): 29 gru 2014
Posty: 4
Pomógł: 0

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

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

Spróbuj nie korzystać z freerun tylko po konfiguracji i na końcu przerwania uruchom start konwersji.



Poprawiłem wyłączyłem Free Run

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


Efekt jest taki, że dane z kanału ADC4 są poprawnie wstawiane do zmiennej adc1 tak samo dane z ADC6 i 7. Problem jest teraz z ADC5 gdzie mam nie wiadomo skąd wartość 2,48 na wyświetlaczu gdy na nóżce jest zero (podłączona do masy).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 19:35 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

tojo25 napisał(a):
Problem jest teraz z ADC5 gdzie mam nie wiadomo skąd wartość 2,48 na wyświetlaczu gdy na nóżce jest zero (podłączona do masy).

Spróbuj zmierzyć napięcie woltomierzem wpiętym raz do ADC5 i GND i do ADC5 i VCC.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2015, o 21:12 
Offline
Użytkownik

Dołączył(a): 31 mar 2014
Posty: 55
Pomógł: 2

Też siedziałem nad tym przełączaniem kanałów w ADC na tej atmedze i w końcu mi się udało więc podsyłam Ci moje rozwiązanie mi działa jak należy kwestia jak masz przeliczanie rozwiązane ;)
Spróbuj tak jak ja mam to rozwiązane:

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


W pliku main.c:

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

Strefa czasowa: UTC + 1


Kto przegląda forum

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