Na pewno masz źle zrobioną obsługę 1wire: [syntax=c]// zczytanie bit z magistralii unsigned char read(void) { unsigned char PRESENCE = 0; CLEAR_1Wire; // ustawienie w stan niski DQ _delay_us(2); // odczekanie 2us SET_1Wire; // zwolnienie magistralii _delay_us(15); <------------ // odbiór jedynki lub zera if (bit_is_set(PORT_1Wire, WE)) PRESENCE =...
http://obrazki.elektroda.net/95_12974457... Witam Chciałbym zaprezentować zgrabny termometr panelowy na znanym układzie DS18b20. Sercem układu jest Atmega8 SMD. Oprogramowanie napisane w WinAVR. Termometr dodatkowo posiada funkcję termostat. Niestety z powodu chęci jak największej minimalizacji płytki zrezygnowałem z przycisków do zmian nastawy...
Gratuluję! Daj znać tylko gdzie on jest? ;) ========================================... A tak to jest jak ktoś lubi dużo pisać, a z czytaniem jeszcze nie bardzo sobie radzi ;) Witaj fascynat! Twoja wiadomość wysłana na forum elektroda.pl została zgłoszona do moderatorów przez jednego użytkownika forum: Data zgłoszenia: 19:17:00 2010-09-23...
Witam ! Program nie zależy od sposobu podłączenia. http://obrazki.elektroda.net/19_12582693... Pozdrawiam. Stefan
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
a po co ci takie duże zmienne uint16_t decicelsius; uint16_t subzero, cel, cel_frac_bits; tam zdaje sie powinny być unsigned char no i tu hd44780_putInt((decicelsius/100), 10,0); chyba powinno być (decicelsius/10) - jak sama nazwa wskazuje decicelsius zwraca wartość w dziesątych stopnia np. 26.5°C -> 265
Myślę, że błąd będzie tu: unsigned char read_byte(void) { unsigned char i; unsigned char wartosc = 0; for(i=0; i<8; i++) { if(read()) wartosc |= 0x01 << 1; //błędna linijka _delay_us(15); } return (wartosc); } Za każdym razem wykonujesz or na tym samym bicie. Zmień tą linie...
Koledzy, którzy produkowali systemy monitorowania temperatury w laboratoriach, zamykali sondy w rurkach z cienkiego szkła, zalewając całość gliceryną (pewnie mieli jakieś uzasadnienie) i korkując to kawałkiem tworzywa. Oczywiście bezpieczniejszy mechanicznie jest metal, ale trzeba by pewnie jakąś rurkę z cienkiej nierdzewki. Akumulatorek 9V ma sens,...
...Jakieś pomysły?? Źle "składasz/sklejasz" odczytany bajt :( //procedura odczytu bajtu z urzadzenia unsigned char wire_read_byte1(void) { unsigned char bajt, tmp, i; bajt = 0; for(i = 0;i<8; i++) { tmp = wire_read_bit1(); tmp = tmp << i; bajt = bajt | tmp; } return bajt; } Ja zrobiłbym to tak: //procedura...
Na temat fuse bitów był osobny temat wałkowany i to dobrze ale narazie ich nie ruszaj bo "uwalisz" procka. DS-y są "wyczulone" na czas w którym następuje konwersja i jesli bedzie nieodpowiedni(wg noty 750ms) to DS moze wariowac i w ogole nie mierzyc(nie zdarzy wykonac konwersji). Jesli chodzi o ADC to w zasadzie różnica jest taka ze przy standardowym...
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
Poniżej przykład. Zwróć uwagę, że w tym przykładzie komenda konwersji temperatury występuje na końcu, a nie na początku. Odczytana temperatura będzie zatem tą która została konwertowana po poprzednim odczycie. To oczywiście nie ma znaczenia dla tego jak adresować czujniki. Powodzenia ! PL Config 1wire = Portd.6 Dim Adresy(16) As Byte Dim T1 As Byte...
Na dobry początek, zastanów się nad tymi dwoma makrami: #define CLEAR_1WIRE DDRD&=~_BV(WE) #define SET_1WIRE DDRD|=_BV(WE)
Masz podciąganie linii danych?
Co do: 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 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...
Temat pewnie był opisany na tym forum kilkukrotnie. Najlepiej skorzystać z noty katalogowej układu. Tam wszystko jest dokładnie opisane. Rozumiem, że kilka czujników chcesz podpiąć na wspólnej magistrali 1-wire bo gdy stworzysz dla każdego czujnika osobną ten problem nie istnieje. Sposoby są ogólnie na to dwa. Pierwszy -wg. mnie prostszy ale mniej profesjonalny-to...
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Ja miałem podobne problemy i okazało się, że to z powodu funkcji czasowej delay_us. Zastąpiłem ją inną i wszystko zaczęło chodzić OK. Zastosuj tą: void delayus(unsigned char t) //parametr t od 0 do 255. { do{asm("nop");}while(--t); } W miejscu gdzie masz zdefiniowaną częstotliwość oscylatora wpisz też: #define F_CPU 8000000ul
Nie znam się na ATmegach i Atmel Studio jak określa port ale zaprezentowany kod odwołuje się do całego portu: #define OUT_1WIRE_LOWPORT_1WIRE &= ~(1 << PIN_1WIRE); Konfiguracja (wskazanie) w kodzie prawidłowego portu/pinu 1W jest oczywistą oczywistością, jak mawiał klasyk i szczerze mówiąc wstępnie nie rozważałem takiej sytuacji. Użycie błędnego...
kody mam ze źródła w necie. Zamiesciłem poniżej. próbowałem ter źródła cezarego klimczaka ale efekt ten san
a 8MHz masz?:> Sprawdź PCB Rezystor 4.7kΩ masz na linii danych? Może podaj konkretnie co pokazuje sie na lcd. "Przyczepiliście się" :D do sprzętu , a żaden z Was nie zajrzał do kodu ;) A błąd ukrył się sprytnie , w deklaracji zmiennej T1 , która powinna być typu Integer , a jest ... :?: Piotrek
Najpewniej w tabeli masz złe wartości. Przykładowo 0 ma tu kod 3=00000011B czyli na pewno portb.0 = 1 i portb.1 = 1 jeśli portb.1 jest podpięty pod segment A to jest błędnie.
Jesli twierdzisz, ze biblioteka byla pisana tylko pod wersje 'S' to ciekaw jestem dlaczego w kodzie znajduje sie to: /* DS18X20 specific values (see datasheet) */ #define DS18S20_ID 0x10 #define DS18B20_ID 0x28 {...} #define DS18B20_9_BIT_UNDF ((1<<0)|(1<<... #define DS18B20_10_BIT_UNDF...
Temat ten był już wałkowany n razy Zerknij do datasheet'a DS'a Wydaje mi się że czas po odebraniu bitu jest zbyt krótki, z tego co pamiętam to tam min 75 us powinno być Tu masz kawałek działającego kodu, przerób sobie pod swoje komendy #define ONEWIRE_PIN PB2 #define ONEWIRE_PORT PINB #define ONEWIRE_DDR DDRB static uint8_t onewire_reset() {...
- reset procka podłączony do DB6 lcd, po co ? Oraz brak podciągnięcia do plusa. - PD5 uc ma zewnętrznego pull-upa, po co jeśli masz wewnętrzne rezystory?? Chyba że to miało być do resetu. Z drugiej strony wyczytałem, że przy zasilaniu pasożytniczym, jeśli procek ma wewn. rezystory pull up to musisz zastosować klucz zwierający linię danych do plusa bo...
Schemat poprawny dodaj złącze kanda dla programatora ISP żebyś w przyszłości nie musiał wyciągać Atmegi jak chciałbyś poprawić program.
Witam. A przestawiłeś mikrokontroler do pracy z wewnętrznym oscylatorem RC?
Ech te komercyjne programiki podszywające się pod darmowe narzędzia... ;))) Na szczęście w świecie zepsutym przez komercję jest jeszcze coś W PEŁNI DARMOWEGO i w PEŁNI FUNKCJONALNEGO - taaaadaaaaa... Khazama Programmer - wujek Google podpowie Ci resztę. Powodzenia.
Problem jest taki, że możesz "odwrócić" wielomian i wtedy trzeba zmienić kierunek przesuwania bitów. Każdy wielomian można zapisać w HEX aż na 6 sposóbów: http://en.wikipedia.org/wiki/Mathematics... Żeby móc sprawdzić poprawność implementacji musisz wiedzieć: jaki jest sposób zapisu wielomianu,...
Witam ponownie. Ze względu na częstą potrzebę wykonywania pomiarów temperatury w dość długich procesach postanowiłem ulżyć sobie i stworzyć coś co zrobi to za mnie. Efektem moich przemyśleń jest urządzenie oparte o mikrokontroler Atmega8 i czujnik temperatury DS18b20. Dodatkowo urządzenie wyposażone jest w wyświetlacz, na którym można odczytywać mierzoną...
Nie bardzo rozumiem po co ma być zasilany z baterii 9V, gdy mamy do dyspozycji źródło napięcia zasilania o dużej pojemności; dodatkowo napięcie obniżane stabilizatorem 5V - który sam "zjada" 5mA Jak już z baterii ma być zasilany to zrobić tak, że gdy kluczyk w stacyjce układ zasilany jest także z instalacji samochodowej 12V, po odłączeniu przechodzi...
... To teraz jestem w kropce :) Co mogłem zrobić źle w układzie z mikrokontrolerem?... Nie ma co panikować :wink: Spróbujmy inaczej.W załaczniku masz 2 gotowce.Załaduj do proca i ... zobaczymy czy którykolwiek zadziała :) Pozdrawiam Piotrek
kamil1cos7 --->, tak, czujniki mam w trybie pasożytniczym, po pracy podmienię rezystor na 2k; snnaap ----> tak, powyżej 10st. Celsjusza wyświetla prawidłowo, wg termometru, w pokoju mam 22st, więc raczej nie przekłamuje. Pierwsze co to wyświetl na ekranie co masz w zmiennej Ss po odczycie wprost z czujnika przy tem poniżej 8 stczyli : Ss = Str(i1)...
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
Nie kojarzę już przy jakiej okazji otrzymywałem ten błąd. Ale zaproponować Ci mogę skorzystanie z tych kodów:[url=http://www.stsystem.elektroda... czujnik, [url=http://www.stsystem.elektroda.eu/pr... czujników. Kody działają w 100%, pochodzą z wdrożonego rozwiązania. Przyjrzyj...
Masz błąd w "wait_us", po dekrementacji sprawdzasz czy zero,jeśli tak to skocz do loon, jeśli nie to ret (powinno być odwrotnie). Poprawiony kod: [syntax=asm]wait_us: loon: nop nop nop nop nop dec r16 brne loon ;<- ;-) ret [/syntax]
Jasne, że się da :) np tak: If Pind.1 = 1 And Pind.2 = 1 Then Waitms 500 'oczekiwanie żeby odrazu nie wyjść z pętli Do 'nieskończona pętla Lowerline 'ustawienie kursora Lcd "Histereza:" ; H ; Chr(0) ; "C" 'wyświetlenie histerezy If Pind.1 = 1 Then 'jeśli guzik wciśnięty to zwiększ H = H + 1 Waitms 200 'odczekaj chwile,...
Chyba już wiem co może być, tylko nie wiem gdzie jest źródło problemu. Doczytałem się, że po zerowaniu po włączeniu zasilania bajty odczytu temperatury są ustawiane na wartość 85.00 stopni i tę wartość udaje ci się odczytać z rejestrów DS18b20 (co świadczy, że procedury odczytu działają poprawnie). Doczytałem się jednak też, że w układzie zasilania...
Schemat, długość kabla do DS'a?
Po pierwsze to kup nowego DS a tego wyrzuć- bo gdzieś go schowasz, zapomnisz że zepsuty- a za jakiś czas będziesz się znowu użerał. Ale zanim go wyrzucisz zmień us na ms na końcu programu. Zresztą powinno być 900ms a nie 200.
Skoro chcesz żeby świeciła cały czas to po co używasz XOR? Użyj OR.
Biblioteka której użyłeś nie ma możliwości dowolnej konfiguracji pinów. W załączniku masz bibliotekę prosto z Rosji :D Chiński wyświetlacz sam mi się uszkodził ale coś tam wyświetla :D http://obrazki.elektroda.pl/6257086800_1... Kod którego użyłem do zrobienia tego zdjęcia [syntax=vbnet] $regfile = "m8def.dat" ' specify the used micro...
Zainstaluj sobie odpowiednie środowisko i zapomnij o makefile i problemach z nim związanych: http://mikrokontrolery.blogspot.com/2011... Poza tym pokaż schemat - może tam też są jakieś krzaczki :-)
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
znam bascoma za słabo żeby napisać coś takiego, ale może kto inny by napisał moje pomysły: prędkość na zasadzie takiej jak licznik rowerowy (chyba zliczanie impulsów) można by dodać przejechaną trasę i temperaturę (ds18b20) oraz woltomierz (chyba przetwornik A/C wbudowany w ATmegę32) ja polecam zrobić to na jakimś lcd alfanumerycznym (z graficznym więcej...
Zanim zaczniesz układać elementy na płytce, musisz określić jej wielkość, współdziałanie z zewnętrznymi peryferiami, i takie tam inne duperele. Po określeniu położenia głównych podłączeń: gniazdo LCD, gniazdo zasilania, itp. resztę (procek, zegar) układamy tak aby ścieżki pasowały do tych wcześniej położonych elementów. Dopiero na końcu układamy pozostałe...
http://obrazki.elektroda.pl/8783995300_1... Przedstawiam projekt termostatu do mojej wytrawiarki, opartej na Atmedze 8, termometrze cyfrowym DS18B20 oraz przekaźniku JQC-3FF. Motwywacja Wytrawiarkę udało mi się kupić na allegro, niestety przepłaciłem (zakupiłem ją od cwaniaczka, który wykonał ją niechlujnie oraz dorzucił jakąś grzałkę...
Sprawdź sobie przykłady stąd: http://hobby.abxyz.bplaced.net/index.php...
W Notepad++5.6.2
Z tego co się orientuję to pisząc temp2 = 32+(5/9)*temp; działasz na liczbach całkowitych, więc wynik będzie zawsze 32 bo 5/9 całkowite to 0. Chyba powinno być temp2 = 32.0+(5.0/9.0)*temp; Ale nie jestem pewien. Dodano po 17 Z tego co pamiętam z programowania w C to właśnie zapis "5.0/9.0" dawał kompilatorowi sygnał że dzielenie ma się odbyć na liczbach...
Tak, tylko dioda odwrotnie.
1. Napisz program od nowa bez wywołań rekurencyjnych 2. Napisz program od nowa bez wykorzystania liczb zmiennoprzecinkowych 3. Napisz program od nowa bez wykorzystania funkcji sprintf 4. Co to jest LCD_CLEAR? Makro czy funkcja? Jeśli funkcja to czegoś brakuje przy jej wywołaniach.
Próbujesz szukać w tablicy pozycji ujemnych, tymczasem pozycje w tablicy zaczynają się od 0 do 65535. Nie rozumie takiego szukania temperatur w tablicy, ale jeśli już tak to próbujesz podmieniać, to gdy zmienna tempd2 jest mniejsza od zera to musisz ja zamienić na zmienną dodatnią aby odczytywać za pomocą instrukcji Lookup()
Czy jest możliwy błąd podłączenia? Tutaj oczywiście zmieniłem na PB.1 Tak, wszystko jest możliwe... Spróbuj ten code: [syntax=basic4gl] 'DS18B20 - ROM reading test from single sensor DS18B20 $regfile = "m8adef.dat" $crystal = 4000000 $hwstack = 80 $swstack = 80 $framesize = 40 Config 1wire = Portb.1 'Config 1wire = Portd.5 Dim N As Byte Dim Dsid1(8)...
A w jaki sposób wyszukujesz te czujniki? Należy to zrobić przez SEARCHROM, zapisać gdzieś wszystkie adresy, a przy odczycie temperatury wywoływać kolejno te adresy. Wyszukiwanie wszystkich układów: unsigned char ow_search_address() { uint8_t conf_mask[8]={0}; uint8_t i, j, retcode; unsigned char dev_num; for(j=0;j<3;j++)...
DS-ów już działa, ale nie wiem jak dodać trzeciego. Przy sprawdzaniu ID 3 czujnika jest ono takie same jak ID 2, tak to próbowałem odczytać: Dsid1(1) = 1wsearchfirst() Do Dsid2(1) = 1wsearchnext() 'nadpisuje ID2 , ID3 Loop Until Err = 1 Do Dsid3(1) = 1wsearchnext() Loop Until Err = 1 Ja zaryzykuję stwierdzenie...
Ręce to opadają i masz rację ;) Masz błąd w definicji zmiennej do której wpisujesz ID czujników to nie jest jeden bajt tylko tablica 8x8bitów czyli 8 bajtów. Adresujesz nie istniejące czujniki bo ich adresy sa niepoprawne, wysyła procek ciagle ten sam bajt. Dim Adres1 As Byte 'adres pierwszego Dim Adres2 As Byte 'adres drugiego Dim Adres3 As Byte 'adres...
Czy to jest cały program ? Gdzie $Crystal ? czy napewno jest to DS18B20 ?
Przepraszam, że dopiero teraz ale jestem w delegacji. Minęły dwa dni a Twój termometr nie działa... Możesz słuchać każdego. Ja proponuję takie rozwiązanie które zajmuje dosłownie dwie minuty jeśli robiło się to wczesniej. Sprawa jest w pełni odwracalna. To nie ślub z kobietą :D Więc co szkodzi spróbować? Kiedyś może sam komuś pomożesz. Należy zacząć...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
EEPROM i PCF łączysz równolegle na szynach SDA i SCL i nogi adresowe A0, A1, A2 łączysz tak żeby utworzyć dla każdego urządzenia osobny adres (format adresu urządzenia jest objaśniony w PDF"ie do niego). Pin Dallasa oznaczony jako DQ łączysz pod dowolny port mikrokontrolera i podciągasz do zasilania przez jakiś opornik (schemat jest w PDF'ie do tego...
Dokładnie tak jak piszecie, w linijce z komentarzem "'if you use 2-wire..." masz "Waitus 200 : Waitus 200 : Waitus 200 : Waitus 200", a powinno być "Waitms 500". Zmień to i powinno działać ja też tak miałem. Zobacz jeszcze na http://www.elektroda.pl/rtvforum/2-x-ds1... . Może to ci się przyda. Pozdrawiam
Potrzebuje emulator DS18B20 na atmega8 - mam na PC program do odczytu temp i chciałem w tym programie dodac inne parametry ( np wilgotnosc ) ale nie zmieniajac programu - w scrachpadzie bede wisyłał inne dane nie temperature. ( w bajtach temperatury lub bajtach uzytkownika wolnych 2szt) Aktualnie używam "lampomitari" , ale napisalem przeróbke programu...
Witam Nie wiem czy trzeba zmieniać coś jeszcze w Fusebit, czy porostu problem jest po stronie wyświetlacza? Pozdrawiam Wyświetlacz powinien pracować zupełnie dobrze także przy 1 Mhz taktowaniu processora. W zależności od deklarowanej F(clk), Bascom kalkuluje odpowiednio timingi do stadardu HD44780 display controlera. Przy błednej konfiguracji (lub...
To, że działał to nie znaczy, że jest dobrze. Jak nie dasz kondensatorów przy zasilaniu to też będzie pewnie działało. http://datasheets.maxim-ic.com/en/ds/DS1...
Dołącz i edytuj plik config.h z folderu, w którym są źródła tego przykładu. W tym pliku jest zdefiniowany port i pin. Ustaw odpowiednio dla Twojego układu.
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
...liczyłem że podczas tych 100ms na końcu ds coś odpowie Kolego :!: Magistrala 1wire była już "wałkowana" tyle razy, że muszę odesłać Cię do podstaw. Zapoznaj się z czymś, co nazywa się TIME SLOT. Podpowiem tylko, że układy slave nie pytane ... "nie mówią". zumek
A jaką wartość opóźnienia widziałeś w dokumentacji technicznej układu DS18B20?
No to się popisałem :)
Witam, posiada ktoś gotowy kod w języku C oraz schemat dla Termometru na mikrokontrolerze ATmega8 + czujnik DS18B20 + wyświetlacz LCD?
Witam!! Od razu powiem, iż szukałem na elektrodzie rozwiązania problemu... Problem jest taki, iż chciałbym móc przesyłać bezprzewodowo dane z DS'a. Tylko nie wiem jak się za to zabrać... Czy są jakieś gotowe nadajniki/odbiorniki współpracujące z Atmegą(8)? Dziękuję za każdą wskazówkę..
mialem podobny problem umnie wariowal przy odczytywaniu temp ponizej 15 stopni problem był w 1 wire za dlugo czekalem na odczytanie znaku nieszcesne 1 μs jak zmniejszylem czas to poszlo
Polecam lm75 - ma 3 bitowy adres (8 układów na jednej magistrali), programowane parametry: rozdzielczość, alarm przekroczenia parametru, histereza. Niska cena. Oczywiście trzeba się liczyć z parametrami elektrycznymi I2C.
Co do 3: Przeczytaj jeszcze raz dokumentację układu. Chyba bardzo czegoś nei zrozumiałeś. Do termometru wysyła się ciąg bitów, z których pierwsze 8 stanowi polecenie, a nestępne - jego ew. argumenty. W układzie DS18B20 nie ma żadnych "adresów" ani "miejsc do wysyłania bitów". Ani mikrokontroler, ani DS18B2 nie wiedzą, co to jest "hex". W prgramie zapisuje...
Masz rezystor podciągający? Niektórzy o nim zapominają.
Witam, mam problem, kiedyś robiłem termometr oparty na atmega8, z podpiętym lcd i czujnikiem ds18b20, działało elegancko, teraz chcę wykorzystać starą płytkę, uruchamiam a tu nie wyświetla temperatury, tekst na wyświetlaczu jest elegancko, nawet mam podpięty do portu com i też działa, a z tym czujnikiem się już kilka dni użeram i nic. Testowałem na...
...Kiedyś wyczytałem że można podłączyć je na osobnych portach i w trakcie programu po poleceniu config 1 wire przełączać z którego chce się robić odczyt... A teraz nie możesz wyczytać w helpie , że to co piszesz jest nieprawdą :?: ;) Config 1wire jest dyrektywą "jednarazowego użytku" :idea: By osiągnąć to o czym marzysz ;) , należy używać alternatywnej...
Jak zwykle Kolega ma rację, wyrzucenie Waitms 750 załatwiło sprawę. Oczywiście wstawienie timera jest chyba najlepszym rozwiązaniem. Tylko coś nie tak mi wychodzi. Dołożyłem Timer co 800 milisekund [syntax=basic4gl] Sub Pomiar: Disable Interrupts If Flaga_delay_ds = 1 Then 1wreset 1wwrite &H55 1wverify Dsid1(1) 1wwrite &HBE I1 = 1wread(2) Flaga_delay_ds...
No tak, bo ja nie mam w zamiarze mieć alarmu dźwiękowego. Więc usuń z programu także deklaracje odnosnie wymiarowania zbędnych zmiennych i uzupełnij poprawki j.w. Wytestuj program w symulatorze running "step into code" (F8) i w odpowiednich momentach kodu uzupełniaj 'ręcznie' zmiany logiczne pinów a także symulowane wartości zmiennych (np: odczyt temperatury...
Witam Zbudowałem układ do sterowania wentylatorami w układzie dystrybucji gorącego powietrza (DGP) z kominka. Mam 4 DS18B20, PWM steruje obrotami wentylatorów, dwoma przyciskami steruje obroty, dwoma kolejnymi temperaturę od której ma sie załączyć wentylator. Mam następujący problem jeżeli dla każdego DS-a ustwie czas na konwersje waitms 750 to program...
Długość przewodu raczej nie ma za dużego wpływu na to. Spróbuj podłączyć spróbuj podłączyć czujniki obydwa tak samo do zasilania. Jeżeli będą wskazywać nadal taką różnice to będzie znaczyło że coś jest nie tak z jednym z nic, może wada fabryczna, albo przegrzanie przy lutowaniu.
Wszystko jasne, jednak gdy ma być to urządzenie, do którego mają być podłączane czujniki za pomocą wtyczek przez kogoś innego, mają to być wymienne czujniki i w dodatku ma być kilka takich urządzeń to chyba mija się z celem zapisywanie ID w pamięci. Zrobiłem wersję z podpinaniem dallasów do różnych pinów - no i działa, jednak martwi mnie to, że muszę...
A ja mam inne pytanie . Po co do tak prostego zadania zatrudniać od razu ATmega8 ? W zupełności wystarczy coś mniejszego np. AT90S2313 . W czym chcesz napisać program do procka ? Bo jeżeli w Bascomie to wersja testowa ograniczona jest do 2kb kodu wynikowego . Więc całej pojemności ATmega8 i tak nie wykorzystasz . Chyba że masz pełną wersję Bascoma ....
Funkcje OneWireReset_1, OneWireReset_2, OneWireWriteByte_1, OneWireWriteByte_2, OneWireReadByte_1 i OneWireReadByte_2 obuduj tak: unsigned char OneWireReset_1() { cli(); ... ... ... sei(); return(0); } A jeszcze lepiej to obuduj makrem ATOMIC_BLOCK.
No i teraz zasilanko że "mucha nie siada" ;) Ale dopiero teraz zauważyłem :( .... zastanów się co robisz z nie używanymi liniami LCD .... może zerknij tutaj a potem zrób jak uważasz: http://mirekk36.blogspot.com/2012/04/lcd... Dodano po 7 A to po to żeby uniknąć niszczenia styków przez prądy zwarciowe z kondensatora podczas wciskania...
czytałem wolniej i efekt ten sam:(
Moim zdaniem nie jest według datasheetu. GND w datasheet jest na 1 nóżce patrząc na stronę wypukłą. Czyż nie? Nie. Takie jest poprawne podłączenie wg. wklejonego parę postów wyżej fragmentu datasheetu i tak też ty masz podłączone. http://obrazki.elektroda.pl/1299047500_1...
Witam Czy jest możliwe do zrobienia symulatora czujnika temperatury 1-wire DS18B20 wykorzystując jakiegoś AVR-ka (np. Atmega8)? Chodzi o tylko o odczytywanie temperatury w taki sam sposób jak się to robi z DS18B20.
Witam.. może odkopie temat.... Ma ktoś przykład w bascomie co by z procesorka np: Atemga8 zrobić klienta 1-wire?? Tak jak to ma miejsce z DS18b20. Poprostu chcę zasymulować sprzętowo działanie DS18b20. Czyli będzie np: Atmega8(master) a do niego podpięta druga atmega8(slave) po 1-wire która będzie udawać DS18b20
Witam próbuje obsługi 1-Wire na przykładzie termometra cyfrowego DS18B20, niestety odczytana temperatura nijak ma się do tego co powinno być, mianowisie dostaje same "1", Pliki biblioteki 1-Wire [syntax=c] #ifndef OWI_H_ #define OWI_H_ // Ustawienie pinu który bedzie pinem OWI #define DDR_OWI DDRD #define PORT_OWI PORTD #define PIN_OWI PIND #define...
Nikt mi nie pomoże?
Witam. Zaczolem ostatnio zabawe z czujnikiem temperatury DS18B20 podlaczonym do Atmega8. Wszystko gra ale chcialbym sie dowiedziec w jaki sposob mozna zmienic ustawienie dokladkosci pomiaru bo odczyt temperatury przy ustawieniach fabryczne jest zdziebko przydlugi. Czy takie nowe ustawienie czujnika trzeba zapisywac za kazdym razem jak uruchomie uklad...
dziwny problem .. AAaaa .. a czemu skoro zmniejszyłeś rozdzielczość do 9 bitów to robisz wartość / 16 ?? / czy nie trzeba by odpowiednio zmienić działki .. ?? / Masz tu moją bibliotekę dla wielu Ds-ów ( używałem 8 ) chodzi bardzo sprawnie - miałem problemy z zakłóceniami / siały mi falowniki /. Otrzymujesz tablicę z wartościami temp w dziesiątych częściach...
Jak juz ktoś poruszył temat bez sprawdzania sum kontrolnych bedziesz walczył co chwilę z tymi czujnikami i nie dojdziesz ładu.
Po resecie jest presence i później coś idzie nie tak. Podłączałem już oddzielnie zasilanie wymieniałem DS-a. Długość linii to max. 7cm. Czasy wydaje mie się, że są dobre. uC=ATmega8. Zamieszczam listing programu i proczę o pomoc. main: rcallds_reset ldi temp,0xCC rcallds_nadaj_bajt ldi temp,0x44 rcallds_nadaj_bajt delay_us900 delay_us900 rcallds_reset...
witam, po raz kolejny powtarzam temat, nie znalzałem rozwiązania wertujac inne dlatego piszę. Złożyłem termometr wg kursu AVR GCC. I nie działa naturalnie tzn. na wyświetlaczu pokazuje się jedynie napis Termometr a kiedy odłącze czujnik pojawia się wartość temperatury czasem 0.0C a czaem 800C. Na czujnik nie reaguje. Wyświetlaz obsługuje hd44780 i działa...
Jak używam funkcji z util/delay.h to mój kod zajmuje za dużo pamięci w procesorze i nie chce sie kompilować ;/ Edit: Error4region `text' overflowed by 548 bytes funkcję opóźniającą wziąłem ze strony: http://teslabs.com/openplayer/docs/docs/...
DS podłączony prawidłowo ? Rezystor do plusa jest ?
Jest ktoś w stanie mi pomóc odpalić 2 czujniki ds18b20 ?
odczyt ds18b20 atmega8 termometr atmega8 ds18b20 atmega8 ds18b20 termostat
bosch zmywarka hałas regulacja kontrast wyświetlacz klawiatura zalać spirytus
falownik powmr edifier r1280db
Windows 10 na AMD Duron 1200 MHz - Kompatybilność Lokalizacja złącza + w radiu Becker Mexico