Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega8 [C] - nie odczytuje lini 1Wire

Bartek.k.k 23 Cze 2011 00:57 3816 34
  • #1 23 Cze 2011 00:57
    Bartek.k.k
    Poziom 21  

    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ę.

    0 29
  • Sklep HeluKabel
  • Pomocny post
    #2 23 Cze 2011 11:08
    xamrex
    Poziom 28  

    Masz rezystor podciągający?
    Niektórzy o nim zapominają.

    0
  • Sklep HeluKabel
  • #3 23 Cze 2011 11:13
    gaskoin
    Poziom 38  

    Bartek.k.k napisał:
    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ś :)

    0
  • #4 23 Cze 2011 11:53
    mirekk36
    Poziom 42  

    gaskoin napisał:
    Bartek.k.k napisał:
    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ś :)


    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

    0
  • #5 23 Cze 2011 12:05
    janbernat
    Poziom 38  

    Bartek.k.k napisał:
    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.

    0
  • #6 23 Cze 2011 12:19
    Bartek.k.k
    Poziom 21  

    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.

    gaskoin napisał:
    Bartek.k.k napisał:
    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ąć :D Schemat wygląda mniej więcej tak(proszę wybaczyć, że w Paincie, ale inaczej jak na razie nie potrafię:cry: ).

    Atmega8 [C] - nie odczytuje lini 1Wire

    janbernat napisał:
    Bartek.k.k napisał:
    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 :)

    0
  • #7 23 Cze 2011 12:42
    janbernat
    Poziom 38  

    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.

    0
  • #8 23 Cze 2011 13:10
    Bartek.k.k
    Poziom 21  

    janbernat napisał:
    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.


    Nie miałem 2,2k więc wsadziłem 2x 1k lecz dalej bez skutku. Połączenia na płytce wydają się poprawne.

    0
  • #9 23 Cze 2011 13:14
    janbernat
    Poziom 38  

    A w programie jest parasite?
    P.S.
    Jutro jest 24 czerwca- koniec roku szkolnego.
    Moze znajdę chwilę aby pójść na pocztę.

    0
  • #10 23 Cze 2011 13:21
    Bartek.k.k
    Poziom 21  

    Tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zaraz umieszczę filmik jak to wszystko wygląda na czystym kodzie prosto z płytki dołączonej do książki.

    0
  • #11 23 Cze 2011 13:24
    janbernat
    Poziom 38  

    A masz dwa czujniki czy jeden?
    Jak dwa to odłącz jeden.

    0
  • #12 23 Cze 2011 13:27
    Bartek.k.k
    Poziom 21  

    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.

    0
  • #13 23 Cze 2011 13:35
    janbernat
    Poziom 38  

    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.

    0
  • #14 23 Cze 2011 14:03
    Bartek.k.k
    Poziom 21  

    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:

    Atmega8 [C] - nie odczytuje lini 1Wire

    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.

    0
  • #15 28 Cze 2011 12:25
    Bartek.k.k
    Poziom 21  

    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 :(

    0
  • #16 28 Cze 2011 19:52
    janbernat
    Poziom 38  

    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.

    0
  • #17 28 Cze 2011 19:59
    Bartek.k.k
    Poziom 21  

    -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.

    Konfiguracja linii 1Wire:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ustawienia preskalera:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tylko tyle w kodzie zmieniałem.

    0
  • #18 28 Cze 2011 21:03
    janbernat
    Poziom 38  

    Mirek o ile się nie mylę użył timer0.

    0
  • #19 28 Cze 2011 21:33
    Bartek.k.k
    Poziom 21  

    janbernat napisał:
    Mirek o ile się nie mylę użył timer0.


    Tak, tylko:

    Wojtek75 napisał:
    Timer0 w M8 w przeciwieństwie do M32 nie ma możliwości pracy w trybie CTC. Chcesz CTC to przenieś obsługę na T1 lub T2.

    0
  • #20 28 Cze 2011 23:30
    mirekk36
    Poziom 42  

    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 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 ;)




    Bartek.k.k napisał:
    gaskoin napisał:
    Bartek.k.k napisał:
    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ąć :D Schemat wygląda mniej więcej tak(proszę wybaczyć, że w Paincie, ale inaczej jak na razie nie potrafię:cry: ).


    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 ??????????????????

    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ę.



    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 .....

    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: ?????????

    Kod: c
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    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
    Zaloguj się, aby zobaczyć kod


    czyli przygotowuje przerwanie ale dla:

    Timer/Counter1, Output Compare B Match

    ...... 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.

    uuffff ale się rozpisałem.

    0
  • #21 29 Cze 2011 01:11
    dondu
    Moderator Mikrokontrolery Projektowanie

    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.

    0
  • #22 29 Cze 2011 03:46
    janbernat
    Poziom 38  

    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 napisał:
    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.

    0
  • #23 29 Cze 2011 07:51
    mirekk36
    Poziom 42  

    janbernat napisał:
    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 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 :(

    janbernat napisał:
    A tak nieco poza tematem-
    Bartek.k.k napisał:
    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:

    Cytat:
     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

    0
  • #24 29 Cze 2011 12:40
    Bartek.k.k
    Poziom 21  

    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 napisał:
    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 :wink:


    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 napisał:
    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 napisał:

    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 napisał:
    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 :wink: ale cóż takiemu zwierzakowi trzeba wybaczyć :wink: 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 napisał:

    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 napisał:

    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 napisał:
    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 napisał:
    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 napisał:
    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ę :wink: ... 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.

    Atmega8 [C] - nie odczytuje lini 1Wire

    2. Proszę:

    Atmega8 [C] - nie odczytuje lini 1Wire Atmega8 [C] - nie odczytuje lini 1Wire

    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?

    0
  • #25 29 Cze 2011 13:15
    dondu
    Moderator Mikrokontrolery Projektowanie

    Bartek.k.k napisał:
    Nie wierzę... Nie wykrywało czujników przez brak rezystora 2,2K...

    Popatrz ile czasu (dni) swojego i kolegów Ci podpowiadających zmarnowałeś, choć już w pierwszym poście miałeś odpowiedź:

    xamrex napisał:
    Masz rezystor podciągający? Niektórzy o nim zapominają.


    Zmień swoje podejście do elektroniki i czytaj datasheety lub chociaż:
    Obsługa 1-wire na przykładzie DS18B20

    Eagla także się naucz, bo ten schemat ... postęp jest, ale długa droga przed Tobą:
    http://tonic-lab.com/pdf/reading_room/eagle_tutorial2.pdf

    A swoją drogą jakim cudem przy takim schemacie to działa? Podłączenie SCK oraz ISP do +5V, Vdd do GND, no i ten rezystor ... hmmm, coś ten schemat podejrzany. Właściwe znajdziesz tutaj:
    http://mikrokontrolery.blogspot.com/2011/04/temperatura-pomiar.html

    Twój schemat:
    Atmega8 [C] - nie odczytuje lini 1Wire

    O braku kondensatorów przy kwarcu już tylko wspomnę (błąd nr 5):
    http://mikrokontrolery.blogspot.com/2011/04/bledy-w-schemacie.html

    No ale mogę się mylić.

    0
  • #26 29 Cze 2011 13:35
    Bartek.k.k
    Poziom 21  

    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 !

    0
  • #27 29 Cze 2011 13:38
    dondu
    Moderator Mikrokontrolery Projektowanie

    Popraw więc schemat.
    Podciągnięcie to nie znaczy rezystor w szereg. Schemat z załączonych linków dot 1-wire pokazują co i jak z tym rezystorem.

    0
  • #28 29 Cze 2011 14:10
    mirekk36
    Poziom 42  

    Bartek.k.k napisał:
    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ą.

    0
  • #29 29 Cze 2011 14:55
    Bartek.k.k
    Poziom 21  

    Myślę, że nie mam co już zanudzać jakże można powiedzieć głupimi problemami. Pojawię się:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Tak więc, wszystkich gorąco pozdrawiam z upalnego dolnegośląska, Bartekk !

    0
  • #30 29 Cze 2011 14:57
    janbernat
    Poziom 38  

    A pisałem żebyś wydrukował sobie schemat płytki.
    Jest przecież na niej gniazdko 1wire z opornikiem podciagającym

    0