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



Teraz jest 4 lut 2026, o 10:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 27 ] 
Autor Wiadomość
PostNapisane: 31 sty 2013, o 14:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Witam

Planuję zrobić sobie termometr który będzie mi mierzył temperaturę na zewnątrz jak i wewnątrz. A wyniki pokazywał na wyświetlaczu LCD.
Zakupiłem książkę Pana Mirka "Mikro kontrolery AVR, Podstawy programowania", znajduję się tam właśnie taki przykład.
Bez żadnych zmian wrzuciłem wsad do procesora Atmega16, na wyświetlaczu pojawiło się T1, T2 w pierwszym wierszu , a w drugim 0.0 C.
Problem polega na tym, że po podłączeniu czujnika wyskakuję mi ERROR.

Nie wiem czy mogę udostępnić tu cały wsad...

Czujniki mam połączone równolegle i pin DQ podłączony do pinu PB1.

Założenia mam takie:
1) najpierw odpalić termometr na atmedze16
2) Docelowo będzie na atmega8
3) Planuje dorobić przycisk. PO jego naciśnięciu podświetlenie wyświetlacz włączy sie na 30 sec. Następnie zgaśnie (takie oszczędzanie energii) .


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 15:14 

Pomógł: 0

Pokaż schemat podłączenia. Możliwe, że brakuje ci rezystora między Vcc a DQ na DS1820. Której opcji używasz, parasite, czy powered ?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 15:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Schematu nie chce mi się za bardzo rysować... :P

Pomiedzy Vcc a DQ mam rezystor 3K3 Oma. Uzywam opcji NORMAL- powered.

Napisze może schemat połączeń.

LCD:

Rs- PA0
RW- PA1
E-PA2
D4- PA3
D5- PA4
D6- PA5
D7- PA6
A- PA7
K- gnd

Czujnik - 2x DS18B20 połączone równolegle
VCC - do vcc
GND- do gnd
DQ- do PB1


Zastanawiam się teraz... ponieważ wsad wymaga zewnętrznego generatora 12MHZ mam taki wpięty ale nie ustawiłem fusów.. może to jest przyczyna??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 15:36 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Morcinek92 napisał(a):
Zastanawiam się teraz... ponieważ wsad wymaga zewnętrznego generatora 12MHZ mam taki wpięty ale nie ustawiłem fusów.. może to jest przyczyna??

no możliwe...:) bo pomiar oparty jest o określone czasy. zmień fusbity albo zmodyfikuj program (inicjalizacja timera) i przypisz w projekcie właściwą wartość kwarcu.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 15:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Prościej jak zmienię fuse bity,
tylko nie umiem doczytać na jakie wartości, żeby użyć zewnętrznego oscylatora 12Mhz..

może ktoś pomoże ? nie chciał bym zablokować procesora..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 15:58 

Pomógł: 0

Dla Atmegi 16 zewnętrzny kwarc powyżej 8Mhz to masz tak Fuse LOW FF, High C9, lock bajt bez zmian 3F



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 16:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Ustawiłem takie fusy jak mi podałeś...
Z avr juz sie nie umiem połączyć..
chyba jest zablokowany... :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 16:29 

Pomógł: 0

A kwarc masz podłączony???

Wgrałem przed chwilą do Atmegi32 (ale fusy są te same co w atmega16) dokładnie te ustawienia które ci podałem i na zewnętrznym kwarcu działa bez zarzutu.

Sprawdź podłączenie kwarcu.

PS. by "zablokować" atmegę czyli wyłączyć ISP musiał byś wpisać np. w HIGH E9. Ale atmega nie jest zablokowana, tylko możliwość zaprogramowania zostaje w sposób równoległy.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 16:42 
Offline
Moderator
Avatar użytkownika

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

