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



Teraz jest 28 paź 2024, o 16:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
 Tytuł: Moduł ADC
PostNapisane: 7 sie 2012, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Pomóżcie mi ze zrozumieniem. Problem mam taki:

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


[proszę używać znaczników [ syntax = c ] a nie [ code ] - dobrze ? tak jak teraz poprawiłem mirekk36]

Jak widać, program mierzy napięcie na dwóch wejściach ADC. Kłopot w ty, że na wyświetlaczu cały czas mam odczyt z ADC5. Jak usunę linię "if (pomiar(5)<940) buzer_on;" to wtedy mam odczyt z ADC0. Założenie było takie, że na wyświetlaczu bedzie odczyt z ADC0 a alarm jest założony na ADC5. Niestety, nie mam pojęcia co jest grane :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Moduł ADC
PostNapisane: 7 sie 2012, o 22:24 
Offline
Moderator
Avatar użytkownika

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

Panie kolego po pierwsze masz błąd

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

powinno być

ADMUX = (ADMUX & 0xF8) | kanal;

widzisz różnicę - oczywiście zdaje się że ten błąd niestety też jest w książce ale pisałem już o tym na tym forum. Poza tym zaglądaj też do aktualizacji:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

i poczytaj KONIECZNIE o tym ADC z tego linku który podałem wyżej.

_________________
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: Moduł ADC
PostNapisane: 7 sie 2012, o 22:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Ufff, no tak, to był ten szczegół.
Tak to jest jak się bezmyślnie fragment kodu wrzuci przez ctr_c , ctr-v :oops:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Moduł ADC
PostNapisane: 9 sie 2012, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

W dalszym ciągu walczę z ADC, teraz mam taki kwiatek:
W kodzie poniżej, jest pętal warunkowa "if (pomiar(0)>620)..." . Program wchodzi do tej pętli, ale na wyświetlaczu wynik pomiaru oscyluje w granicach 540. Natomiast, jak usunę // z linii "//lcd_int(pomiar(0));" przed pętlą, to wyswietla mi wynik 650 ale nie chce wejść do pętli warunkowej, mimo że teoretycznie warunek jest spełniony :(

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  
 Tytuł: Re: Moduł ADC
PostNapisane: 9 sie 2012, o 23:02 
Offline
Moderator
Avatar użytkownika

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

Wiesz co? teraz musisz - zrobić w tył zwrot ;) i wrócić do pierwszej części książki z teorią na temat C i to do podstaw - bo tak namieszałeś w pojęciach - że ja się nie dziwię że coś ci nie wychodzi .... do tego nie pokazałeś pełnego kodu swojego programu - co każe przypuszczać że w ogóle sam nie do końca wiesz co robisz :(

co to na przykład znaczy

"nie chce wejść do pętli warunkowej" ..... a gdzie ty w tym fragmencie widzisz jakąkolwiek pętlę - nie wspomnę już o hmmm "warunkowej" ????

może łatwiej będzie ci pomóc jak wkleisz tu całą zawartość swojego main.c .... najpierw w jednej wersji o której piszesz a potem w drugiej wersji - bo niestety z twoich opisów nic a nic nie mogę zrozumieć - a kod może mi pozwoli zobaczyć gdzie robisz i jakiego babola ;) ok?

_________________
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: Moduł ADC
PostNapisane: 9 sie 2012, o 23:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 cze 2012
Posty: 76
Lokalizacja: Węgorzewo
Pomógł: 1

Wymiękłem i program w końcu napisałem w BACOM ;)
Oczywiście , rozumiem Twoją irytację , sam jak jeszcze raz przeczytałem , to się uśmiechnąłem :D Chodziło mi o to , że nie wykonuje warunku "if (pomiar(0)>620)" mimo , że na wyświetlaczu mam 640. Ale już chyba się domyślam dlaczego. Jak wynik działania funkcji wpisałem do zmiennej i w dalszej części programu posługiwałem się tą zmienną to zaczęło działać. Wprawdzie mam już działający program w bascomie, ale dla zasady sprobuję go napisać w C, coby się nie zniechęcić ;)
Problemem było to , że w wyniku lcd_int(pomiar(0)) otrzymuję 640 a w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

otrzymuję 640640

Teraz już właściwie skonstruowałem warunki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Moduł ADC
PostNapisane: 10 sie 2012, o 05:38 
Offline
Moderator
Avatar użytkownika

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

Po pierwsze to ja się nie irytuję ;) więc źle mnie zrozumiałeś - a to, że poradzę czasem powrót do źródeł to chyba nie grzech i objaw zdenerwowania ?

Pewnie, że się nie zniechęcaj - ja chętnie pomogę - tylko właśnie , zacznijmy mówić tym samym językiem czyli używajmy albo starajmy się używać określeń technicznych z zakresu języka C, wtedy będzie się łatwiej porozumieć.

Ok wracając do tematu program a jednocześnie ten warunek if, MUSI ci działać w obydwu wersjach - język C to nie Bascom i tu dopuszczalne są tego typu konstrukcje, a zatem MUSI działać i taki zapis

Kod:
if( pomiar(0) > 640 ) .....


jak również taki

Kod:
wpomiaru=pomiar(0);
if( wpomiaru > 640 ) .....


problem może leżeć gdzie indziej - ty nic nie mówisz ani nie pokazujesz większej ilości swojego kodu, bo pewnie nie spodziewasz się że w innej części możesz robić BABOLA, który tutaj ma skutek. A tym BABOLEM mogą być niewłaściwie dobrane typy zmiennych przez ciebie .... bo na przykład jakiego typu jest u ciebie zmienna wpomiaru ???

Poza tym coś mi się wydaje że masz w ogóle jakiś POWAŻNY błąd w konstrukcji samej funkcji main() .... ale hmmm tylko mogę zgadywać (a nie irytować się) ..... bo przecież całego kodu main.c nadal nie pokazałeś .... więc jak ci pomóc ?

a jeśli na wyświetlaczu LCD otrzymujesz 640640 zamiast 640 to na pewno robisz jakiegoś MEGA BABOLA w kodzie - tylko go pokaż to ja ci podpowiem gdzie ;)

_________________
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: Moduł ADC
PostNapisane: 10 sie 2012, o 07:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

I kolejna rzecz ..... zwróć uwagę na to że nie interpretujesz jednej wartości pomiaru. Tylko w warunku if interpretujesz jeden pomiar i dla wyświetlacza wykonujesz drugi pomiar. według mnie jest to błąd logiczny programu. Powinieneś pomiar(0) przepisać do zmiennej i dopiero ją sprawdzać w warunku if i ewentualnie wyświetlać na wyświetlaczu.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO