W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
Witam, walczyłem z tym samym problemem - najnowszy update Raspbianna z 7.02.2015 psuje komunikacje po 1-wire. Rozwiązaniem problemu jest dodanie odpowiedniego wpisu w config.txt. Read /boot/overlays/README. You will probably need to add: dtoverlay=w1-gpio to your config.txt, but you have to choose between that overlay and w1-gpio-pullup, and both have...
A jak masz połączone te rezystory? Szeregowo czy równolegle? Czemu posługujesz się czyimiś bibliotekami, nie napiszesz ich sam? A to już nie można cudzych bibliotek wykorzystać? Nie wiem czy tutaj byłeś: [url=http://www.hobby.abxyz.bplaced.net/... Na dole artykułu jest gotowa biblioteka do ds18b20 działająca na 100%. W msb i lsb...
Zapis lub czytanie bitu "1", ma się odbyć w czasie do 15us. _delay_ ms (1); //conajmniej 1 us na sygnal do do termometru, że ma nadawać w tej lini prawidłowy jest tylko komentarz :)
Witam Obsługuję czujnik DS18B20 w Bascomie. Czy czas pomiędzy kolejnymi poleceniami, tj. 1wreset , potem 1wwrite &H55 , potem 1wwrite &HCC ... itd. może być dowolnie długi, przykładowo -np 6 minut; 5 godzin; 10godzin czy też 10dni .... ? Oczywiście wysyła 1 polecenie, czeka, wysyła drugie itd. do końca... Czy są ograniczenia? NIE! Te czasy (timingi)...
... kurczę wykorzystałem idealnie zerżnięte procedury z noty MAXima http://www.maxim-ic.com/appnotes.cfm/an_... Spróbuj tych procedur - również od MAXIM-a :D
W ogóle skoro nie potrafisz odczytać tego co napisałem wyżej to znaczy że do końca nie rozumiesz co to tablica. Wyjaśnię najbardziej łopatologicznie. Wyobraź sobie, że tablica to pociąg z wagonami od 1 do 8. Każdy wagonik może przewozić daną liczbę. A cały pociąg ma swoją nazwę np. pociąg "Kopernik" Więc. Ds1(1)=9 Oznacza, że mamy tablicę o nazwie "Ds1",...
W chwili gdy obsługuje 1-Wire, Bascom ZAWSZE nawet na czas generowania resetu, co trawa ok 500us, później presence, co daje razem ok 800us, zawiesza przerwania. To samo w czasie transmisji danych, transmisja bajtu to ponad 500us zawieszone przerwania. W tym czasie nie wykona się przerwanie od timera, od i cała tajemnica. Ale zabobony. Każdy może otworzyć...
A skąd wziąć te na pewno nie chińskie. https://pl.farnell.com/search?st=ds18b20 Co do zabezpieczenia linii 1Wire to poczytałem o diodzie Zenera, czy ona nie załatwi problemu. Co do zabezpieczenia linii 1Wire to poczytałem o diodzie Zenera, czy ona nie załatwi problemu. Nie. Albo za mały prąd a jak wystarczający to za duża pojemność.
Porty L i G należą do rozszerzonych. Przeczytaj rozdział w Helpie Bascoma - Config 1Wire. Skonfiguruj dowolny pin jako 1Wire i dopisz po przecinku - Extended. Powinno się coś zmienić ;)
Po latach trochę dziwnie się czyta te opisy. Teraz już chyba lepiej władam angielskim ahahahahaha :D [syntax=vbscript]$regfile = "ATtiny13.dat" $crystal = 1200000 $hwstack = 4 $swstack = 2 $framesize = 24 '***************************************... '* WIRELESS THERMOMETER * '* WITH CIRCULAR BUFFER * '* TRANSMITTER PART Tiny13 * '* bartek.niveasoft(at)gmail.com...
1. Z tego co widzę w datasheet od DS18B20 to linia 1wire powinna miec rezystor 4k7, więc włączanie dodatkowo rezystora wewnętrznego pewnie niewiele da. 2. Jeżeli odpowiedni bit w rejestrze PORTx (u Ciebie PORTD) będzie już miał wartość 0 to tak.
Kiedyś przerobiłem na szybko jedną z dostępnych bibliotek na obsługę kilku ds18b20 na różnych liniach: [syntax=c] //#ifndef 1wire //#define 1wire #include "hardware.h" ////////////////////////////////////////... // ROM commands #define DS18B20_ROM_SEARCH 0xF0 #define DS18B20_ROM_READ 0x33 #define DS18B20_ROM_MATCH...
Stara mega32 da radę, ale dla pewności taktowałbym ją zewnętrznym generatorem kwarcowym (taniocha) a nie kwarcem. Bascom to przeliczy. Widziałem 1wire jak działa z Bascom w Xmedze na 48MHz. Wystarczy dobrze zadeklarować prędkośc taktowania, co obstawiam jeśli reszta protokołów działa. Dalej obstawiam błąd w oprogramowaniu przez programistę :)
Obsługa 1Wire w BASCOMie nie jest obsługiwana w przerwaniach. Możesz spróbować czegoś takiego: cli 1wreset 1wwrite &H55 sei cli 1wwrite B2 sei cli 1wwrite &H44 sei Chodzi oczywiście o porozdzielanie wszystkich instrukcji 1Wire sekwencjami sei,cli.
A kto Ci powiedział że 1wire jest na małe odległości? Miałem czujnik na DS18B20 na 15 metrowym kablu i działał bez zarzutu. Kabel ekranowany oczywiście. To właśnie analogowy czujnik będzie bardziej podatny na zakłócenia.
Czyli funkcje 'v1Wire_SendByte' i 'uv1Wire_ReadByte' służą tylko do tego, żeby wysłać odpowiedni rozkaz do termometru? Te funkcje, jak sama nazwa wskazuje, wysyłają i odczytują bajt danych z magistrali 1wire. W przypadku ds18b20 ten bajt danych to może tym rozkaz dla termometru (np. wspomniany już start pomiaru) lub dane (np. zmierzona wartość temperatury)....
Witam, mam pytanie. Może dla niektórych wydać się śmieszne i zbyt proste, jednak szukam i nie moge znaleźć na nie odpowiedzi. Załóżmy że mam 10 termometrów ds18b20 na jednej szynie. komenda schear rom określi mi ilości i rodzaje układów slave. Czy mogę w jakiś sposób podglądnąc ile ich jest oraz ten adres jaki jest zapisany w każdym z nich?? Drugie...
4 x DS18B20 :D ale też nie w jednej chwili, tylko po kolei. DS2408 - 8 I/O
[youtube]https://www.youtube.com/watch?v...
Witam. Problem poruszany wielokrotnie lecz nikt jednoznacznie nie określił jakie przewody. Potrzebuje podpiąć 19 czujników DS18B20 do Atmegi przez 1wire. Czujniki zasilanie są trzyżyłowo. Najdalszy odcinek ok. 30m a reszta średnio po 10m. Wszystkie czujniki będą zasilane osobnym kablem nie w szeregu i sprowadzone do lokalizacji Atmegi. Proszę o pomoc...
Tak. ESP8266 ma jedno wejście analogowe. By mieć więcej potrzeba np. ADS-1115. Za to DS18B20 to są czujniki cyfrowe i może być ich nawet kilkadziesiąt na jednej magistrali 1wire EspHome jest dodatkiem w którym buduje się soft do esp8266 z potrzebnymi nam modułami. Ja preferuję Tasmota, który w zasadzie wgrywasz do esp8266 i konfigurujesz późnej przez...
Do każdego czujnika masa+sygnał jako jedna skrętka, a +5V jako jeden albo dwa druty z drugiej skrętki. Tylko że przed czujnikami w celu wyeliminowania zakłóceń z szyny 5V (nieskręconej z masą i sygnałem) dałbym dławik ze 100uH a następnie kondensatory 1uF+100nF do masy. Poza tym dał bym rezysotry podciągające szynę 1Wire o wartości 1k.
czy na 1-wire musze za każdym razem nadawania danych do slave, wykrywac czy znajduje sie na szynie, czy tylko raz po włączeniu zasialnia.
Mam problrm z zapisem i odczytem danych do DS18B20. Program wykrywa czujnik jednak po podaniu komend do pomiaru temperatury a następnie odczytaniu danych z DS w zmiennych temp1 i temp2 są same jedynki. W tej postaci na wyświetlaczu mam "Ok11111111" Kod programu: [syntax=c]#define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000)...
1. Rysuj schematy w czymś normalnym, nie ręcznie... 2. Na magistrali 1wire powinien być raczej rezystor podciągający do 5V, a nie kondensator, który skutecznie uniemożliwi komunikację :D
Witam, zastanawiam się nad następującym zagadnieniem - czujnikiem temperatury DS18B20 w obudowie TO92. Co może u niego odpowiadać za generację sygnału na magistrali 1-wire? Czy w tej maleńkiej obudowie istnieje jakiś mikrokontroler? Jeśli to nie mikrokontroler - prosiłbym o wskazanie jaka część elektroniczna się zajmuje przetworzeniem odczytu z czujnika...
Witam Mam pytanie dlaczego poniższy kod nie pozwala mi dogadać się z DS18B20. Napisałem/przepisałem go na bazie opracowania Pana Cezarego Klimasz "Obsługa interfejsu 1-wire na przykładzie obsługi DS18B20". Proszę o pomoc. Dziękuję #include <string.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include...
Kolega jakie I2C? DS18B20 używa protokoły 1Wire. To zupełnie co innego. Jeśli jednak naprawdę myślisz o I2C i wyprowadzaniu go na zewnętrzne urządzenia to jest to średni pomysł. Ten interfejs jest zaprojektowany raczej jako interfejs do komunikacji w obrębie jednej płytki drukowanej, względnie do komunikacji między mało odległymi modułami. Nie mówię...
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...
Dzień dobry Chcę zrobić a właściwie zmodyfikować pomiary temperatur w pomieszczeniach. Założenie jest takie: 1. dwie linie 1Wire odczytywane przez arduino, 9 i 12 czujników kilka sztuk jeszcze pewnie dojdzie. (wcześniej było wszystko na jednej ale pojawiały się problemy). 2. wysłanie danych na serwer www metodą GET, POST lub plik z danymi? docelowo...
Łap. Cały tydzień programuję poważniejsze sprawy i taki programik to dla mnie dosłownie rozrywka :D Bierzesz Tiny85 i programujesz Hexem lub Binem do wyboru. Podłączasz do niego DS18B20 i linijkę na MAX7219 i gotowe... żonka zadowolona. Program ma nawet wyjście diagnostyczne i wypluwa temperaturę na UART 9600bps (to żeby sprawdzić poprawnośc Dallasa)....
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)...
Witam ! Schemat musisz dopasować do tych dwóch linii programu: Config Lcdpin = Pin , Db4 = Pb.4 , Db5 = Pb.5 , Db6 = Pb.6 , Db7 = Pb.7 , E = Pb.3 , Rs = Pb.2 Config 1wire = Portb.0 Trudno w minutę narysować schemat, spróbuj sam "rozgryźć" problem, to nie takie trudne. Pozdrawiam. Stefan
Kwarc może nieznacznie odbiegać od tego podanego. Ba, może nawet się różnić o kilka MHz i komunikacja po 1wire będzie działać. Natomiast problem leży w złym czujniku 1wire. Te układy różnią się od siebie. Jak masz źródło programu to można to łatwo zmienić - albo wymień czujniki. Pozdrawiam.
OK. Uznajemy hardware za działający prawidłowo. Na 500us zwieram DQ do masy, później czekam 40us i sprawdzam czy jest stan niski. Czekam kolejne 300us i sprawdzam czy jest stan wysoki. Jeśli tak - uznaje że czujnik jest i odpowiada. Ten kawałek działa (udaje się wykryć czujnik). Tu nie widzę błędu w rozumowaniu. Może tylko wydłużył bym czas oczekiwania...
Napisane na szybko nie sprawdzałem ale chyba powinno działać. [syntax=basic4gl] $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) '*************************************WA... 'Pamiętać o podłączeniu...
...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
Okazało się że czas trwania ściągania magistrali do zera przez układ slave (mój czujnik) jest równy około 25 us a ja ciągle zakładałem że stan będę sobie próbkował po czasie 30us. Dlaczego tak założyłem? Ponieważ gdzieś w dokumentacji pojawiła mi się informacja o tym że slave powinien "trzymać zero" na 60us więc chciałem próbkować "w połowie" - no...
WItajcie Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku. $regfile = "2313def.dat" $crystal = 16000000 Config 1wire = Portb.0 Dim T As Integer , Stt As String * 6 Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 800 1wreset 1wwrite &HCC 1wwrite...
Przy 1 urządzeniu na 1Wire nie ma potrzeby używać ani SearchROM, ani MatchROM, ani ReadRom, tylko wystarczy SkipROM. 1. Reset1Wire 2. Jeśli Reset poprawny to SkipROM (0xCC) i ConvertT (0x44) 3. Odczekanie czasu na konwersję 4. Reset1Wire 5. Jeśli Reset poprawny to SkipROM (0xCC) i ReadScratchpad (0xBE)
ustawianie stanów logicznych na pinie odbywa się w przypadku 1-wire nieco inaczej niż pokazałeś. Ty ustawiasz kierunek i wymuszasz stan, a to troche nie tak. Ustalać powinieneś jedynie kierunek transmisji. Domyślnie w rejestrze PORTx są same zera, więc nie musisz się nim w ogóle przejmować. Dla np resetu powinno być tak: ustawiasz port jako wyjście,...
ło matko ;) po opisie kolegi atom1477 i po tej informacji, że "Bascom coś kombinuje" można by uznać, że napisanie sotu do obsługi 1wire to rzecz prawie niemożliwa dla zwykłego śmiertelnika. Tymczasem to co robi Bascom to absoultnie nie żadna kombinacja tylko normalne zachowanie - ponieważ to podtrzymanie stanu wysokiego na pinie portu jest niejako przygotowaniem...
Po pobieżnym przyjrzeniu się programowi nasuwają mi się takie wnioski. 1. Zadeklarowałeś wejścia, ale zostawiłeś je jako "pływające". Powinieneś port-y przycisków podciągnąć do plusa, czyli ustwić stan wysoki =1 2. Nie widzę deklaracji dla magistrali 1wire dla DS-ów i całej procedury odczytu i zapisu danych do pamięci. Być może to celowe na tym etapie,...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
sprobuj wkleic ten program do swojego procka jezeli masz wszystko dobrze podlaczone to powinien wyswietlac temperature z dokladnoscia 1 st C Config Lcd = 16 * 1 Dim Bd(9) As Byte Dim T As Byte 'Integer Config 1wire = Portb.1 Cls Lcd "TEMP " Do Gosub Ds1820 Locate 1 , 6 : Lcd T Loop End Ds1820: 'dokladnosc 1st C 1wreset 1wwrite &HCC 1wwrite &H44 Waitms...
Możesz również zrobić tak: void select_bus(unsigned char bus_nr) { if(bus_nr == 1) { ddr_reg = (unsigned char *)0x31; // DDRD bus_pin = (1<<5); port_reg = (unsigned char *)0x32; // PORTD pin_reg = (unsigned char *)0x30; // PIND } else { ddr_reg = (unsigned char *)0x34;...
kod skopiowany z mojego programu. dziala bez problemu. 1wire podpiete jest pod portd.7 1wreset Bitwait Portd.7 , Set 1wwrite &HCC 1wwrite &H44 Wait 1 1wreset Bitwait Portd.7 , Set 1wwrite &HCC 1wwrite &HBE Tabl(1) = 1wread() Tabl(2) = 1wread() Tabl(3) = 1wread() Tabl(4) = 1wread() Tabl(5)...
Witam ! Dodaję gotowy działający program do pomiaru temperatury. ATmega8 fabryczne fuse bity ( nic nie zmieniaj ). Program sprawdziłem z liniami które wtym programie są zaremowane, ze względu na łatwiejszą konfigurację na mojej płycie. $regfile "m8def.dat" Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4...
Hey czyli problem jest w instrukcji Ss = Format(ss , " 0.0") wrzuć ten program i powiedz czy wszystko gra jeżeli tak będę pisał co zrobiłem. [syntax=basic4gl]$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) 'Deklaracja portów od wyświetlacza...
Najprawdopodobniej problem stanowi procedura "Waitus".Wykonanie "Waitus(1)" , dla proca z kwarcem 1MHz , trwa ~23 uS(zajrzyj do pliku *.lst) , a czas tRDV(początek timeslot) wynosi max 15 uS. unsigned char slot_odbierz1w(void){//odbi... bit nadany przez urz. 1wire unsigned char bit1w; //w w jednym slocie czasowym cbi(PORT1w,PIN);...
Proponuje dodać dodatkową zmienną pomocniczą której zadaniem będzie pamiętanie że program zaczął działać nie jestem pewien tego rozwiązania z bascomem miałem doczynienia dość dawno temu ale możesz spróbować tego $regfile = "attiny25.dat" $crystal = 4000000 Config Portb.3 = Output 'przekażnik Config Portb.2 = Input 'włącznik typu microswitch...
Nikt nie jest w stanie mi pomóc? nie wie wiem dla czego kontroler nie porównuje wartości Rozumiem że jesteś początkujący , ale nawet Ty powinieneś wiedzieć , że nie porównuje się zmiennej binarnej(Us) ze stringiem (Tmp) :( To tak , jak byś porównywał kilogram z czerwonym :D Poza tym , ten program jest niezwykle pamięciożerny(Fusing,Single). Jeśli ten...
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...
No to powodzenia z obsługą 1-wire w assemblerze. Jeszcze przez początkującego. Mój nauczyciel bawił się okrągły miesiąc i udało mu się :). I2c można dosyć prosto obsłużyć z poziomu asm, ale co do 1-wire to jak nie znajdziesz gotowca w assemblerze to sam nie zrobisz. Dla chcącego nic trudnego. Nazwy procedur mówią same za siebie. Magistrala na P1.7...
Z dwoma bajtami uC i Dallas w 5ms wyrobią się spokojnie. Problemem jest brak synchronizacji pomiędzy przerwaniami generowanymi przez Timer a funkcją Waitms. Ponieważ przerwanie występuje teraz co 5ms to można w nim ustawić flagę że własnie się zakończyło. Wtedy w pętli głównej możesz sobie spokojnie liczyć te flagi. 50x 5ms = 250ms co bardzo tu pasuje....
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...
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...
ds18b20 1wire ds18b20 zawieszać 1wire atmega 1wire ds18b20
pomiar pojemności kondensatorów astra elektryczne blokada rozrusznika vectra
Peugeot Boxer II – demontaż przełącznika zespolonego, Valeo COM2005, airbag, instrukcja Viessmann Litola LVR – płomień gaśnie, automat palnikowy Siemens LGB 21, diagnostyka