W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
Masz rezystor podciągający? Niektórzy o nim zapominają.
Czy do układu DS18B20 masz podłączone zasilanie +5V, czy pracuje on w konfiguracji dwupinowej? W karcie katalogowej jest wzmianka "If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and the DS18B20 will respond by transmitting a 0 while the temperature conversion is in progress and a 1 when...
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 =...
Jak juz ktoś poruszył temat bez sprawdzania sum kontrolnych bedziesz walczył co chwilę z tymi czujnikami i nie dojdziesz ładu.
Używam linuksa i nie potrzebuję AVStudio. Wszystko co chcę mogę ustawić w pliku makefile - nie mam z tym problemu. Jednak mam nierozwiązany problem z obsługą 1WIRE i można się na tym skupić.
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);//...
zamiast lm335 zastosuj ds18b20 i pomiar przez 1wire
...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
w programowaniu jestem kompletnie zielony :) chcę żeby 2 czujniki ds18b20 były na 1Wire na zasilaniu osobnym (nie pasożytniczym z układu) jeśli to pomoże to mogę schemat wstawić
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)...
;) ... ja mam podłączony takim przewodem jak piszesz DS18B20 (magistrala 1Wire) na kablu o długości 16m i śmiga bez problemu. (też mierzy temperaturkę na dworzu)
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)....
1Wire i przyciski też muszą być z tej nowej masy.
Magistrala 1Wire jest bardzo zależna od czasów. Ponieważ nowa Atmega8 ze sklepu jest ustawiona na 1MHz zapytam czy zmieniałeś ustawienia FuseBitów w tych Atmegach? Pytam ponieważ w kodzie masz zadeklarowaną prędkość 4MHz. Taką predkośc podałes kompilatorowi i do takiego taktowania policzył czasy do komunikacji z czujnikiem. Jeśli nie zmieniałeś nic...
Płytkę trzeba by prześledzić na spokojne lecz widzę, że kolega chce wykonać płytkę dwustronną a więc przydały by się przelotki jeszcze:) Jeśli chodzi o napięcie 5.6V zostało ono uzyskane przez autora dzięki zastosowaniu diody w masie stabilizatora. Kiedyś wykonywałem ten zegar i DS18B20 został podłączony na 3 przewodach. Rezystor 4k7 musi być obowiązkowo...
takie drobne uwagi do schematu: 1. przekaźniki daj w obwodach kolektorów tranzystorów a nie w emiterach, poza tym brak diod zabezpieczających :( poczytaj i zobacz to: http://mirekk36.blogspot.com/2012/04/prz... poza tym przydałoby się oddzielne zasilanie dla przekaźników a nie VCC którym zasilasz także procek. 2. wyświetlacz...
Skoro znasz już składnię assemblera, to jedyne czego potrzebujesz, to: - datasheet Atmega8 - datasheet Ds18b20 - opis standardu komunikacji 1wire Nie wiem jak jest z gotowcami, ale na assembler to bym za bardzo nie liczył. Skoro kiepsko u ciebie z angielskim, to zacznij chociażby od tego: http://www.1-wire.rms.biz.pl/
Witam, chcialbym sie podlaczyc po ten topic gdyz mam pewien problem z obsluga DS1820 i DS18B20 z ATMega128 Mianowicie, po podlaczeniu w trybie 2wire (1 - GND, 2 - PinB.7/PinE.7 itp., 3 - Vcc 5V) do ATMega128 z kwarcem zewnetrznym 10MHz (innego uzyc nie moge) po wykonaniu komend w Bascom AVR: config 1wire= portb.7 dim rgn(8) as byte 1wreset wait...
Witam Udało mi się końcu dzisiaj rozwiązać problem. W jednym miejscu (_1WReadSlot(), tuż za odczytaniem bitu) ustawiłem za małe opóźnienie (25us, a powinno być 60us). Jeszcze spróbuje "pogadać" z DS18B20, i postaram się wrzucić tutaj gotowe funkcje do obsługi 1Wire. Dodano po 4 Zgodnie z obietnicą podaje gotowy projekt w WinAVR, pod ATmega8 (at) 4MHz....
Witam, 1. Niewiele więcej miejsca zajęła by ci ATmega8 lub mega48 lup podobny w obudowie TQFP32, a one mają sprzętowy USART który przydał by się tu do RS485 2. Do czego jest ta zworka JP2? Zwiększ wartość rezystora R2 podciągającego 1Wire. Na co najmniej 1k (optymalnie 2,2-4,7k) 3. Staraj sienie rysować połączeń pod kątem 45 stopnie. Przy większych...
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...
Mam termometr na Ds1820 i Atmega8.Pracuje na wewnętrznym oscylatorze(przestawiłem na 4Mhz) bez zarzutu.Należy pamiętać o $crystal (np.4000000). Pozdrawiam!
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...
Napisz co konkretnie zmieniłeś w momencie jak przestało działać. A jak nie wiesz to powoli wracaj do wersji kiedy działało. Np. zacznij od kodu który tylko odbiera kody od pilota a potem dodawaj po kawałku obsługę I2C, wyświetlacza, 1Wire, itd.
Witam. U mnie ten program pracuje na wewnętrznym oscylatorze 1MHz. Sprawdź czy masz dobrze podłączony DS do pinu zadeklarowanym w programie. Config 1Wire = Portd.5 i tu ma być podłączony DS.
...Ale tak zrobiłem i działa idealnie :D Może masz starszego BASCOMA AVR. Ten mój jest 1.11.8.2. Pozdrawiam. Kurczaki pieczone :!: - masz rację :!: I daj tu człowieku wiarę dokumentacji , w której stoi jak byk , że 1wire nie jest rekonfigurowalne , a tu masz :D Piotrek
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...
(at)snnaap: Ta funkcja ("ms") to jakaś pozostałość - coś zmieniałem, ale skoro spełniło moje wymagania to już zostawiłem odłogiem. Pierwszego pytania nie rozumiem. Tu znalazłem jakieś informacje o tym, że można sobie efektywnie poradzić bez UART: http://mirekk36.blogspot.com/2011/09/fak... Nie ma (albo nie "doszukałem...
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...
Tzn pytasz czy ktoś się spotkał z problemem podłączenia większej ilości czujników i chcesz żeby opisał ci ten problem ? Czy może pytasz o to, czy można podłączyć 6 do 10 czujników do 1wire ? ;) Skoro wolałbyś w C to w czym rzecz? Zrób - spokojnie można to zrealizować.
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...
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...
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...
Trochę zajęło mi znalezienie co jest nie tak... ale w końcu do tego doszedłem, może się komuś przyda. Problem rozwiązałem stosując kwarc 4,4 Mhz (lecz samo zastosowanie kwarcu nie było przyczyną rozwiązania problemu), następnie przeliczyłem czasy dla tej częstotliwości, a to co pomogło to wydłużyłem czasy trwania ramek w 1wire. Widocznie jeżeli czujnik...
Witam Przy obecnych cenach zewnętrznych przetworników na I2C ilość ADC w Atmedze przestaje mieć znaczenie, zwracam też uwagę że Atmega8 ma w obudowie DIP tylko 6 przetworników. Temperaturę możesz mierzyć po 1Wire ( DS18B20 ). Masz pomimo komplikacji sprzyjające warunki, dysponujesz +12V i -12V, wiele wzmacniaczy różnicowych może pracować z wejściami...
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...
ATmega32 to dużo za dużo do tego projektu. Jak polecił kolega powyżej, spokojnie starczy ATmega8. Obsługę LCD, RTC, 1Wire, I2C masz na forum, wystarczy poszukać. Co do czujników to myślę że DS18B20 do tego wystarczą. Są tanie, działają na wystarczającym zakresie temperatur i obsługa wiele razy tu wałkowana.
Na dobry początek, zastanów się nad tymi dwoma makrami: #define CLEAR_1WIRE DDRD&=~_BV(WE) #define SET_1WIRE DDRD|=_BV(WE)
...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...
Nie mogło by być tak, że to przycisk generował by przerwanie? ... i pewnie do tego kolejny "delay" w przerwaniu od przycisku w celu eliminacji drgań styku? Nie brnij dalej w te delay'e, bo jeśli będziesz chciał dodać kolejną funkcjonalność to może okazać się to niemożliwe. Zrób sobie timer np. co 10ms i wywołuj nim przerwanie, ale uwaga: nie umieszczaj...
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, rozwiązanie użytkownika Atom1477 z zarzadzaniem przerwaniami cli()/sei() pomogło, teraz pomiar jest bardzo stabilny i aż miło patrzeć, bardzo dziękuję za prostą i fachową pomoc, natomiast początkującemu koledze proponuję artykuł z kursu C dioda dotyczącego 1wire (użyj jego bibliotek), a multipleks napisz sam, opis na stronie kursu wkrętak, bazując...
A to niby dlaczego nie wolno stosować waitms ??? U mnie jakoś działa przy wielu czujnikach na jednej linii i co to ma wspólnego z wysyłaniem przez uarta ? W tym przypadku waitms nie zakłóca obsługi przerwań, wiec nie widzę problemu. Kolega namieszał trochę w procedurze "odczyt". Na początku wyszukujesz czujniki na linii 1wire, a później, w procedurze...
Znam C a wolę pisać w B4A, B4i, B4R, Bascom czyli w Basic, ale kiedy coś mi nie działa to odpalam analizator stanów logicznych albo oscyloskop. Nie zwalam na język programowania. https://obrazki.elektroda.pl/6883372000_...
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
... zumek, zastanawialem sie nad ta funkcja, nie wiem co tam jest zle, funkcja pochodzi ze strony dallas semiconductor gdzie opisana jest kominukacja 1-wire, z tamtad tez sa zastosowane czasy opoznien przy komunikacji http://www.maxim-ic.com/appnotes.cfm/app... A ja , myślę sobie tak:" masz podaną na talerzu gotową funkcję, a rozbudowujesz...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Pozwolę sobie zapodać link do posta, w którym jako złącznik wrzuciłem kompletny przykład do komunikacji po 1Wire. Przykład obejmuje zarówno odczyt z DS1990 lub z DS18B20, w zależności co się wykomentuje w "mainie". Przykład chodzi na zegarze 4MHz, więc będziesz musiał sobie jedynie przerobić funkcje opóźniające (waitus), aby jej wywołanie waitus(60);...
Mam sterownik do kolektora słonecznego zrobiony na atmega8 i dwóch termometrach ds18b20. Do tego mam komputer zbierający dane jeszcze z innych czujników podłączonych do innej magistrali 1wire. Teraz chciałbym aby komp zbierał też dane z czujników podłączonych do ATMEGA8. Podłączenie obu magistrali 1wire i podłączenie dwóch masterów do jednej magistrali...
No korzystałem z kodów w sieci i wiem jak odbywa sie pomiar temp przez DS18b20. Tylko najwiekszy problem mam z tym wyświelaczem. Nie wiem czy on musi być podłączony pod 1wire czy pod SPI. Dodam ze chciałbym zrobić coś podobnego do tego projektu: [url=http://www.ivica-novakovic.from.hr/... Ten kod do wrzuciłem do załacznika...
Podejrzewam, że błąd będzie gdzieś w samym schemacie/płytce, ponieważ przed chwilą złożyłem na stykówce na szybko układ: - Atmega8 - 1x DS18B20 - dioda led i wrzuciłem w niego program: Dodano po 3 Problem z wykrywaniem czujnika rozwiązany. Powodem całego kłopotu okazało się jedno ze złączy (przy magistrali 1Wire), które było uszkodzone i nie stykało....
ok sprawdzę .. :) wielkie dzięki za pomoc :) Dodano po 40 nic z tego dodałem ustawianie strong pull-up i dalej mam to samo co wcześniej .. ow_wrbyte(0xCC); //SKIP ROM ow_wrbyte(0x44); //CONVERT T // OWPORT - port od 1wire // OWPIND - linia z dioda OWPORT |= _BV(OWPIND);// wlacz silny pull-up _delay_ms(20000); OWPORT &=...
1. warto użyć przerwań chociażby dla obsługi RC5 2. do obsługi 1wire nie potrzeba wykorzystywać przerwań choć można 3. Jeśli do tego będziesz miał jakiś wyświetlacz multipleksowany LED to bez przerwań się nie obejdzie 4. Jeśli użyjesz wyświetlacza LCD to do jego obsługi przerwania nie są potrzebne - tak więc procek w rękę, rzut oka na niektóre przykłady...
... niestety tak. Pamiętaj - co Cię nie zabije, to Cię wzmocni :D Lepiej wtopa na początku na małym projekcie niż później na czymś 5x bardziej skomplikowanym ;-) Powodzenia, nie łam się, jeszcze wiele niespodzianek przed Tobą :D Nie jestem załamany, wręcz przeciwnie. Elektroniką zacząłem się zajmować kilka dni temu po odkryciu że w C można pisać programy...
Ok, dzięki za pomoc, już wszystko działa :) Powodem była zła płytka :/ miała zwarcie i już ją odesłałem z powrotem :) Ale mam jeszcze inne, nurtujące mnie pytanie.. Według datasheet ds18b20 ma zasilanie +5V na 1 nóżce ( patrząc na wypukłą stronę ), na 2 nóżce 1wire i zasilanie przez 4k7 Ohm, a na 3 GND. Ja na swoim czujniku mam zupełnie na odwrót .....
Mozna zrealizować to na bardzo pospolitym mikrokontrolerze atmega8 (powinno wystarczyc) w cenie 15 zł. Portów jest tam wystarczajaco duzo. Pomiar temperatury na czujniku DS18B20 podłączonym na 1wire (2zł). Do tego zasilacz, kilka przekaźników i kwestia wykonania płytki. Pobór prądu jest znikomy. Przykładów kodu napisanego w jezyku c na mikrokontroler...
Mam problem z czujnikami temperatury DS18B20 na 1wire. Polega na tym, że procesor widzie oba podłączone czujniki, ale czyta tylko z jednego. Czytanie ROMu skutkuje wyświetleniem informacji z jednego czujnika (28 FF FC 29 01 00 00 87) natomiost z drugiego czujnika - 28 00 00 00 00 00 00 00 (przy podłączeniu pojedyńczo informacja z czujnika wygląda następująco:...
Mam pytanie związane z tym termometrem - czy procek wymusza stan wysoki na linii danych DQ magistrali 1WIRE na czas konwersji temperatury, w celu realizacji zasilania typu "parasite"? Jeśli nie - to czy pomiar jest możliwy ? Czy pomiar może być obarczony dużym błędem ze względu na zasilanie czujników jedynie przez rezystory 4k7 ? "Klony" skasowałem....
..Owszem zmieniasz DDRC ale nie zapomniałeś czasem o czymś? Podpowiem ci: _1_WIRE_OUT |= _BV(_1_WIRE); Mam nadzieje że wiesz o co chodzi. A po co włączać wewnętrzny pull-up , skoro jest zewnętrzny :?: Ponieważ magistrala 1wire jest typu "open-drain" , to do komunikacji , wystarczy "manipulacja" kierunkiem portu , bez włączania wewnętrznego...
http://obrazki.elektroda.net/23_12758251... Witam, chciałbym zaprezentować konstrukcję termostatu którą wykonałem na zaliczenie przedmiotu na studiach. Do budowy termostatu wykorzystałem: atmega8, cyfrowe czujniki temperatury DS18B20 oraz wyświetlacz 2x16 znaków. Program: Program do atmegi napisany jest w asemblerze. W programie zaimplementowana...
No wlasnie zaleta takich magistrali typu 1-Wire lub I2C jest to ze mozna na niej umieszczac dosc sporo urzadzen Adresujesz z kim chcesz gadac i gadasz A jeśli urządzenia jak np: termometr ds18b20 czy zegar czasu rzeczywistego wykorzystują całkowicie inne komendy do komunikacji. To chyba będzie problemem. Sprawdzałem w karcie katalogowej specyfikacje...
Czy to może być wina częstotliwości kwarcu ?. A gdzież tam kwarcu? :( ... tylko i wyłącznie programu. To może działać zupełnie swobodnie nawet bez kwarcu tylko na wewn. oscylatorze np 8MHz. Zobacz tutaj: http://mirekk36.blogspot.com/2011/09/fak... wprawdzie w nieco innym języku ale widać, że odczyt temperatury 1wire...
Hmm... Spróbuj regularnie migać LED, jednocześnie komunikując się z PC, obsługując pomiar temperatury za pomocą 1wire (DS18B20) i wyświetlać ją na LCD, używając waitXX... ;) Timer0 jak nic do zastosowania... Tymczasem małe co nieco w załączniku (miganie LED z użyciem timera), zarówno dla ATmega8, jak i na ATmega8515. Ponieważ ATmega8 nie posiada przerwania...
Chyba wyważasz otwarte drzwi. Ja osobiście zastosowałbym Ds18B20, łatwo sie z nik komunikować po 1wire, są gotowe procedurki http://www.elektroda.net/download/file30... .Prawdopodobnie bedziesz pisał w bascom tak więc masz gotowy układ tylko posklejać w całość
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ę...
$regfile = "m8def.dat". $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0 Config 1wire = Portc.0 Declare Sub Odcz_temp Dim Temperatura(2) As Byte Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32, Do Call Odcz_temp Cls If Temperatura(2)...
Co to znaczy wyświetla jedną linię?? Opisz dokładnie albo zrób zdjęcie. Ekran startowy się pokazuje, czyli "Witaj ..." a w drugiej lini "Temometr.." itd. Gdzie staje program? Co dokładnie pokazuje LCD od momentu włączenia do końca? Prawdopodobnie masz coś na magistrali 1W zwarte albo któryś czujnik poleciał lub port w procesorze. Mogłeś zmienić tylko...
Proszę bardzo (szkoda kolejnych kilkunastu postów na omawiany wielokrotnie temat), kod zmodyfikuj wedle własnych potrzeb: $regfile = "m32def.dat" $crystal = 8000000 Config Lcdbus = 4 Config Lcd = 16 * 2 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 ' termometr ds18b20...
Dzieki za linka problem rozwiazany:) .... . .. Config 1wire = Pind.0 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 100 1wreset 1wwrite &HCC 1wwrite &HBE i1 = 1wread(2) I1 = I1 * 10 I1 = I1 / 16 'If I1 > 0 Then Cls Ss = Str(i1) Ss = Format(ss , " 0.0") Config 1wire = Pinc.2 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 100...
Tu mas fajnie wyjaśnione komendy 1wire. http://www.jaglarz.com/ja/elektronika/ds... A tu jest program z komentarzami w BASCOM. http://www.portalnaukowy.edu.pl/index.ph... Numer czujnika jest 8 bajtowy czyli 64 bity. Jeśli czegoś...
Zastanawia mnie czy masz wyprowadzenie 1wire podwieszone rezystorem np 4,7k do +. Spróbuj ustawić oscylator na wewnętrzny 8MHz i ustawić odpowiednio F_CPU. Powyższy kod chodził mi (i nie tylko) w niejednym urządzeniu, więc wg mnie masz coś skopane w urządzeniu. I spróbuj kod if(onewire_reset()) // niekoniecznie onewire_reset()...
dlatego uczę się na przykładach - których mi brakuje :( Że co :?: W samym dziale Mikrokontrolery , leżą tony(a może tomy ?) przykładów w C , do komunikacji z DS18B20 - to po pierwsze. Po drugie - skąd Ty wytrzasnąłeś te milisekundy :?: unsigned char exist1w(void){ //sprawdzanie czy urzadzenie 1wire jest podłączone do procesora cbi(PORT1w,PIN);...
Kolega ma nowy procesor. Prosto ze sklepu. Trzeba ustawić fuse-bity by pracował z zewnętrznym kwarcem - takim jaki jest podany podczas kompialcji. Inaczej cała transmisja 1wire idzie w maliny. Ewentualnie najpierw proszę zmienić zapis w dyrektywie $CRYSTAL na: $crystal = 1000000 Jek będzie dobrze to przycyzną jest taktowanie. ps. A swoją drogą. Tyle...
Z tego co napisałeś jak masz właczony rezonator wewnętrzny na 8MHz, i jak masz zadeklarowane te 8M w crystal to masz śmieci? A jak natomiast ustawisz crystal na 11005900 (czemu taka wartość, nie masz na myśli 11095200) to działa Tobie wszystko OK? To bardzo dziwne, bo wtedy procesor raczej nie będzie odczekiwał poprawnych czasów. Będzie wtedy ten czas...
Od kilku dni staram się uruchomić pomiar temperatury czujnikiem ds18b20. Pomiar niskich temperatur przebiega poprawnie. Po przekroczeniu temperatury 54stC na wyświetlaczu ukazuje się wartość 127. Poniższy kod jest skopiowany z tego forum, poza tym napisałem własne funkcje obsługi 1wire lecz skutek był taki sam. Programując uC bascomowymi procedurami...
mi sie zdaje ze tu jest bład // procedura odczytu bitu od urzadzenie 1wire unsigned char wire1_read_bit(void) { unsigned char bit; WIRE1_0; //_delay_loop_2(4); _delay_us(2); WIRE1_1; //_delay_loop_2(40); _delay_us(20); if(bit_is_clear(WIRE1_PIN,WIRE1_... { bit=0; } else {...
Wow jaakim cudem nie znalazłem tego programu wczesniej ;] Ustawione jak zalecałeś ale dalej nic ;/ Apropo to jak już jesteśmy w temacie mogłbyś mi polecic jakąś ksiązke któa pozwoliła by mi nadrobić wiedze typu "skąd mam wiedziec że JTAG przeszkadza mi w komunikacji 1wire " .Wiesz o co mi chodzi STOP kończyłem pisac posta kiedy wpadłem na pomysł że...
udało mi się z tego kodu wyciąć komunikacje 1wire i całą resztę potrzebną do o debrania temperatury z ds18b20 i wklejiłem to do kodu z którym działa mi lcd troche się męczyłem aż na wyświetlaczu w miejscu gdzie powinna być temperatura pokazało sie -00.2 ds18b20 nie reagował na zmiany temperatury wszystkie delay_ms zwiekszyłem 8 razy bo mój atmega chodzi...
Witam, trochę Cię okradli - 7805 za 5zł i atmega8 za 8zł ??? (skandal) może w przyszłości warto: -zamienić LM35 na DS18B20 - cena praktycznie ta sama a dokładność temperatury o wiele lepsza, no i nauczysz sie obsługi 1WIRE -jeśli zostawiasz LM35 to warto zmienić max napiecie odniesienia skoro wiesz ze przy max 150 stopniach Celsjusza będzie na wejściu...
Do zmiany stanu na porcie "D" służy "PORTD". A "DDRD" zmienia czy to ma być wejście albo wyjście. laki_17 masz rację tylko w przypadku linii 1wire jest akurat dobrze ponieważ wpisując na początku programu zero do rejestru PORTD i ustawiając port jako wyjście ściągamy linię 1 wire do zera. Ustawiając go jako wejście (port w stanie wysokiej impedancji)...
Czy ustawienia które mam wprowadzone: #define PIN_1WIRE PD7 #define PORT_1WIRE PORTD są prawidłowe? Analizując PDF powinno być: #define PIN_1WIRE 7 #define PORT_1WIRE PIND
Witam. Rozpocząłem niedawno zabawy z uC atmela, jak narazie idzie nie najgorzej... Robie teraz zegarek z termometrem do samochodu (atmega8, pcf8583, ds18b20, LCD na hd4478). Jednym słowem standard... prawie każdy od tego zaczyna. Dużo materiału jest w necie, wiec do tej pory na wszystkie pytania tam znalazłem odpowiedź... Pytania mam 3... Pierwsze,...
witam mój problem jest tego typu, że ma termometr, który wykorzystuje właśnie18d20 i wyświetla temperaturę na lcd tylko że nie liniowo;/ co jest nie tak podłączony jest przez rezystor podciągający a o to jak wygląda kod programu $regfile = "m8def.dat" ' zdeklarowane dla Atmegi8 $crystal = 8000000 ' Taktowanie wewnetrzne 1mHz Config 1wire =...
Witam!! Od razu chce napisać iż wiem, że temat ds'a na elektrodzie pojawiał się już N-razy ale mimo iż od kilku dni przeszukuje forum, nie udało mi się rozwiązać problemu. Mianowicie chodzi o to, że z rożnych tematów na elektrodzie i rad innych udało mi sie sklecić programik do obsługi ds'a + atmega8 + lcd. Czujnik odpowiada po resecie, czasy w symulacji...
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
hej niech ktoś podpowie czy dobrze rozumiem wywoływania jednego ds-a 1)RESET() - 1wire 2)wysłanie 0x55 3)wysłanie adresds18b20[0x28] -0 bit 4)wysłanie adresds18b20[0x..]-1 bit 5)wysłanie adresds18b20[0x..]-2 bit 6)wysłanie adresds18b20[0x..]-3 bit 7)wysłanie adresds18b20[0x..]-4 bit 8)wysłanie adresds18b20[0x..]-5 bit 9)wysłanie adresds18b20[0x..]-6...
Jedyną przewagą LM35 nad DS18b20 którą dostrzegam to ta, że nie potrzeba implementować protokołu 1-wire który bywa kłopotliwy w zetknięciu z przerwaniami. Oooj tam Kolego kłopotliwy. Zerknij: - [url=http://www.firma.stsystem.pl/compon...
Witam, Projektuje układ sterujący pracą wentylatora DC 12V, zasilany w całości z ogniw fotowoltaicznych. Mam do dyspozycji panel, który daje ok 45W przy napięciu 16,8V. (optymalne warunki nasłonecznienia). Wymyśliłem sobie, że wentylator będzie sterowany przez mikrokontroler Atmega8 za pomocą PWM. Wentylator ma się załączać przy pewnych temperaturach....
Dzięki za wyczerpującą odpowiedź (at)tmf. Parę lat temu zrobiłem rodzicom taki alarm/termometr do pieca CO z lat 80-tych. W piwnicy LM35 z jakimś małym "kondensatorem uśredniającym", nie pamiętam jakim, może 1uF, 20 metrów kabla telefonicznego dalej - w mieszkaniu jest drugi mały kondensator Atmega8, i... wynik pomiaru taki sam jak przy 20cm przewodu....
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0 'Podłączenie LCD Config 1wire = Portb.1 'Podłączenie DS18B20 Cursor Off Dim Temptxt As String * 7 Dim Temp As Single Dim T As Word Dim Wynik(9) As Byte Cls Do...
Kwestia połączeń jest raczej mniej prawdopodobna, bo błędny wynik oznaczałby błędy transmisji, a te okresowo powodowałyby "przeinaczenie" komend i brak poprawnej komunikacji z sensorem (co przy dobrze napisanej obsłudze 1wire wyrzuciłoby komunikat o błędzie). Tutaj jest kwestia tylko samego wyniku i właśnie przy samej konwersji szukałbym przyczyny....
Przeczytaj to kompletna obsługa DS18B20 [url=http://ds5.agh.edu.pl/~czaro/naukow...
$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '-- Wejscia przycisków Config Portd.2 = Input Config Portd.3 = Input ' -- podciągnięcie Set Portd.2 Set Portd.3 ' -- porty sterowania segmentami LED Config Portd = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output ' -- tranzystory Config...
Mam dziwny problem z ATmega8515 i obsługą szyny 1wire w Bascomie AVR 11.7.4. Prosty program zbudowany w oparciu o nieznacznie zmodyfikowany przyklad z helpa do odczytu temp. z ds18b20 działa na AT90S2313, a nie działa na ATmega 8515. Sposób podłaczenia jest ten sam, próboałem też konfigurować szynę 1wire na różne porty. Problem jest zawsze ten sam -...
Witam.Mam taki problem.Posiadam program Termometru (Atmega8+DS18B20)pokazujący temp.dodatnie i ujemne.I nie mam pojęcia jak go przerobić pod (2X DS18B20).Temp.z dwóch układów na jednej 1Wire.Proszę o pomoc:) $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7...
Witam To moze zaczne od kodu: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 Cls Config Servos = 1 , Servo1 = Portc.5 , Reload = 10 Config Portc.5 = Output Config Portd.0 = Input Set Portd.0 Cursor Off Dim Serworuch...
Proszę o wyjaśnienie przyczyny przekłamań odczytu temperatury z czujnika DS18B20, program poniżej. Najczęściej układ "kłamie" że jest 55 lub 127,5 °C Dodam że wykorzystuję odbiornik RC5 i PWM do sterowania podświetleniem LCD. Czy przekłamania mogą się brać z tego że kilka komend korzysta z tych samych timerów lub przerwań timerów? jak to obejść z góry...
Poinformowanie kompilatora o F_CPU w kodzie potrzebne jest dla funkcji _wait_ms i _wait_us, żeby te mogły odpowiednio obliczyć liczbę taktów zegara, jakie trzeba odczekać aby uzyskać zadane opóźnienie. Definicja F_CPU jest też w parametrach projektu (jeżeli używasz AVR Studio). Taktowanie ma się nijak do temperatury. Jeżeli kwarc był by za szybki to...
Za dużo kombinujesz już mówiłem ;) podłączanie DS18B20 pod PCF'a żeby go obsługiwać w Bascomie to jeszcze bardziej karkołomny pomysł niż podłączanie LCD. Bo o ile LCD się da to o 1wire zapomnij Możesz sobie dodatkowe diody czy przekaźniki podłączyć A ten kod który pokazałeś to asembler ale nie dla AVR'ów tylko dla '51 A nawet jakby był dla AVR - to...
ds18b20 1wire atmega8 1wire ds18b20 atmega8
sterowanie spawarki pompa nilfisk rozebrać przekaźnik okazać
klimatyzator haier klimatyzator haier
Programowanie centrali Nice: kroki i metody Range Rover 2015 - Słabe przyspieszenie przy ruszaniu