Morcinek92 napisał(a):
Ustawiłem takie fusy jak mi podałeś...
Z avr juz sie nie umiem połączyć..
chyba jest zablokowany... :(


A czym ty programujesz fusy ?

------------------------ [ Dodano po: 4 minutach ]

oczywiście, że jeśli nie przestawiłeś fusków czyli działasz na fabrycznym 1MHz to będzie problem - ale równie dobrze możesz we właściwościach projektu dać 1MHz tyle że timery programowe będą wolniej działać bez przeliczenia OCRx..... Ale to nie powinno przeszkadzać - najważniejsze że dobrze będą działać opóźnienia dla obsługi DS18x20

_________________
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  
PostNapisane: 31 sty 2013, o 20:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Oczywiście kwarc mam podłączony.
Nie jestem pewny, że fusy dobrze wpisałem, atmega była nowa teraz pierwszy raz zmieniałem w niej fusy..
programuje programatorem usbasp, a program to eXtreme Burner - AVR.
Natomiast w programie mkavrcalculculator sprawdzam czy mi wykrywa atmege.. (połączenia nie idzie nawiązać)
Sprawdzałem na różnych kwarcach 8,12,16 MHZ żaden nie zadziałał... nawet bez..
dziwne troszkę.

Może odpuszczę to atmege16 i będe uruchamiał projekt na docelowej atmedze8 ??
Mirku co musiał bym zmienić do poprawności działania projektu na tym procesorze??

Na pewno:

-piny i porty
- timer - tylko jaki ??

Czy mógłbyś mi w tym pomoc?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 21:09 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

W medze 8 timer 0 nie posiada trybu CTC, wiedz musisz przerobić np na timer 2, ten fragment :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Z tym, że jest to dla zegara takiego jak w projekcie, podaj jaki masz to przelicze preskaler i OCR'a.
Tak jak pisałeś musisz przyporządkować porty do DS'a - plik onewire.h no i lcd. I w projekcie ustaw procek na atmega 8 i odpowiedni zegar.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 21:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Witam.
Dziekuje bardzo za szybka odpowiedz i zaangazowanie

Zegar chodzi ci o kwarce? Tak jak pisalem w czesniej moge dac 12mhz tak jak w projekcie wiec chyba nie musial bys nic liczyc ;))

wiec wystarczy tylko zmienic ten fragment kodu no i oczywiscie piny??

Jeszcze chcialbym zalytac odnosnie tych czujnikow jako ze maja byc dwa, polaczyc je rownolevle i na jednym porcie?? Czy lepiej na osobnych portach??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2013, o 21:23 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Tak o kwarc, to jak możesz to daj 12 MHz, jeśli masz ustalone już fusy na zewnętrzny sygnał taktujący.
Razem połącz odpowiednie piny.
a i jeszcze wektor przerwanie zmień:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i myślę że to wszystko.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2013, o 15:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Łukaszu !!
Działa !!
Czasami wyskakuje error, albo nie wyświetla jednej temperatury..
Po 10 min pracy, zauważyłem, że sam się resetuje
ale po kilku restartach procesora działa prawidłowo :))
Jestem bardzo wdzięczny.

Pytanie jeszcze jak zrobić aby wyświetlacz był normalnie zgaszony a po naciśnięciu switcha zaświecił się na np. 30 sec.

Jak to ma wygladać sprzętowo i programowo ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2013, o 15:41 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

To dobrze, że działa. Tego typu problemy jak opisujesz to może kwestia złego styku, w senie, ze któryś czujnik lub rezystor pullup się odłączy.
Co do podświetlania to sprzęt popatrz sobie na schemat ATB jak Mirek podłączył LCD - tranzystor NPN2.
A co do czasu i programu to po wykryciu wciśnięcia klawisza załącz pooświetlanie LCD i przy wykorzystaniu już działającego timera programowego policz do 30 :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2013, o 16:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Czy sprzętowo tak to powinno wyglądać??

a programowo chyba sobie nie poradzę..


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2013, o 16:59 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

R3 bezpośrednio do pinu procka. A S1 do innego pinu procesora a drugi koniec do masy.
Co do programu to możemy Ci go napisać ale to nie o to chodzi :P Bo celem forum jest nauka :)) Spróbuj. Taka mała podpowiedź:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

oczywiście musisz powołać nową zmienną np. o nazwie sekundnik i przypisać sobie porty do klawisza itp, poczytaj pierwsze lekcje z blue book'a od 173. Wyświetlacz to tak duża dioda:P

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2013, o 11:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Witam

Dodaje link prezentujący dziwne działanie termometru, ciągle restartowanie programu...ewidentnie jest coś nie tak.. czasmi wyskakuje error choc, czasmi nie pokazuje temperatury, dziwne napisy, itp..
czego to może być przyczyna? od strony sprzętowej raczej jest wszystko ok, styki sprawdzałem wszystko dobrze sie trzyma. Raczej to kwestia programu.

