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

[Bascom][ATmega8]DS18b20 przypisywanie do określonej fukncji

endurasek 09 Lis 2012 17:19 11607 60
  • #1 09 Lis 2012 17:19
    endurasek
    Poziom 14  

    Witam
    Mój problem jest następujący
    Chce stworzyć program który będzie dany czujnik DS przypisywać pod określoną funkcje.
    Chodzi mi bardziej o pod program przy pomocy którego np. DS1 , DS2, DS3 ,DS4
    będę przypisywać np. Bojlerowi, solarowi itp.
    W przypadku gdy ktoryś ds się uszkodzi mogę go po prostu wymienić i nowy przypisać . Jesli się uszkodzi to pokaże --,- a nie tak jak teraz pokaże wartość kolejnego ds-a

    mniej więcej coś takiego ale potrzebuje pomocy przy wyborze i przypisywaniu ID

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Poprawiono tytuł. LordBlick

    0 29
  • #2 09 Lis 2012 18:38
    Procesor32
    Poziom 12  

    Zapisujesz nazwy pod ten sam adres w EEprom
    Writeeeprom Q , 13
    I odczytujesz też z tego samego adresu.

    0
  • #4 10 Lis 2012 09:19
    Procesor32
    Poziom 12  

    Zacznijmy od początku.
    Czy posiadasz podpięte czujniki DS do jednego pinu ?, czy do 4 ?
    Z tego urywka programu nie mogę tego wywnioskować.

    Jeśli do jednego pinu to polecam Link
    Natomiast, jeśli do 4 pinów to polecam Link

    Niestety posiadasz cztery zmienne - Q,N,R,L.
    Zapisujesz i odczytujesz tylko ze zmiennej Q.
    I oczywiście nad pisujesz dane w pamięci EEProm jak pisałem wcześniej.

    Reasumując przypisz każdej zmiennej inny adres w EEProm, jednocześnie inną zmienną.
    Tak samo w odczycie.

    Zainteresuj się ID czujników, w podanych linkach to znajdziesz.

    "Lcd "T. bojlera >" ; Q" tu nie odczytujesz temperatury, a zapisaną zmienną z EEProm.

    A raczej wcale nie odczytujesz, brak Readeeprom .

    0
  • #5 10 Lis 2012 09:45
    endurasek
    Poziom 14  

    no mam podpiete pod jeden port
    I tak prawde mówiąc chyba bede musial cos pokombinować z ID bo tylko wtedy jak wypne jednego to reszta bedzie dzialac jak ma a w miejsce uszkodzonego wskoczy mi np. --.- czy tak?

    0
  • #6 10 Lis 2012 10:00
    Procesor32
    Poziom 12  

    endurasek napisał:
    a w miejsce uszkodzonego wskoczy mi np. --.- czy tak?

    Nie wskoczy, bo w tym urywku nie ma tego.

    Przeczytaj ten wątek. Link

    0
  • #7 10 Lis 2012 15:53
    adambehnke
    Poziom 24  

    Zrób to tak jak logika nakazuje.
    1.Sprawdzasz ile DS-ów jest na linii (polecenie 1WIRECOUNT)
    2.Sczytaj ID wszystkich i zapisz do zmiennych (najlepiej do tablicy)
    3.Utwórz sobie tablicę swoich funkcji np. TEMP1 (ale zrób to w tablicy )
    4.Przepisz ID wybranego DS-a do tablicy ze swoją funkcją TEMP1
    5.Odczytaj temperaturę z wybranego DS-a podając wcześniej przepisane ID do twojej funkcji.
    6.W twojej tablicy TEMP1 zrób także miejsce na wartość odebranej temperatury.

    Czyli tablica twojej funkcja TEMP1 będzie zawierała (temperatura, i osiem bajtów ID)

    I tak zrób dla każdej swojej funkcji jakie chcesz używać.
    Jest to super proste i łatwe do stosowania. Możesz w dowolnej chwili sobie sprawdzić jakie ID ma przypisany DS i z łatwością wpinać , wypinać i dopisywać nowe ID DS-ów.

    Ważne aby przed każdym odczytem sprawdzać ile jest ds-ów na magistrali , i jesli brakuje któregoś z DS-ów to program powinien to sprawdzić i zasygnalizować.

    Tyle ode mnie.

    Dodano po 3 [minuty]:

    endurasek napisał:
    a w miejsce uszkodzonego wskoczy mi np. --.- czy tak?


    Taką sytuację musisz właśnie przewidzieć w programie. I kiedy próbujesz odczytać danego DS-a a on nie odpowiada (lub nie ma go na magistrali) to do twojej tablicy w miejsce wyniku temperatury trafia np:"--" czy "ERR".

    0
  • #8 10 Lis 2012 17:31
    Procesor32
    Poziom 12  

    A nie byłoby lepiej zapisywać ID do EEProm, jednocześnie przypisując każdemu DS adres, pod jaki został zapisany ?
    Na pewno 100.000 razy nie zapisze ID DS-ów

    Adres = 1
    DS i Adres = ID

    0
  • #9 10 Lis 2012 17:44
    adambehnke
    Poziom 24  

    No to jest chyba oczywiste że ID muszą być zapisane do eepromu i po uruchomieniu mikrokontrolera z niego odczytane. Tak samo muszą być odczytane ID jakie ma przypisane do konkretnych funkcji. Generalnie zapis do eepromu jest tylko w momencie parowania funkcja<=>DS.

    Procesor32 napisał:
    Na pewno 100.000 razy nie zapisze ID DS-ów


    Na moje oko to pewnie z 10 razy z czego 8 to będzie w fazie testów.. Bo i po co częściej zapisywać.

    Co do:
    Procesor32 napisał:
    Zapisujesz nazwy pod ten sam adres w EEprom
    Writeeeprom Q , 13
    I odczytujesz też z tego samego adresu.


    To nie rozumiem po co sobie tak życie komplikować. W sumie podpowiedział mi to kiedyś kolega z forum. Można sobie utworzyć zmienną która będzie zmienną eeprom np:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Potem zapisujesz ją np. w ten sposób:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    gdzie TEST to zmienna typu integer.

    A odczyt tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    I po sprawie.Nie musisz pamiętać adresu pod który masz zapisywać i z pod którego odczytywać. Prosto i bez problemu.

    0
  • Pomocny post
    #10 11 Lis 2012 11:42
    Procesor32
    Poziom 12  

    adambehnke napisał:
    Co do:
    Cytat:
    Procesor32 napisał:
    Zapisujesz nazwy pod ten sam adres w EEprom
    Writeeeprom Q , 13
    I odczytujesz też z tego samego adresu.


    Jeśli przeczytałbyś dokładnie post Link to nie pisał byś reszty swojego postu.
    Ogólnie mówiąc wypowiedź była skierowana do autora wątku.

    adambehnke napisał:
    I po sprawie.Nie musisz pamiętać adresu pod który masz zapisywać i z pod którego odczytywać. Prosto i bez problemu.


    Jest to prosta metoda zapisu do EEProm, ale ma zasadniczą wadę.
    Użytkownik nie ma kontroli nad adresami, pod które zapisywane są zmienne.
    Owszem upraszcza życie piszącemu program z tym, że może się to odbić negatywnie w przyszłości przy przejściu na inny język programowania AVR, ARM ...

    Zapomniałem dodać.



    I jeszcze jedno.
    Nie korzystamy z pamięci procka w celu zapisu alarmu temperatury.
    DS ma swoja pamięć wbudowana, więc należy z niej korzystać.

    0
    Załączniki:
  • #11 11 Lis 2012 11:55
    adambehnke
    Poziom 24  

    Jak widzę to autor tematu jest dopiero początkujący więc to co napisałem było skierowane właśnie do niego. A co do braku kontroli nad adresami to oczywiście masz rację. Dlatego szkoda czasu na Bascomowanie i lepiej jesli jest się dopiero na początku drogi programowania zacząć uczyć się właściwego języka.

    Dodano po 3 [minuty]:

    A jeśli możesz to napisz co robi to:

    Procesor32 napisał:
    "Lcd "T. bojlera >" ; Q"


    Bo kompletnie nie rozumiem tej składni. Chyba że już zapomniałem co nieco z Bascoma.
    Najlepiej niech się wypowie autor tematu co udało mu się dokonac do tej pory. Może już mu coś ruszyło i działa.

    0
  • #12 11 Lis 2012 19:51
    endurasek
    Poziom 14  

    No własnie zgłupiałem do reszty ale jedno sie zgadza jestem poczatkujący i naprawde duzo czasu mi zajmuje za nim cos napisze i to zadziała.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Na pewno cos zle robie i w dodatku zajmuje to za duzo miejsca w pamieci ze nie wspomne że samemu sie juz zamotalem w tym co robie.
    usiluje zczytac id czujnika i wpisac go do pamieci po czym przypisac to id do poszczególnej funkcji ...


    chcialem też ze by sterownik w przypadku odczepionego ds-a lub jego uszkodzeniu za miast temp ktora sobie kopiuje z innego czujnika wywalil brak ukladu lub --.- ale ni jak umiem to zastosować

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    poszukiwałem tez jakiegos gotowego programu ktory by mi pomógł ale widze ze co nie którzy to wola podpiac czujniki pod kilka portów ale ja tak zrobic nie moge.

    Jeszcze borykam się z innym problemem mianowicie mam juz zbudowany i uruchomiony sterownik ktorego zadaniem jest
    - pomiar temp zew, bojlera, pieca, solara
    - w przypadku zbyt wysokiej temperatury na solarze zchladza go zimna woda (jesli kogos to interesuje to moge to wyjasnic o co tu chodzi bo wiem ze to dziwnie brzmi ze schladzam solar woda...)
    - pomiar obrotów slimaka podajacego ekogroszek do pieca (zbudowany na Counterze T1 i podaje nastepnie % wynik)

    Z ds-ami sobie tak poradzilem ze wczesniej podpiołem sobie wszystkie do ukladu i opisałem ktory jest do czego.

    No i ostatnio dzieje sie jeszcze tak ze po paru dniach pracy sterownika układ sie zawiesza lub zaczyna rożne dziwne rzeczy wyświetlać, oczywiście stosuje watchdog ale też ostatnio przyuważyłem że problemem są zakłucenia jakie sieje świetlówka w piwnicy w czasie zal/wyl bo akurat w tym momenci sterownik sie resetuje.... wsadzilem juz tam dławik sie poprawilo ale dalej to występuje.

    0
  • Pomocny post
    #13 11 Lis 2012 21:32
    adambehnke
    Poziom 24  

    Podstawa to dobrze odfiltrowane zasilanie i stosowanie kondensatorów 100nF przy każdym scalaku. Takie scalaki to również DS i regulator 7805. Wolno wiszące piny mikrokontrolra z nieustalonymi stanami na nich także są powodem restartów. To samo dotyczy LCD. Stosuje się maksymalnie krótkie taśmy połączeniowe pomiędzy lcd a pcb. Najlepiej osadzić lcd bezpośrednio na PCB.
    Nie drażni Ciebie w programach stosowanie "Debounce " ? Mam (miałem w bascomie) istną fobię jak widywałem to w programach na forum.

    0
  • #14 12 Lis 2012 09:30
    Procesor32
    Poziom 12  

    Ajajaj Panocku, jest tu wiele błędów.
    Trzeba popracować nad poprawkami.
    Ale po kolei.
    1. Brak dyrektyw rozmiaru stosu.
    Pomoc Link (PL), oraz Link
    2. Zbędne jest definiowanie czterech zmiennych

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    W tym przypadku zmienną I1s można nadpisać następnym odczytem z DS po konwersji.
    3. Bardzo szkodliwe dla programu użycie Debounce
    Pomoc Link
    4. W jakim celu został użyty Reset Watchdog ?
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    5. Zbędne definiowanie niektórych zmiennych.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Pomoc znajduje się w przykładzie z punktu 3.
    6. W etykiecie Czujnik
    ponowne nadpisanie adresu EEProm.
    6. Zbędna konfiguracja pinów procka w ten sposób
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    I dobrze byłoby program podzielić na bloki, następnie po kolei każdy sprawdzać.
    Jeśli działa to ok i dołączamy następny.


    PS Nie wiem, czy mogę pisać tak długie posty.
    Proszę o odpowiedź.
    Pomoc Link

    0
  • #15 12 Lis 2012 20:24
    endurasek
    Poziom 14  

    Jak dla mnie twoje wypowiedzi moga zawierac i po kilka stron!!! bo sa pomocne.

    Juz tłumacze
    -debaunce stosuje bo jest mi tak prosciej sprawdzic stan pinu , ale tez i nie wiedziałem że jest to cos złego
    -watchdog stosuje ze wzgledu na to ze sterownik czesto sie zawieszal
    ale moze najpierw spróbuje zrobic jak kolega wczesniej napisał i podciągnąć wszystkie nieużywane piny do + wewnęcznego procka i zobacze czy uklad dalej bedzie szalec
    - co niektóre schematy zawieraja jeszcze w ukladzie zasilania procka dławik i teraz pytanie czy jest on potrzebny?

    Chwilowo jestem na delegacji i nie mam dostepu do mojej plytki wykonawczej jedynie mam plytke testowa i nie wiem czy uda mi sie cos zrobic na niej ale sie postaram

    Jak narazie usiluje zbudować osobny program do obsługi ds-ow i potem go wsadze do mojego
    Szukam i szukam przykładow w sieci odnosnie wyboru i przypisywania ds-ow ale chyba nikt jeszcze sie tym nie zainteresował lub to jest tak proste ze nikt o to nie pyta...

    0
  • Pomocny post
    #16 14 Lis 2012 11:01
    WOBI
    Poziom 19  

    Do sprawdzania obecności DS polecam przeczytać Link i Link a tu jest termometr z reakcją na brak czujników Link

    0
  • #17 14 Lis 2012 17:51
    endurasek
    Poziom 14  

    jak narazie to kazdy z przedmówców miał dużo racji i pomógł mi a ja narazie musze to przetrawic bo przegladalem też inne posty z waszym udziałem i dotyczyly tez mojego problemu zwiazanego z brakiem czujników. Postaram sie teraz przez weekend cos porobic i dam znac.

    0
  • #18 14 Lis 2012 21:27
    Procesor32
    Poziom 12  

    Przykład mojego autorstwa zapisu i odczytu DS-ID i nazwy do EEProm.
    Jest to przerobiony kod z C, więc w razie pytań proszę się nie wahać.
    Przetestowane na Mega128
    Nie jest to zapis 8 bitów pobranych z DS-a.
    Jest to zrobione inaczej.

    Miłej lektury.

    0
    Załączniki:
  • #19 17 Lis 2012 12:57
    endurasek
    Poziom 14  

    A wiec przerobilem na sam poczatek program kolegi WOBI na 4xds i prosił bym o sprawdzenie

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Jeśli chodzi o komende debounce to za bardzo nie wiem jak do tego podejsc...
    w przykładzie Kolegi Procesor32
    Bo Mój timer1 jest juz zajety bo zlicza mi impulsy slimaka podajnika.
    Czy można to w inny sposob rozwiazac?

    No i w przykładzie jaki mi podałeś też używasz Timera1 ktorego ja potrzebuje

    ************
    pytanie na marginesie
    Uzywam oscylata wewnętrznego to lepiej czy gorzej??
    I czy musze go w programie też deklarować
    *************

    Dodano po 31 [minuty]:

    Moment sam znalazlem kilka bledow jeszcze teraz powinno być dobrze

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dodano po 1 [godziny] 24 [minuty]:

    Oki teraz mam cos takiego:
    - po wgraniu softu do sterownika wszystkie temp wynosza --.-
    -po przycisnieciu guzika S3 program przechodzi do podprogramu i zczytuje id czujników
    -po czym powraca do głownego programu i pierwsza i druga temp sie pojawia ale 3 i 4 wyswietla --.- (zgadza sie bo sa tylko dwa ds-y podpiete do lini)
    -wylanczam sterownik i zalanczam a na wyswietlaczu znowu same --.-

    jak to teraz zrobic ze by po wywolaniu programu zczytujacego id zapisal do epromu i później przy starcie sterownika nie musial przechodzic do podprogramu tylko odczytal je z epromu?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #20 17 Lis 2012 14:20
    adambehnke
    Poziom 24  

    Co do eeprom to wcześniej już Ci pisałem jak to zrobić prosto. Ale Ty dalej kombinujesz. Widocznie lubisz się męczyć lub masz sporo wolnego czasu na siedzenie i drapanie się po głowie zastanawiając się o co chodzi. Dobra rada: usiądź i przyłóż się do tematu o obsłudze 1wire i DS18x20. Zobacz jakie i w jakim formacie zwracane są dane po poleceniach 1wsearchnext() itp. Potem poćwicz z samym odczytem i zapisem danych z eeprom. Dopiero na końcu składaj wszystkie części programu w jeden.
    Przykład programu kolegi Procesor32 także jest jednym który powinieneś porządnie przestudiować.

    0
  • #21 17 Lis 2012 17:18
    Procesor32
    Poziom 12  

    Szanowny Panie

    endurasek napisał:
    Bo Mój timer1 jest juz zajety bo zlicza mi impulsy slimaka podajnika.

    Takie cusie robi się na przerwaniach zewnętrznych (INT0, INT1 dotyczy Megi8)

    1. Mega 8 posiada trzy Timery, więc można wykorzystać 0, lub 2.
    2. Trzaba wystrzegać się Debounce i Wait, Waitms
    3.
    endurasek napisał:
    formatuje i pozycjonuje prawidlowo w zakresie -99,9C do 999,9C

    DS nigdy nie osiągnie takich zakresów temperatur.
    4. DS posiada rejestr odpowiedzialny za temp. plus, lub minus z tego, co pamiętam.
    5.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Tu jest zapis, nie odczyt z EEProm.

    PS Gdzieś miałem funkcję sprawdzającą obecność DS na magistrali.
    Jeśli ją znajdę, to przerobię na Baskoma i podrzucę.


    I znowu PS widzę błąd w "przerobię " mimo, że jest poprawnie napisane. http://sjp.pwn.pl/szukaj/przerobi%C4%99

    0
  • #22 17 Lis 2012 20:07
    endurasek
    Poziom 14  

    Jesli o bledy ortograficzne to przepraszam jestem dyslektykiem ale się staram

    co do

    Cytat:
    endurasek napisał:
    formatuje i pozycjonuje prawidlowo w zakresie -99,9C do 999,9C


    to kolega procesor32 się chyba pomylił bo ja czegos takiego nie napisałem ale nic sie nie stalo

    dalej lecimy
    jesli chodzi o timery w Atmega8 to ręki sobie nie daje obciąć ale wydaje mi się że posiada tylko dwa jeden zliczajacy do T0-255 a drugi T1-656.... cos tam.

    prosił by o wytlumaczenie co do wykorzystania timerów przy sprawdzaniu portów
    coś na zasadzie dioda się zapala/gasi itp. (naprawdę jestem początkujący i co do niektórych rzeczy muszę trochę pomyśleć... korzystałem z debounce z tego wzgledu ze komenda jest krótka, prosta i zajmuje mało miejsca w pamięci ale ostatni czasy przyuważyłem że sterownik sam wchodzi we funkcje "menu" chociaż nikt go nie ruszał może to faktycznie to co mówicie się dzieje.)

    ad.5

    w tym podprogramie sprawdzam id ds-a i zapisuje do pamieci ( jeśli się mysle chyba tak jest proszę mnie poprawić)
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    a odczyt jest tutaj na poczatku programu

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #23 17 Lis 2012 20:26
    adambehnke
    Poziom 24  

    endurasek napisał:
    sterownik sam wchodzi we funkcje "menu" chociaż nikt go nie ruszał


    Nie wiem jak wygląda schemat i konfiguracja portów (nie przyglądałem się) ale sprawdź czy masz podciągnięcie do VCC na pinach z klawiszami. Dobrym zwyczajem jest podciągnąć te linie zewnętrznie rezystorem do vcc. Wtedy masz pewność że na pinach masz takie stany jakie powinny być.

    0
  • #24 17 Lis 2012 20:42
    endurasek
    Poziom 14  

    wejscia sa standardowo podciagniete do VCC przez wewnętrzny rezystor procesora komenda "set portx.x"

    a konfiguracja portów wyglada tak

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    sorrki komenda set byla za pierwszym razem teraz zmieniłem ale jeszcze nie sprawdzilem czy dziala jak ma


    Jak dla mnie przyklad kolegi Procesor32 jest zbyt skomplikowany i jak narazie staram sie samemu to zrozumiec wiec

    najpierw czytam ID

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    I na wyswietlaczu pojawia mi sie
    40 226 61 155 1 0 0 239


    no to wpisuje te dane
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    czy jestem na dobrej drodze???

    0
  • #25 18 Lis 2012 16:52
    dondu
    Moderator Mikrokontrolery Projektowanie

    Zacznij od prawidłowego podłączenia mikrokontrolera (AVcc źle podłączone i podciągnij Reset do Vcc):
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    A schematy wklejaj w formie graficznej, to już ktoś inny wcześniej by Ci podpowiedział (nie każdy ma Eagle pod ręką).

    Programu nie sprawdziłem, bo Bascom to nie moja działka.

    0
  • #26 18 Lis 2012 21:44
    endurasek
    Poziom 14  

    A możesz mi doradzić w sprawie stosowania kwarca w Atmega8
    -lepiej stosować zewnętrzny czy wewnętrzny kwarc
    -jeśli wewnętrzny to czy musza być kondensatory na xtal

    0
  • #27 19 Lis 2012 13:28
    Dar.El
    Poziom 40  

    Endurasek napisał:

    Cytat:
    Jesli o bledy ortograficzne to przepraszam jestem dyslektykiem ale się staram

    Nie potrafisz pisać z wielkiej litery i stawiać kropek na koniec zdania, to musi być bardzo duża dysleksja :!:

    Jak jesteś w stanie, to popraw chociaż to.

    0
  • #28 19 Lis 2012 19:16
    Procesor32
    Poziom 12  

    endurasek napisał:
    I na wyswietlaczu pojawia mi sie
    40 226 61 155 1 0 0 239

    W pierwszym listingu Masz tablicę 8-elementową i dobrze, DS ma zapisanych 8 bajtów ID.
    W drugim listingu tylko 5 - elementową, dlaczego ?
    A co jeśli inny DS będzie miał 5 pierwszych bajtów takich samych ?
    Otóż będzie klapa.
    endurasek napisał:
    no to wpisuje te dane

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    A gdzie je wpisujesz ?
    Miało być do EEProm, a jest ?
    Nie wiem, czemu ma ten urywek służyć.
    Program ma odczytać Id, a Ty nie wiem po co wysyłasz te bajty.

    endurasek napisał:
    A możesz mi doradzić w sprawie stosowania kwarca w Atmega8
    -lepiej stosować zewnętrzny czy wewnętrzny kwarc
    -jeśli wewnętrzny to czy musza być kondensatory na xtal

    1. Nie ma znaczenia czy będzie zewnętrzny, czy wewnętrzny.
    Z tym, ze wewnętrzny ma górną dopuszczalną granicę taktowania.
    Dla Mega8 jest to 8 MHz.
    Na stronie 1 pisze, że procek posiada trzy Timery.
    Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode i
    One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
    Mode

    Co znaczy dwa Timery 8 - bitowe i jeden 16 bitowy.
    Pomoc
    ATmega8
    Strona 28
    2. Dla wewnętrznego nie trzeba kondensatorów.
    Procek ma już wszystko w sobie.
    Pomoc
    Cytat:
    prosił bym o wytlumaczenie co do wykorzystania timerów przy sprawdzaniu portów

    W tej chwili nie mam zbytnio czasu, jeśli tylko znajdę chwilę to napiszę przykład.
    A co do Debounce, to jest to proste dla początkującego, ale jeśli nabierze nawyku stosowania tego CUDAKA to okaże się w przyszłości, że sam sobie wyrządza szkodę.
    Nie Wiesz co Masz w pliku HEX po kompilacji używając tego CUDAKA.
    Jedno jest pewne.
    Opóźnianie pętli głównej takim czymś jest paskudną rzeczą.

    0
  • #29 21 Lis 2012 19:06
    WOBI
    Poziom 19  

    Dobrze kombinowałeś w programie wyżej, ale... błędy, błędy... i dlatego nie działało prawidłowo.

    Zobacz sam co to za kwiatki ;)

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    czytasz do Dsid1(1) jeden bajt z eepromu o adresie 1, później Dsid2(1) też jeden bajt z adresu 3 itd, nie masz odczytanych 8 bajtów kolejno do Dsid1, Dsid2, Dsid3, Dsid4.
    Odczytane masz tylko po jednym bajcie do tych zmiennych tablicowych, a powinieneś odczytać do każdego Dsid po 8 bajtów.

    zakres ID DS18B20 to 8 bajtów czyli 8 razy po 8 bitów, więc zmienna zajmuje aż 8 komórek pamieci eeprom na jeden ID czujnika !!! Trzeba je odczytać do zmiennej Dsid w całości.

    tu masz przykład dla zrozumienia jak to działa

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod




    tak powinno być, oczywiście mozna to zrobić inaczej, to tylko byś zrozumiał zasadę.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    lub to samo trochę inaczej

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod




    Atmega nie ma wewnętrznego "kwarcu" tylko oscylator RC wewnętrzny!!! Proszę nie mylić pojęć bo to istotna różnica ;)

    do kolegi Procesor32: Pozycjonowanie dotyczy zmiennej i zakresu zmiennej w podprogramie a nie rozdzielczości DS18B20, to dwie różne rzeczy i proszę nie wprowadzać początkującego w błąd.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    jak na początkującego to uczysz się i to się chwali, jak tylko znajdę trochę czasu to pomogę i podpowiem bo jak na razie koledzy trochę Cie w błąd wprowadzają zamiast konkretnie odpowiadać.

    0
  • #30 21 Lis 2012 20:45
    Procesor32
    Poziom 12  

    WOBI napisał:
    koledzy trochę Cie w błąd wprowadzają

    Proszę napisać który z Kolegów.
    Jeśli to ja, to oczywiście sprostuję swój post.
    Podałem przykład, ale jest zbyt trudny.

    Dodano po 3 [minuty]:

    Procesor32 napisał:
    WOBI napisał:
    koledzy trochę Cie w błąd wprowadzają

    Proszę napisać który z Kolegów.
    Jeśli to ja, to oczywiście sprostuję swój post.
    Podałem przykład, ale jest zbyt trudny.

    Proszę kierować swe wypowiedzi do konkretnej osoby. :)
    Jak można anulować Cytowanie selektywne ?

    Dodano po 16 [minuty]:

    WOBI napisał:
    tak powinno być

    Ile pamięci EEProm traci autor tematu ?
    Proszę zobaczyć mój przykład, a porównanie straty EEProm będzie oczywiste.
    Oczywiście nie jest to takie proste dla początkującego.
    Już na wstępie zaznaczyłem, że temat powinien znaleźć nie w tym dziale.
    Skoro jest, jak jest niech tak pozostanie.

    0