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



Teraz jest 7 lut 2025, o 19:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
 Tytuł: ADC + PWM
PostNapisane: 4 paź 2012, o 09:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Witam, mam taki kłopot. Napisałem program który odczytuje sygnał z dwóch przetworników ADC ( DWA rezystory potencjometryczne )następnie w programie głównym realizowana jest funkcja PWM. I wszystko byłoby pięknie gdyby nie jedno ALE. W momencie gdy z przetworników jest brak sygnału chciałbym by PWM dawał wartość stałą =127 jednakże gdy odłączam pierwszy przetwornik to funkcja zaczyna sterować wypełnieniem drugiego. Bardzo proszę o sugestie poniżej załączam kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


[ panie kolego ale zdaje się że już nie raz prosiłem i ja i SunRiver, żeby kody programów otaczać znacznikami [ syntax = c ] a nie [ code ], więc proszę się do tego stosować OK ? jak kolega nie wie jak to proszę edytować ten post i sprawdzić jak to wygląda. mirekk36]

OK Przepraszam - zapomniałem się



Ostatnio edytowano 4 paź 2012, o 11:15 przez kidcowboy, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC + PWM
PostNapisane: 4 paź 2012, o 09:48 
Offline
Moderator
Avatar użytkownika

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

A teraz tak po co te (przepraszam za określenie) niedorzeczne dwie funkcje

pomiar() i pomiar1()

jak można to zrobić w ramach jednej funkcji ?

poza tym już dawno pamiętam że tłumaczyliśmy koledze że popełnia poważny błąd (kiedyś tam w innym poście)

Kod:
ADMUX |= (ADMUX & 0xF8) | kanal;


i mówiliśmy jak to rozwiązać - a kolega zdaje się już wtedy (o ile pamiętam zaczął pisać oddzielne funkcje) zamiast poprawić ten błąd. Proszę poczytać:

Obrazek
(warto tu zaglądać)

przecież tam jest WYRAŹNIE napisane o tym błędzie - wystarczy poprawić powyższą linię na:

Kod:
ADMUX = (ADMUX & 0xF8) | kanal;


i wystarczy jedna funkcja .... (bo teraz nawet mając te dwie funkcje i tak ten BŁĄD opisany w linku nadal u ciebie występuje)



pomijam oczywiście ten dodatek że

Kod:
return 127;


a nie działa to dlatego że jak przetwornik działa to wcale nie zawsze jest tam 0 gdy z przetwornika nic nie "leci" jak kolega pisze .... tam jest szum - więc te wartości zmieniają się w okolicy zera (błąd 1-2 bitów przetwornika)

------------------------ [ Dodano po: 2 minutach ]

Zrób sobie jedną funkcję:

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


i to ci wystarczy zamiast tych dwóch - bo pomyśl sobie - jakbyś chciał na 8 kanałach mierzyć to byś 8 takich funkcji napisał ? a na dodatek gdybyś w każdej zostawił ten sam błąd - to dopiero byłaby kaszana ;) .... po prostu ta jedna operacja OR jest niepotrzebna bo nawet jak masz te dwie funkcje to i tak wciąż pozostają bity kanałów pomieszane.

------------------------ [ Dodano po: 3 minutach ]

a nie przepraszam ty sobie w tych funkcjach wymyśliłeś:

Kod:
ADMUX&=~(1<<MUX0);
        ADMUX&=~(1<<MUX1);


;) ale to nie tędy droga bo nie dość że nadal dwie funkcje niepotrzebne to te dwie linie kodu załatwia jedna:

Kod:
ADMUX = (ADMUX & 0xF8) | kanal;


dobra koniec - bo się rozpisałem ;)


Autor postu otrzymał pochwałę

_________________
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  
 Tytuł: Re: ADC + PWM
PostNapisane: 4 paź 2012, o 14:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Kurde !!! Wielkie dzięki Mirku nareszcie w pełni zrozumiałem idee mapowania.
P.S. 30 pompek leci



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC + PWM
PostNapisane: 4 paź 2012, o 14:57 
Offline
Moderator
Avatar użytkownika

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

kidcowboy napisał(a):
Kurde !!! Wielkie dzięki Mirku nareszcie w pełni zrozumiałem idee mapowania.
P.S. 30 pompek leci


maskowania a nie mapowania ;) więc jeszcze 5 pompek dodatkowo za literówkę ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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