[http://www.youtube.com/watch?v=dOzxQ0eAsjo&feature=youtu.be

-------
Co do kwestii tego przycisku.

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



Nie wiem jak określić zmienna sekundnik zeby odliczyć 30sec...

Kod wstawiamy w [syntax=c] - Zielony J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2013, o 11:44 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

To chyba nie jest cały program.

Może Ci resetować bo np używasz jakiegoś przerwania którego nie uwzględniasz w programie albo wiele innych rzeczy.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2013, o 11:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Jeśli chodzi o kod główny to :

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





Natomiast tamten wcześniejszy jest do samego przycisku.

Kod wstawiamy w znaczniki [syntax=c] - Zielony J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2013, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Hmm. Pomoze ktoss?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2013, o 21:53 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Powiedz jaki kwarc wrzuciłeś? i najlepiej zdjęcia z ustawienia fuse bitów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2013, o 13:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sty 2013
Posty: 435
Lokalizacja: Rybnik
Pomógł: 6

Witam,
Aż wstyd przyznać..
Do opakowania gdzie miałem kwarce 12MHz dostał się jeden o wartości 16stu MHz...
Po wymianie wszystko wróciło do normy działa świetnie, nic nie świruje.. DZIĘKUJĘ !!!

-------------------

Ale nadal pozostaje bezradny w sprawie tego guziczka który będzie mi włączał podświetlanie LCD na 30 sec..
Dwa posty wcześniej wrzuciłem kod który już jest w połowie zrobiony (tak mi sie wydaje)
nie umiem określić zmiennej "sekundnik" do odliczenia czasu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2013, o 13:52 

Pomógł: 0

Sam stosuje timery softwerowe w/g przepisu Top Chiefa Mirka ;), superdebounce + softwerowe i można bez problemu sobie potem zmienne dodatkowe wrzucać i zmieniać je co ile sekund chcesz.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2013, o 22:55 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Zamieszę kod o który prosiłeś na pw tutaj, może się komuś jeszcze przyda. połączę dwa programy wymienione wyżej.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie zmieniałem obsługi klawisza na bardziej elegancką i poprawną (chociażby taką jak proponował kolega rezasurmar) ponieważ im mniej zmian wprowadziłem tym szybciej powinieneś się odnaleźć :) A po drugie do tego zastosowania wystarczy z powodzeniem to co napisałeś. Potestuj, jak by były jakieś błędy to sorki kompilowane na szybko na forum :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2013, o 00:31 
Offline
Nowy

Dołączył(a): 14 lis 2012
Posty: 2
Pomógł: 0

Witam!
Mam taki problem, korzystam z kodu z książki pana Mirosława Kardasia do obsługi 1-wire(podobnie jak kolega u góry), jednak chcę aby on działał na ATmedze32 16MHz(generator wewnętrzny). Zmieniam dane timera (obliczone za pomocą specjalnego kalkulatora do AVR) :
Kod:
TCCR0 |= (1<<WGM01);            /* tryb CTC */
   TCCR0 |= (1<<CS01)|(1<<CS00);      /* preskaler = 64 */
   OCR0 = 25;                     /* dodatkowy podział przez 25 (rej. przepełnienia) */
   TIMSK |= (1<<OCIE0);            /* zezwolenie na przerwanie CompareMatch */   
/* przerwanie wykonywane z częstotliwością ok 10ms (100 razy na sekundę) */
   /* do naszych celów nie musi być to bardzo dokładne 10ms */

i tu pojawia się mój problem, gdyż zamiast temperatury wyskakuje mi error, jeśli odłączę termometr DS18B20 wyskakuje 0.0C.
Połączenie czujnika w trybie NORMAL.
Proszę o pomoc, czy timer jest dobrze ustawiony? Czy podczas zmiany taktowania trzeba wprowadzić jeszcze jakieś modyfikacje do kodu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2013, o 16:52 
Offline
Nowy

Dołączył(a): 14 lis 2012
Posty: 2
Pomógł: 0

Podpiąłem zewnętrzny generator 16MHz i użyłem powyższego timera i przez cały czas ten sam problem...



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

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