Witam po długiej przerwie, zacząłem budowę urządzenia, które będzie mierzyło temperaturę rurki miedzianej od ogrzewania centralnego i przypominało, aby poniżej 40* zejść do piwnicy i podłożyć, aby nie wygasło. Czujnik już przygotowany, więc zabrałem się za przygotowanie kodu, aż tu nagle w ogóle nie znajduję czujnika, tzn. 0 reakcji na linii 1Wire, w kodzie zawarty jest fragment, który informuję, że w przypadku braku czujnika na lcd powinien wyświetlać się error, kiedyś się wyświetlał, teraz przestał. Zamiast tego wyświetla ciągle 0.0. Zmieniałem porty linii 1Wire lecz to nie pomaga. Układ poprawnie złożony na stykówce, zasilany z usb(aktualnie napięcie na cały układ wynosi 4,32V). Czyżby 2 czujniki się spaliły? Aktualnie testowany jest kod z książki Pana Mirka do obsługi lcd i DS18B20 więc nie za bardzo mogę go udostępnić, ze względu na prawa autorskie, lecz wszelkie potrzebne fragmenty do analizy wrzucę.
Ja bym jednak mimo wszystko poprosił o jakiś schemat/zdjęcie tego co tam poskładałeś
Też tak uważam, bo programy są przetestowane do bólu i to nie tylko przeze mnie, czytelników ale też przez autora tych bibliotek (gościu z niemiec). U mnie np działaja na tym układy pomiaru temperatury na wielu czujnikach na magistrali i to mieszanych bo DS18S20 ale też DS18B20 oraz DS1820 - już od ponad roku - i żadnych takich tam - jakichś dziwnych rzeczy użytkownicy ani ja - nie dostrzegliśmy....
No chyba , że w swojej części implementacyjnej coś zrobiłeś nie tak ? Bo biblioteki nie mają tu nic do rzeczy tak się składa.
Więc jak była mowa na górze - problem jak zwykle będzie leżał w sprzęcie, połączeniach itp
wyświetlać się error, kiedyś się wyświetlał, teraz przestał.
No to jeśli nie przestawiałeś nic w kodzie to w układzie coś się "samo przestawiło".
A DS uszkodzić łatwo- wystarczy na chwilę go źle podłączyć.
Jak zasilasz- parasite czy trzema przewodami?
To też trzeba ustawić w kodzie.
Masz rezystor podciągający?
Niektórzy o nim zapominają.
Dla DS18B20? Jeśli tak to nie mam, ponadto nigdy ich nie używałem i wszystko chodziło, tylko teraz układ odmawia współpracy.
gaskoin wrote:
Bartek.k.k wrote:
Układ poprawnie złożony na stykówce
Ja bym jednak mimo wszystko poprosił o jakiś schemat/zdjęcie tego co tam poskładałeś
Jak wstawię zdjęcie, to zostanie ono umieszczone w kategorii największe pająki świata, więc wolałbym tego uniknąć Schemat wygląda mniej więcej tak(proszę wybaczyć, że w Paincie, ale inaczej jak na razie nie potrafię ).
janbernat wrote:
Bartek.k.k wrote:
wyświetlać się error, kiedyś się wyświetlał, teraz przestał.
No to jeśli nie przestawiałeś nic w kodzie to w układzie coś się "samo przestawiło".
A DS uszkodzić łatwo- wystarczy na chwilę go źle podłączyć.
Jak zasilasz- parasite czy trzema przewodami?
To też trzeba ustawić w kodzie.
Parasite, lecz znów zaskoczę, bez zmian w kodzie wcześniej działał poprawnie, zmiana trybu pracy czujnika nadal nie przynosi poprawy. Wychodzi chyba na to, że mój ciekawski kot zmodyfikował mój układ
Kot zmodyfikował Ci kod?
Ustaw zasilanie DS na parasite- siódma linijka na str.303 i dodaj opornik jak na str.299 na dole po prawej.
P.S.
I zacznij uczyć się Eagle'a.
Jest darmowy i na tyle niewygodny że uczenie się innych programów do schematów i płytek przyjdzie Ci łatwiej.
Aktualnie 1, drugi jest przygotowany, aby przykleić go do rurki od grzejników. Nie wiem czy to ma coś do rzeczy, ale gdy podłącze czujnik w trybie Normal to przy przyłożeniu 5V układ gaśnie, jakby było jakieś spięcie.
No to jest spięcie- musisz znaleźć gdzie.
Odłącz DS i włacz zasilanie.
Jak będzie spięcie- to przewody.
A jak bez DS pomierzysz napięcia i będą dobre a po wpięciu DS zwarcie- no to niestety...
Układy elektroniczne są wrażliwe na błędy.
Podłączyłem czujnik w trybie NORMAL i nie ma już spięcia lecz jak mówiłem dalej nic. Wychodzi chyba jednak na to, że czujnik jest spalony, bo sugerowałem się zawsze tym schematem:
a jak widać, noga 1 i 3 powinna być odwrotnie. Tylko pytanie dlaczego wtedy to chodziło. Można jeszcze obwiniać połączenia na stykówce, więc zaraz znów od nowa wszystko po podłączam. Przed chwilą wrzuciłem już 6 z kolei projekt 1Wire do eclipse, wysłałem do atmegi i dalej 0.0 C bez wyświetlania error.
Niestety coś jednak nie tak podczas kompilacji kodu. Na zestawie uruchomieniowym również wyświetla się 0.0 C zamiast "error", jeżeli do linii 1Wire nie został podłączony żaden układ. Czy ktoś mógłby podesłać gotowy wsad dl atmegi8 dla chociażby sprawdzenia czy atmega wykrywa jakiś układ na linii 1Wire? U mnie widocznie sypie się eclipse, bo czysty układ prosto z płytki Pana Mirka również nie działa
Na 99.999% to nie Eclipse się sypie i z podobnym prawdopodobieństwem kod Mirka.
Sprawdzaj:
Co zmieniłeś w pliku nagłówkowym onewire.h- no bo to inny procesor
Jak ustawiłeś kwarc- bo chyba Mirek robił to na 11059200.
Czy wsadziłeś taki kwarc w płytkę w odpowiednie gniazdko?
Te kwarce które masz mają oznaczenie 11.0Y9BF.
Czy ustawiłeś odpowiednio zworki przy tym kwarcu?
Czy sprawdziłeś przy pomocy mkAVRcalculator jak masz ustawione fusebity w procesorze?
Czy połączyłeś odpowiedni pin procesora z pinem WIRE na płytce?
Czy podłączając DS do płytki trzema przewodami, nie myląc się czy to jest widok z dołu czy z góry
po czym sprawdzająć ok. 20 razy przed podłączeniem też masz zwarcie?
Bo to Ty masz sprawdzić, a nie my.
-onwire.h zmieniłem tylko pin, do którego odpowiada za linie 1Wire, czasami zostawiałem to nie zmieniane i tak jak tam piszę podłączałem odpowiedni pin.
-Naturalnie, kwarc wsadzony 11059200
-Tak
-Zgadza się
-W instrukcji pisało, że zworki bodajże mają być włożone, aby zadziałał zewnętrzny kwarc
-Sprawdzać nie sprawdzałem.
-Ominąłem całkowicie gniazdko 1Wire na płytce i czujnik podłączyłem na stykówce
-Zwarć już nie ma jak mówiłem.
Tak sobie obserwuję co jakiś czas ten temat i przyznam szczerze, że jestem pełen podziwu dla kolegi autora za upór, tyle że nie w dążeniu do rozwiązania problemu a do skomplikowania go sobie i utrudnienia życia ponad wszelką miarę.
Bartek.k.k wrote:
xamrex wrote:
Masz rezystor podciągający?
Niektórzy o nim zapominają.
Dla DS18B20? Jeśli tak to nie mam, ponadto nigdy ich nie używałem i wszystko chodziło, tylko teraz układ odmawia współpracy.
Ileż to już razy ja ale nie tylko ja pisałem na elektrodzie, że takie tłumaczenie, że "mi to wcześniej działało więc nie widzę w tym problemu" ..... powoduje tylko wydłużenie drogi do rozwiązania swoich kłopotów w tym zakresie i to na maxa. Bo jeśli działało - to proponuję się na tym oprzeć i już do końca życia tak robić zamiast poprawnie jak radzą inni koledzy. Może jednak kiedyś w końcu na własnych błędach się kolega nauczy - tylko szkoda tego czasu kurka wodna
Bartek.k.k wrote:
gaskoin wrote:
Bartek.k.k wrote:
Układ poprawnie złożony na stykówce
Ja bym jednak mimo wszystko poprosił o jakiś schemat/zdjęcie tego co tam poskładałeś
Jak wstawię zdjęcie, to zostanie ono umieszczone w kategorii największe pająki świata, więc wolałbym tego uniknąć Schemat wygląda mniej więcej tak(proszę wybaczyć, że w Paincie, ale inaczej jak na razie nie potrafię ).
Uwierz panie kolego, że to zdjęcie pająka byłoby lepsze w tym wypadku i szybciej by ci koledzy pomogli, którzy wypowiadają się w tym temacie niż na podstawie tego hmmm hmmm "schematu" - proszę tylko nie obraź się - ale to nie schemat tylko (znowu się powtórzę) - laurka.
Bartek.k.k wrote:
niestety ale to masakra - i nie chodzi tu o krytykowanie czy wyśmiewanie ale kolega janbernat ma 1000% racji - lepiej byłoby nawet byle jak ale np w Eagle darmowym to narysować. Rozmowa na forum za pomocą schematów to chyba podstawa prawda.
Ale niestety kolega na każdą sugestię jak widać wyżej - broni się rękami i nogami, co powoduje tylko u niego coraz dalsze straty jak widać ale już nie tylko czasu lecz fizycznych części - np palonych na stosie wręcz czujników. Bo co to np jest za tryb PARASITE ??????????????????
sorry ale to jest mistrzostwo świata. Na prawdę gdybym ja miał pomóc to wolałbym już oglądać mega pająka niż takie coś. Bo z tego to tylko można się domyślać wielu dziwnych rzeczy. Sam rysunek (bo przecież nie schemat) wyjaśnia tylko że czujnik jest podłączony jedną swoją nogą do mikrokontrolera bez podciągania (o którym wyżej była mowa) .... ale ten czerwony robaczek to ci dopiero zagwozdka??? co to może oznaczać ??? co kolega miał na myśli? jak i do czego to podłączył - na prawdę extras. A przynajmniej z pająka byłoby widać i można byłoby coś konkretnego podpowiedzieć....
ale nie - po co? przecież pająk jest dobry, połączenia też są dobre, zwarć na stykówce przecież nie ma - no to w czym może być problem ?????? wiadomo - tylko w programie bo przecież nie w tym co ja robię.
Bartek.k.k wrote:
... Wychodzi chyba na to, że mój ciekawski kot zmodyfikował mój układ
No - takie wytłumaczenie to już bardziej rozumiem ale cóż takiemu zwierzakowi trzeba wybaczyć przecież jak się spojrzy tymi swoimi dużymi oczami i się "przymizia" to przechodzi złość na niego.
Ale idźmy dalej - w stronę kodu, który oczywiście kolega też oszczędza na maxa. Po pierwsze - to co sam napisałeś (nie te biblioteki bo one na pewno są dobre) - śmiało mógłbyś wkleić w całości a nie takimi wyrywkami, z których już na pierwszy rzut oka widać, że masz także babol na babolu w porównaniu do tego co było opisywane w książce.
Pewnie, że to ważna sprawa żeby umieć sobie poradzić z odpaleniem tego na dowolnym procku. Przecież to zaleta C - ma być łatwo. Ale .....
ale ... jest jedno małe ale
trzeba najpierw niestety przeczytać i co ważniejsze poćwiczyć podstawy tego C. (nie piszę tego z żadną zgryźliwością!) ... bo tak coś czuję, że koledze się jakby śpieszy i rzucił się od razu na głęboką dla siebie wodę - czyli przykłady ze środka albo końca książki - bez opanowania podstaw
widać to właśnie po tych usilnie tajemniczo podawanych rąbkach kodu. Bo wprawdzie ktoś dobrze podpowiedział ci, że ATmega8 nie ma CTC dla timer0 ale ma CTC dla bliźniaczego Timer2 - byłoby ci może ciut łatwiej zamiast robić to na Timer1. Ale jeszcze zanim powiem o błędach to największe zdziwienie mnie jednak ogarnia że kolega mając zestaw - z oryginalnie wlutowanym czujnikiem i co ważne poprawnie skonstruowanym połączeniem z procesorem, z prawidłowym podciąganiem linii DQ do VCC - nie przetestował tego oryginalnego kodu ????? czy nie łatwiej byłoby sobie najpierw to odpalić i potem mieć jakiś punkt odniesienia ??? zamiast - od razu jak mówiłem bez podstaw - rzucić się na przeportowanie na innym procek - a potem na ślepo pytać na forum i ew doszukiwać się błędów w bibliotekach ???? oj oj - oj...
ok babole we fragmentach pokazywanego kodu:
co to jest panie autor: ?????????
Code: c
Log in, to see the code
zastanów się - co tym ustawiasz ? czy w ogóle wiesz co ustawiasz i do czego to ma być. Bo z kodu wynika (o ile masz prawidłowo fusy ustawione i rzeczywiście podłączony kwarc 11,0592MHz), że preskaler = 1024, a po wpisaniu wartości 0x36d8 do OCR1A będziesz miał przerwanie od porównania co - UWAGA!!! - 0,77s
czyli co ok 770ms
tak się składa, że to mogłoby nawet działać - ale jednak już takie ustawienia i kod - sugerują, że w porównaniu do tego co było opisane w książce i do czego miał służyć ten timer - to w ogóle tu jakaś herezja się wkradła i widać, że kolega ma spore problemy na tym polu - po czym właśnie śmiem twierdzić, że brak podstaw i np warto byłoby poczytać wcześniejszy rozdział, chociażby o timerach, albo o multipleksowaniu LED gdzie jest na prawdę krok po kroku na przykładzie pokazane jak dobiera się i oblicza we własnym zakresie częstotliwości timerów sprzętowych. Tymczasem jak widzę, wiele osób np do tego rozdziału nie zagląda nawet bo wydaje im się, że po co ???? skoro i tak nie będą zajmować się multipleksowaniem LED albo może tam kiedyś. Tymczasem książka jest tak skonstruowana żeby w odpowiedniej kolejności i na ciekawych przykładach wyjaśniać takie zagadnienia w oparciu o kod programu. Bo teoretycznie - to masz to opisane w setkach książek, tylko często - sama teoria mało przemawia do czytelnika. Jak więc mam przekonywać ludzi, że warto jest czytać tę książkę od deski do deski ? I robić ćwiczenia od deski do deski i po kolei? Bo tylko to da jakieś rezultaty po jakimś czasie?
Ale - ok - proszę kolejny babol w tych fragmentach kodu, bo dalej widzimy:
Code: c
Log in, to see the code
czytał kolega notę PDF? albo inaczej - ma kolega otwartą w jednym z okienek notę PDF swojego procka, dla którego pisze ten program??? W książce ja - z uporem maniaka - co chwilę o tym przypominam i nie na darmo. Bo jak widać ta powyższa linijka odblokowuje nam przerwanie od porównania
Timer/Counter1, Output Compare A Match
tymczasem kolega dalej - ze stoickim spokojem pisze kod:
Code: c
Log in, to see the code
czyli przygotowuje przerwanie ale dla:
Timer/Counter1, Output Compare BMatch
...... więc co tu dużo dalej pisać?
jeśli w programie jest więcej takich "kfiatkóf" ...... to nie dziwota, że po stworzeniu takiej mieszanki:
- brak podciągania linii DQ za pomocą rezystora zewn. do VCC
- mega przedziwny tryb parasite
- brak przekazania na forum porządnego schematu tego co sam tworzysz
- błędów we własnym (zaznaczam we własnym) programie
otrzymujemy mieszaninę wybuchową do unicestwiania scalaczków DS18B20 w najlepszym przypadku.
reasumując - żeby koledze na prawdę szybko i sprawnie pomóc tu na forum to:
1. trzeba podać poprawnie narysowany schemat tego co masz w rzeczywistości na swojej stykówce (ale już bez laurek)
2. pokazać zdjęcia tego ustrojstwa (najwyżej uporządkować i uczesać pająka przed sesją zdjęciową - bo przecież każdego pająka można ładnie zrobić - tylko trzeba po prostu chcieć)
3. zrób prawidłowe zewn. podciąganie
4. popraw w kodzie to co opisałem wyżej
5. POKAŻ cały swój kod do obsługi (bez kodu tych bibliotek bo to niepotrzebne tu w ogóle)
..... tylko nie mów proszę, że zanim się nauczysz rysować schematów w Eagle to minie za dużo czasu a ty go nie masz i chciałbyś JUŻ, TERAZ - ZA CHWILĘ. Bo jak sam widzisz, przez ten pośpiech i tak tracisz ten cenny czas w o wiele większych ilościach na takie poszukiwania błędów. A nie wspomnę już o poczytaniu podstaw C i konfiguracji chociażby timerów. Bo na prawdę bez ironii żadnej !!! aż szkoda patrzeć, że się tak męczysz - podczas gdy masz w zasięgu ręki wszystko po kolei opisane - tylko czytasz i ćwiczysz wspak - stąd takie a nie inne efekty.
Skoro już napisałeś, że mega pająk to nie wstydź się i pokaż go, chociażby po to, aby następni nie popełniali takich prostych błędów. Najlepiej uczy się na błędach innych.
Mirek poświęcił sporo czasu, aby Ci pomóc więc doceń to i punkt po punkcie zrealizuj wszystko, co opisał on i koledzy wyżej. Masz tylko jedną alternatywę - dalsze tracenie czasu.
Dla ułatwienia dodam że Bartek teraz działa na płytce EVBavr04 z Propoxu-nieco zmodyfikowaną- z podpiętą płytka stykową.
Czas w tym wieku ma ZUPEŁNIE INNE ZNACZENIE niż w naszym.
Płynie wolno- sam pamiętam.
I zazdroszczę.
A tak nieco poza tematem-
Bartek.k.k wrote:
Kod C
TCCR1B |= (1<<WGM12);
TCCR1B |= (1<<CS12)|(1<<CS10);
OCR1A = 0x36d8;
TIMSK |= (1<<OCIE1A);
No i trochę poza tematem- ale nie całkiem:
Jakoś WGM12 na str.100 jest pominięty.
I na str. 98 w nowszej wersji też.
W tabelce jest- ale opisu nie ma.
Dla ułatwienia dodam że Bartek teraz działa na płytce EVBavr04 z Propoxu-nieco zmodyfikowaną- z podpiętą płytka stykową.
I wręcz bardzo dobrze, uważam, że wszelkie próby własnych modyfikacji tych kodów prezentowanych w książce są bardzo pożądane bo dadzą sporo dodatkowej praktyki.
janbernat wrote:
Czas w tym wieku ma ZUPEŁNIE INNE ZNACZENIE niż w naszym.
Płynie wolno- sam pamiętam.
I zazdroszczę.
hmmm ja też zazdroszczę ... tylko szkoda mi tego, że także w tym wieku o wiele łatwiej o zniechęcenie do tematu gdy wciąż coś nie wychodzi
janbernat wrote:
A tak nieco poza tematem-
Bartek.k.k wrote:
Kod C
TCCR1B |= (1<<WGM12);
TCCR1B |= (1<<CS12)|(1<<CS10);
OCR1A = 0x36d8;
TIMSK |= (1<<OCIE1A);
No i trochę poza tematem- ale nie całkiem:
Jakoś WGM12 na str.100 jest pominięty.
I na str. 98 w nowszej wersji też.
W tabelce jest- ale opisu nie ma.
ależ chyba jest na stronie 98:
Quote:
Bit 1:0 – WGM11:0: Waveform Generation Mode
Combined with the WGM13:2 bits found in the TCCR1B Register, these bits control the counting
sequence of the counter, the source for maximum (TOP) counter value, and what type of waveform
generation to be used, see Table 39. Modes of operation supported by the Timer/Counter
unit are: Normal mode (counter), Clear Timer on Compare Match (CTC) mode, and three
Widzę, że przez moją niewiedzę zaraz wybuchnie wojna :-> Postaram się wszystko wyjaśnić dlaczego tak, a nie inaczej i wstawie brakujące elementy. Więc tak.
mirekk36 wrote:
Bartek.k.k napisał:
xamrex napisał:
Masz rezystor podciągający?
Niektórzy o nim zapominają.
Dla DS18B20? Jeśli tak to nie mam, ponadto nigdy ich nie używałem i wszystko chodziło, tylko teraz układ odmawia współpracy.
Ileż to już razy ja ale nie tylko ja pisałem na elektrodzie, że takie tłumaczenie, że "mi to wcześniej działało więc nie widzę w tym problemu" ..... powoduje tylko wydłużenie drogi do rozwiązania swoich kłopotów w tym zakresie i to na maxa. Bo jeśli działało - to proponuję się na tym oprzeć i już do końca życia tak robić zamiast poprawnie jak radzą inni koledzy. Może jednak kiedyś w końcu na własnych błędach się kolega nauczy - tylko szkoda tego czasu kurka wodna
Nawet, gdy wstawiałem rezystor podciągający to też nie działało, więc myślałem, że problem nie leży tu. Zaraz go wstawię do układu.
mirekk36 wrote:
Uwierz panie kolego, że to zdjęcie pająka byłoby lepsze w tym wypadku i szybciej by ci koledzy pomogli, którzy wypowiadają się w tym temacie niż na podstawie tego hmmm hmmm "schematu" - proszę tylko nie obraź się - ale to nie schemat tylko (znowu się powtórzę) - laurka.
Bartek.k.k napisał:
Atmega8 [C] - nie odczytuje lini 1Wire
niestety ale to masakra - i nie chodzi tu o krytykowanie czy wyśmiewanie ale kolega janbernat ma 1000% racji - lepiej byłoby nawet byle jak ale np w Eagle darmowym to narysować. Rozmowa na forum za pomocą schematów to chyba podstawa prawda.
Ale niestety kolega na każdą sugestię jak widać wyżej - broni się rękami i nogami, co powoduje tylko u niego coraz dalsze straty jak widać ale już nie tylko czasu lecz fizycznych części - np palonych na stosie wręcz czujników. Bo co to np jest za tryb PARASITE ??????????????????
Następnym razem spróbuje w EAGLE co narysować, więc rysunków z Painta nie będę wklejał. Fakt na schemacie jest błąd, ale Panowie jako zawodowcy mają dużą wiedzę i myślałem, że będą wiedzieć, że brakujący kabelek od 2 połączonych nóżek DS18B20 należy podłączyć do GND, ale i tak przepraszam za wprowadzenie w błąd.
mirekk36 wrote:
Atmega8 [C] - nie odczytuje lini 1Wire
sorry ale to jest mistrzostwo świata. Na prawdę gdybym ja miał pomóc to wolałbym już oglądać mega pająka niż takie coś. Bo z tego to tylko można się domyślać wielu dziwnych rzeczy. Sam rysunek (bo przecież nie schemat) wyjaśnia tylko że czujnik jest podłączony jedną swoją nogą do mikrokontrolera bez podciągania (o którym wyżej była mowa) .... ale ten czerwony robaczek to ci dopiero zagwozdka??? co to może oznaczać ??? co kolega miał na myśli? jak i do czego to podłączył - na prawdę extras. A przynajmniej z pająka byłoby widać i można byłoby coś konkretnego podpowiedzieć....
ale nie - po co? przecież pająk jest dobry, połączenia też są dobre, zwarć na stykówce przecież nie ma - no to w czym może być problem ?????? wiadomo - tylko w programie bo przecież nie w tym co ja robię.
Tak jak wyżej, z pośpiechu zapomniałem o dorysowaniu przewodu łączącego 2 zewnętrzne nóżki do GND.
mirekk36 wrote:
Bartek.k.k napisał:
... Wychodzi chyba na to, że mój ciekawski kot zmodyfikował mój układ
No - takie wytłumaczenie to już bardziej rozumiem ale cóż takiemu zwierzakowi trzeba wybaczyć przecież jak się spojrzy tymi swoimi dużymi oczami i się "przymizia" to przechodzi złość na niego.
Ale idźmy dalej - w stronę kodu, który oczywiście kolega też oszczędza na maxa. Po pierwsze - to co sam napisałeś (nie te biblioteki bo one na pewno są dobre) - śmiało mógłbyś wkleić w całości a nie takimi wyrywkami, z których już na pierwszy rzut oka widać, że masz także babol na babolu w porównaniu do tego co było opisywane w książce.
Pewnie, że to ważna sprawa żeby umieć sobie poradzić z odpaleniem tego na dowolnym procku. Przecież to zaleta C - ma być łatwo. Ale .....
Kot wyznał, że to nie on popsuł układ, więc to jednak moja wina. Co do kodu, nie wklejałem całego, ponieważ sam Pan wspominał o prawach autorskich więc nie chciałem w całości go udostępniać, to samo dotyczy komentarzy w kodzie. Odpalić, odpaliłem ten kod na ATmedze8 i fajnie to działało, lecz teraz jakiś fatum na mnie spadł.
mirekk36 wrote:
trzeba najpierw niestety przeczytać i co ważniejsze poćwiczyć podstawy tego C. (nie piszę tego z żadną zgryźliwością!) ... bo tak coś czuję, że koledze się jakby śpieszy i rzucił się od razu na głęboką dla siebie wodę - czyli przykłady ze środka albo końca książki - bez opanowania podstaw
widać to właśnie po tych usilnie tajemniczo podawanych rąbkach kodu. Bo wprawdzie ktoś dobrze podpowiedział ci, że ATmega8 nie ma CTC dla timer0 ale ma CTC dla bliźniaczego Timer2 - byłoby ci może ciut łatwiej zamiast robić to na Timer1. Ale jeszcze zanim powiem o błędach to największe zdziwienie mnie jednak ogarnia że kolega mając zestaw - z oryginalnie wlutowanym czujnikiem i co ważne poprawnie skonstruowanym połączeniem z procesorem, z prawidłowym podciąganiem linii DQ do VCC - nie przetestował tego oryginalnego kodu ????? czy nie łatwiej byłoby sobie najpierw to odpalić i potem mieć jakiś punkt odniesienia ??? zamiast - od razu jak mówiłem bez podstaw - rzucić się na przeportowanie na innym procek - a potem na ślepo pytać na forum i ew doszukiwać się błędów w bibliotekach ???? oj oj - oj...
Przyznam się bez bicia, że doczytałem teorie do 143 i po prostu chciałem już co składać, większość stron czytałem w porannej drodze do szkoły, więc prawie nic z nich nie pamiętam, dlatego książkę czytam od nowa.
mirekk36 wrote:
co to jest panie autor: ?????????
Kod C
TCCR1B |= (1<<CS12)|(1<<CS10);
OCR1A = 0x36d8;
zastanów się - co tym ustawiasz ? czy w ogóle wiesz co ustawiasz i do czego to ma być. Bo z kodu wynika (o ile masz prawidłowo fusy ustawione i rzeczywiście podłączony kwarc 11,0592MHz), że preskaler = 1024, a po wpisaniu wartości 0x36d8 do OCR1A będziesz miał przerwanie od porównania co - UWAGA!!! - 0,77s
czyli co ok 770ms
tak się składa, że to mogłoby nawet działać - ale jednak już takie ustawienia i kod - sugerują, że w porównaniu do tego co było opisane w książce i do czego miał służyć ten timer - to w ogóle tu jakaś herezja się wkradła i widać, że kolega ma spore problemy na tym polu - po czym właśnie śmiem twierdzić, że brak podstaw i np warto byłoby poczytać wcześniejszy rozdział, chociażby o timerach, albo o multipleksowaniu LED gdzie jest na prawdę krok po kroku na przykładzie pokazane jak dobiera się i oblicza we własnym zakresie częstotliwości timerów sprzętowych. Tymczasem jak widzę, wiele osób np do tego rozdziału nie zagląda nawet bo wydaje im się, że po co ???? skoro i tak nie będą zajmować się multipleksowaniem LED albo może tam kiedyś. Tymczasem książka jest tak skonstruowana żeby w odpowiedniej kolejności i na ciekawych przykładach wyjaśniać takie zagadnienia w oparciu o kod programu. Bo teoretycznie - to masz to opisane w setkach książek, tylko często - sama teoria mało przemawia do czytelnika. Jak więc mam przekonywać ludzi, że warto jest czytać tę książkę od deski do deski ? I robić ćwiczenia od deski do deski i po kolei? Bo tylko to da jakieś rezultaty po jakimś czasie?
To jest ustawienie przerwań, aby wyświetlacz odświeżał się z częstotliwość bodajże 2 Hz.
mirekk36 wrote:
Ale - ok - proszę kolejny babol w tych fragmentach kodu, bo dalej widzimy:
Kod C
TIMSK |= (1<<OCIE1A);
czytał kolega notę PDF? albo inaczej - ma kolega otwartą w jednym z okienek notę PDF swojego procka, dla którego pisze ten program??? W książce ja - z uporem maniaka - co chwilę o tym przypominam i nie na darmo. Bo jak widać ta powyższa linijka odblokowuje nam przerwanie od porównania
Timer/Counter1, Output Compare A Match
tymczasem kolega dalej - ze stoickim spokojem pisze kod:
Kod C
ISR(TIMER1_COMPB_vect)
czyli przygotowuje przerwanie ale dla:
Timer/Counter1, Output Compare B Match
Fakt, jest błąd, tylko że po wpisaniu "ISR(TIMER1_COMPA_vect)" wyświetlacz się nie odświeżał.
mirekk36 wrote:
jeśli w programie jest więcej takich "kfiatkóf" ...... to nie dziwota, że po stworzeniu takiej mieszanki:
- brak podciągania linii DQ za pomocą rezystora zewn. do VCC
- mega przedziwny tryb parasite
- brak przekazania na forum porządnego schematu tego co sam tworzysz
- błędów we własnym (zaznaczam we własnym) programie
otrzymujemy mieszaninę wybuchową do unicestwiania scalaczków DS18B20 w najlepszym przypadku.
reasumując - żeby koledze na prawdę szybko i sprawnie pomóc tu na forum to:
1. trzeba podać poprawnie narysowany schemat tego co masz w rzeczywistości na swojej stykówce (ale już bez laurek)
2. pokazać zdjęcia tego ustrojstwa (najwyżej uporządkować i uczesać pająka przed sesją zdjęciową - bo przecież każdego pająka można ładnie zrobić - tylko trzeba po prostu chcieć)
3. zrób prawidłowe zewn. podciąganie
4. popraw w kodzie to co opisałem wyżej
5. POKAŻ cały swój kod do obsługi (bez kodu tych bibliotek bo to niepotrzebne tu w ogóle)
Przyjąłem. W niedługim czasie wszystko zaraz powinno zostać przedstawione.
mirekk36 wrote:
janbernat napisał:
Czas w tym wieku ma ZUPEŁNIE INNE ZNACZENIE niż w naszym.
Płynie wolno- sam pamiętam.
I zazdroszczę.
hmmm ja też zazdroszczę ... tylko szkoda mi tego, że także w tym wieku o wiele łatwiej o zniechęcenie do tematu gdy wciąż coś nie wychodzi
Nie dla każdego wakacje to 2 miesiące odpoczynku, a dorywcza praca w każdym zawodzie, żeby jakoś sobie dorobić
Dodano po 1 [godziny] 55 [minuty]:
1. Mam nadzieję, że jak na 1 schemat Panowie się doczytacie co i jak.
2. Proszę:
3. Zrobione. (Nie miałem 2,2k więc wstawiłem 2x 1k, chyba nic się nie stanie?)
4. Zaraz będzie poprawione.
5. Nie wiem jak wygląda sprawa z prawami autorskimi.
Dodano po 14 [minuty]:
Nie wierzę... Nie wykrywało czujników przez brak rezystora 2,2K... Korzystając, jakie ustawienia powinien mieć preskaler, aby temperatura odświeżała się płynie, bez migotania wyświetlacza?
Ajj, SCK przez pomylke zaznaczylem. Rezystory takie dziwne, bo nie wiedzialem jak sie je dodaje w egle. Tutoriale przeczytam wieczorem, teraz studiuje ksiazce na swierzym powietrzu. Pozdrawiam i dziekuje za pomoc, Bartekk !
Ajj, SCK przez pomylke zaznaczylem. Rezystory takie dziwne, bo nie wiedzialem jak sie je dodaje w egle. Tutoriale przeczytam wieczorem, teraz studiuje ksiazce na swierzym powietrzu. Pozdrawiam i dziekuje za pomoc, Bartekk !
O, i to się nazywa podejście .... pomimo to, że jeszcze trochę będziesz musiał nabrać praktyki w rysowaniu tych schematów w eagle - to jednal widać, że teraz zaczynasz iść szybciej do przodu - byle by na siłę nie przyśpieszać. Powoli - a solidnie .... i będzie dobrze. A jak coś - to zawsze dopytasz - a koledzy tutaj jak widzisz chętnie pomogą.