Dodaj flagę , zwiększaj ją w przerwaniu, a w pętli głównej sprawdzaj czy osiągnęła już równowartość 750ms.
Ok skoro nie nawiązałeś komunikacji ze wszystkimi dallasami to wykonaj kolejny krok tzn. pozostaw jedynie jedenego dallasa i zrób to po kolei sprawdzisz czy numery Ci grają. Jak już tak pojedynczo sprawdzisz to podłącz kolejnego tak żeby były 2 na jednej linii i tak pokolei do przodu. Spokojnie do wszystkiego się dojdzie. Pozdrawiam. PS. Z Bascomem...
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.
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Witam. Może spróbuj tak po wywołaniu przerwania ( u Ciebie co sekunda) Odczytaj termometr DS. A następnie wydaj rozkaz pomiaru temperatury. W następnym przerwaniu odczytasz go o tak w kółko.
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...
Z tego swojego kodu usuwasz "Odczyt numerów ID czujników temperatury" A w to miejsce wpisujesz odczytane adresy do tablicy z adresem danego czujnika. np. tak będzie to wyglądało dla pierwszego czujnika: Dsid1(1)=&H28 Dsid1(2)=&H65 Dsid1(3)=&HC3 Dsid1(4)=&H89 Dsid1(5)=&H05 Dsid1(6)=&H00 Dsid1(7)=&H00 Dsid1(8)=&H25
Z tego fragmentu nie wiadomo czy używasz przerwań. Może wywołujesz jakieś przerwanie i jego obsługa zajmuje tyle czasu , że przychodzi następne przerwanie i program się pętli ( jedyne co robi to obsługuje przerwanie )
Zobacz tutaj If Flaga_przygotowanie_odczytu = 1 Then Incr Liczniczek_przygotowanie_odczytu [...] -----Breakpoint;)------- Flaga_przygotowanie_odczytu = 0 End If No i tak, powiedzmy że w miejscu które pokazałem program siedzi 2 sekundy. Przerwań było od groma, a Tobie zmienna tylko raz się podniosła. Dlatego takie rozwiązanie jest złe. Musisz...
Witam ! Moim zdaniem aby nie przestawiać Fusebitów wystarczy linię w pliku BAS $crystal = 4000000 zmienić na: $crystal = 1000000 Pozdrawiam. Stefan W sumie masz racje, jeszcze coś namiesza. Ale teraz kolega się chociaż dowie, że nie jest obojętne jakie są fusebity.
Dim Sc(9) As Byte 'w tej tablicy beda dane odczytane z czujnika Dim Temperatura As Integer 'tu obliczona temperatura Dim Blad_crc As Bit 'a ten bit bedzie ustawiany w razie bledu CRC odczytu '... program ... 1wreset 1wwrite &HCC 1wwrite &HBE Sc(1) = 1wread(9) 'odczytujemy wszystkie bajty z czujnika If Sc(9) = Crc8(sc(1)...
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...
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...
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...
Jeśli termometr będzie w przerwaniu np co 1 sec, to możesz usunąć : " Waitms 750 'przeczekaj czas konwersji" To opóźnienie będzie tylko spowalniało powrót do pętli głównej. Konwersja i tak się dokona bo przecież program będzie tam skakał co sekunda. Różnica jest tylko taka, że przy pierwszym włączeniu zasilania do układu termometr pokaże 85 stopni....
Poprawiłem - nie sprawdzałem. Dim Odczyt(2) As Byte dim T As Integer dim T1 As Single dim T2 As Single Dim Temp As Long Do Ds18b20 Print Temp Wait 1 Loop End Sub Ds18b20 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Odczyt(2) Shift T , Left , 8 T = T + Odczyt(1)...
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Tak przerwania mogą zakłócać. Na czas wysyłania komend 1w wyłączaj przerwania jeśli możesz.
Łopatologicznie to by było tak... Masz zmienną o nazwie np. LICZBA=123 i chcesz z niej wyodrębnić setki, dziesiątki i jedności... Musisz stworzyć nowe zmienne typu całkowitego, np. SETKI=LICZBA/100 --> (123/100 = 1,23 zmienna typu całkowitego utnie te 23 po przecinku i zostanie 1 --> SETKI=1) DZIESIĄTKI=(LICZBA/10)-(SETKI*10) --> (123/10=12 --> 12-1*10=2...
...Czy istnieje jakiś sposób, aby ostateczną zmienną 'Ss' (string) zapisać w zmiennej typu Single (lub innej?) aby umozliwic porównanie jej z tą zapisaną w eepromie? A może ktoś zna inną metodę na rozwiązanie tego problemu? Z Twojej wypowiedzi wynika , że nie wiele masz wspólnego z programowaniem uC - ale mniejsza z tym. Zmienna string jest potrzebna...
oooooo to chodzi ;) to taki szkielet - ale na podstawie tego sam wiesz już jak sobie poradzić z tym tyle że bez Wait'a dodam jeszcze, że sam fragment: 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 warto zapuścić jeszcze przed wejściem wtedy w pętlę główną żeby już mieć gotową pierwszą zmierzoną temperaturę w czujnikach po resecie - gdyby przypadkiem...
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Witam Co do przeliczania wartości na temperaturę nie będę się wypowiadał bo w wielu publikacjach było to prezentowane. Natomiast zajmę stanowisko w sprawie wyświetlacza LED. Proponowałbym z obsługi przerwania usunąć procedurę pobrania znaku do wyświetlenia. O wiele lepiej zrobić to w programie głównym. Zbyt długie przebywanie w obsłudze przerwania może...
Witam Dokonałem tej zmiany i także wyrzuciłem zmienna S na Lcd i dalej program nie działa tak jak bym chciał. ................ Jest ok zmieniłem znak ''<" i działa . Do swojej podstawki programującej mam podłączone 2 przyciski do pin d.0 pierwszy do pind.1 drugi gdybym chciał zmieniać progi załączania pind.7 tymi przyciskami (czyli regulować temperaturę...
Witam... Jesli moge w czyms pomoc... Dorzucam programik z wlasnego termometru. Wprawdzie wykorzystuje DS1820, ale latwo przerobic go na DS18B20 - przykladowe procedury i kody mozna znalezc na www.mcselec.com - bylo to na pewno. Mam nadzieje, ze przyda Ci sie... Pozdrawiam.
Witam W tym rejestrze tylko dwa bity dadzą się zmienić i przy okazji odpowiadają one za rozdzielczość więc wpisanie do rejestru wartości 63 dzisiętnie lub 3F hexadecymalnie załatwia sprawę. -- pozdrawiam
Chwilowo straciłem ten kod postaram się go znaleźć ale opierałem się na projektach z internetu. No bez jaj. Na 99% nic nie masz tylko czekasz na gotowca. Ale dobra, zlituję się na święta :D Pomijając całą beznadziejność kodu do multipleksowania wyświetlacza, takie coś powinno działać: $regfile = "ATTiny2313.dat" $crystal = 8000000 Dim Jednosci...
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...
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
Popatrz tu: http://owfs.sourceforge.net/family.html
Całego kodu nie mogę podrzucić, bo: - nie mam odczytu z eepromu, - nie wiem, czy zapis do eeprom ma być jednorazowy w momencie programowania procesora, czy ma być jednorazowy po pierwszym uruchomieniu programu, czy ma być wielokrotny w dowolnym momencie np. po zmianie termometru i wciśnięciu - dajmy na to - dowolnego guzika, - nie mam zrealizowanego...
...Czy w bascomie można zadeklarować tablicę dwu wymiarową Nie :!: Dla czego przy odczycie danych muszę ponownie resetować magistralę i podawać numer seryjny układu... Bo tak są skonstruowane - patrz tabelki w PDF-ku :) Czy jest możliwe najpierw wysłanie do wszystkich czujników polecenia mierzenia temperatury ... Jasne ;) '... 1wreset If Err=0 Then...
tablica jest odpowiedni zadeklarowana, a bascom automatycznie inkrementuje wzkaźnik w tablicy, więc polecenie: Bd(1) = 1wread(9) powoduje, ze pierwszy odczytany bajt ląduje w Bd(1), kolejny w Bd(2), aż ostatni (dziewiąty) w Bd(9)
W opcjach/programmer jest parametr Port Delay. Spróbuj zwiększyć wartość w okienku. Jeden z kolegów na forum zaleca zmiany w rejestrze Windows. Odszukaj jak się to robi. Jam mam programator bez tych mas i tylko czasem pojawi się jakiś błąd. Długość kabla od programatora do uC 0,5m. P.S. To, że się zna Bascom to nie znaczy, że nie można nauczyć się "C"...
nie, nie, nie, nikomu nie chciało się zajrzeć do dokumentacji BASCOMA? wszystkie polecenia obsługi 1wire można przeprowadzać na DOWOLNEJ LINII: 1WREAD Top Previous Next Action This statement reads data from the 1wire bus into a variable. Syntax var2 = 1WREAD( [ bytes] ) var2 = 1WREAD( bytes , port , pin) Remarks var2 Reads a...
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ć ;)
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,...
co prawda w C, ale zasada ta sama: http://mikrokontrolery.blogspot.com/2011...
Wobec tego źle zrozumiałem datasheet. Dlaczego nie korzystać z waitms 750? Chodzi o estetykę programu, czy objętość kodu wynikowego?
I i $crystal=
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",...
Trzeba dopisać warunek co ma uC zrobić jak zmienna osiągnie "0". Mikroprocesorowi musisz wskazać jak się ma zachować w każdej z możliwych sytuacji bo on niestety nie chce myśleć za Ciebie.
Czy przypadkiem zmienna I nie zwraca ci temperatury ujemnej gdy ona występuje? Znak jest zawarty w drugim bajcie => patrz datasheet.
Samuraj ja nie tylko dosc szczegolowo to opisalem ale praktycznie napisalem potrzebny kawalek kodu, z ta tylko roznica, ze po polsku :D Jesli by to zamienic na angielski to otrzymujemy gotowca... hehehe Ale mam nadzieje, ze Mariuszek15 juz sobie z tym poradzil.
Str. 100 i 101. Rejestr TCCR0, bity COM00 i COM01.
Może trzeba by było zdefiniować prędkość zegara w programie bascom :?:
Szukałem na forum i nie znalazłem żadnych informacji na ten temat. Może złe hasło wpisywałem. Proszę o pomoc. Tu jest to , o czym myślałem. http://www.elektroda.pl/rtvforum/viewtop... Piotrek
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ę :)
Codziennie w tym dziale ktos zadaje pytanie dotyczace termometru na DS18B20. Moze jak Dallas przestalby wysylac darmowe probki to moze w koncu te pytania by sie skonczyly :D Poszukaj na forum bo takich zrodel i to w dodatku w Bascom'ie jest tyle, ze jakbys je wszystkie wydrukowal to spokojnie mozesz sobie nimi pokoj wytapetowac :D Ponawiam pytanie Balu:...
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...
Mniej wiecej tak to mozna zrobic ;) Listing do AVR-a pozmieniaj nazwy portów '################# wyswietlanie temperatury ######################### Multiplex: Dim Mux As Byte Dim 100stopni As Integer Dim 10stopni As Integer Dim 1stopni As Integer Dim Dstopni As Integer Config Porta = &B11111111 Config Portc = &B11111111 T2 = Abs(t1) Porta = &B11111111...
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...
Jak najbardziej tak.
1. linia danych jest podciągnięta do plusa?, sprubuj zasilić go "normalnie" 2. jak czesto robisz pomiar, manual podaje że nie powinno sie tego robic częściej niż co 750ms. 3. nie wiem jak zwiekszyć precyzje odczytu w bascomie
Dzięki gts1991 Wszystko działa nie zmieniłem FusBity dla wewnętrznego 8Mhz
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
Przydał by się kod programu... Jeżeli wyłączasz timer to po jego ponownym włączeniu zaczynasz pewnie liczyć od 0 pomimo, że nie udało się doliczyć do potrzebnej wartości licznika. Ale to tylko przypuszczenia...
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...
czyli jak przykładowo dam: .... czyli flaga zmienia stan co ok. 1s,..... Z przedstawionej informacji wynika że masz w systemie tylko jeden układ DS, więc nie ma potrzeby go adresować (&H55-match ROM). wystarczy 'skip ROM'. Jeżeli flaga jest używana tylko do obsługi odczytu temperatury, to nie ma potrzeby aż tylu jej stanów (0/1/2/3; -wystarczy 0/1)....
Zajrzyj też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
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...
Błędy się mogą zdarzyć zawsze, ale lepiej jak jest ich jak najmniej więc możesz spróbować dodać kondensator 100nF - 1uF przy samym czujniku jeśli pracuje w trybie na trzech przewodach. Potem zmieniłbym procedure odczytu danych z czujnika na taka która sprawdza CRC i ósmy bajt na obecność wartości &H10. Kiedy sprawdzanie przebiegnie pomyślnie to bierzesz...
wg helpa bascoma masz: Gosub podprogram 'wywołanie .... .... a oznaczenie podprogramu podprogram: .... .... Return sub wymaga wcześniejszej deklaracji i wywołania poprzez call poza tym możesz mieć kłopoty ze zmiennymi oznaczonymi samymi cyframi w załączniku masz termometr który zrobiłem dla koleżanki (robiony na szybko więc nie jest specjalnie zoptymalizowany)...
Witam Czy niżej przedstawiona metoda jest metoda prawidłową przy wykrywaniu zakłamań w transmisji przy użyciu CRC? Czy program może być stosowany do ds1820/ds18b20? Masz poniżej pewne działające: [syntax=basic4gl] '///////////////////////////////////////... Sub Temperature ' actual measuring 1wwrite &HCC : 1wwrite...
$crystal = 14745600 Czy oprócz podłączenia takiego kwarcu ustawiłeś odpowiednie fuse bity? Następna rzecz to nie musisz robić resetu 1wire. Największy błąd polega na tym że nie czytałeś helpa bo gdybyś to zrobił to dowiedziałbyś się że zmienna do której zapisujesz ilość urządzeń koniecznie musi być typu WORD lub INTEGER. Na koniec radzę ci skorzystać...
Prawie identyczny temat : [url=http://www.elektroda.pl/rtvforum/to... 7seg LED
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ąć...
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.
Aby ci nie mrygał wyświetlacz nie robisz cls tylko możesz nadpisywać teksty np. [syntax=vb] lcd "Slowo1" lcd "slowo "[/syntax] zamiast [syntax=vb]cls lcd "Slowo1" cls lcd "Slowo"[/syntax] a tu masz fragment z trybami menu [syntax=vb]If Trybprzycisk = 0 And Trybpomocnicza1 = 1 Then Incr Tryb Trybpomocnicza1 = 0 End If If Trybprzycisk = 1 Then Trybpomocnicza1...
Raczej schemat zgodny jest z programem. Jedynie z Portd.6 nie do końca wiadomo co zrobić. Prawdopodobnie trzeba do niego przyłączyć diodę świecącą wskazującą na wartość ujemną, a diody na schemacie nie ma, podobnie jak DS18B20.
Witam ! Program nie zależy od sposobu podłączenia. http://obrazki.elektroda.net/19_12582693... Pozdrawiam. Stefan
no masz racje sorry zamien 12 z 2 bo locate dziala tak: locate y, x a ja myslalem ze odwrotnie (juz jest poprawione)
' Na początku kodu Index_tab=0 ...... ...... If Licznik = 1200 Then IF Index_tab=3 Then ' przesuniecie w tył jeżeli pozyskano co najmniej 3 pomiary Pomiar(1)=Pomiar(2) Pomiar(2)=Pomiar(3) Else ' Fragment kodu wykonywany dla Index_tab=0,1 i 2 Incr Index_tab IF Index_tab>3 Then Index_tab=3 End If Pomiar(index_tab)...
taka wartosc w zmiennej wysw , czyli temp 25,5 stC
Hej! Twój problem polega na specyficznej konstrukcji magistrali 1Wire i tego że wszystkie czujniki są podłączone za pomocą jednej lini i w momencie gdy chcesz pobrać dane z jednego to zgłaszają ci się wszystkie na raz lub ten który jest szybszy. Miałem podobny problem gdy w układzie miałem podłączony czujnik temperatury oraz pastylkę dallasa i efekt...
Instrukcja odczytuje 8 bajtów unikalnego numeru i zapisuje je w tablicy począwszy od wskazanego indeksu w stronę narastania indeksów. Czyli jeśli wskazuje się 1 to numer pierwszego czujnika jest w komórkach od 1 do 8. To znaczy, że powinieneś napisać: Z = 9 Adres(z) = 1wsearchnext()
No to skoro się uczysz to ucz się od razu porządnie. W przerwaniach ustawiaj jedynie flagi, a działania przeprowadzaj w pętli głównej. Poczytaj też o stosach $hwstack, itp.
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...
Ok, znalazłem wśród zapasów takie DS-y przy których błąd pomiaru jest skorelowany.
Zobacz to: http://www.elektroda.pl/rtvforum/topic18... Jest tam kod który sprawdza czujniki po włączeniu urządzenia. Można go przerobić by sprawdzał co jakiś czas :D
Timer w przerwaniu obsługuje wyświetlacz LED i inkrementuje zmienną byte, która w pętli głównej w instrukcji Case wybiera konkretne funkcjonalne fragmenty programu do wykonania, których wykonanie czasowo mieści się pomiędzy przerwaniami od timera. W przerwaniu od timera ustawia się także flaga przerwania, która uruchamia za pomocą If Then instrukcję...
Witam. Sprawdź tutaj: http://www.elektroda.pl/rtvforum/topic57... No i spróbuj w opcji szukaj wpisać "ds1820 bascom"
Witam.Mam taki problem. ............... Temp.z dwóch układów na jednej 1Wire.Proszę o pomoc:) Poszukaj na stronie źródłowej Bascom. MCS Electronics, artykuł: AN#111 (Application Note) Ten numer artykułu już chyba wszyscy pamiętają. Poczytaj też inne, może się kiedy przydadzą...., -gdyby jednak pamięć zawiodła, zawsze możesz zadać pytanie tu na grupie....
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
Związek odczyt1 z "Z" ma taki iż testuje bity wyczytalem to z pomocy w bascomie. Jestem początkującym więc hcętnie mile widziana porada. A jakiego typu jest Z :?: Byte,Word,itp. Skoro chcesz odczyteć 120 bit ze zmiennej T , to T jest prawdobodobnie typu super-hiper-extra-looooooong :D Żartowałem ;) Poza tym , po co komplikujesz proste zadanie :?: Dim...
Problem rozwiązany. W kodzie brak przemiany stopni .
Też bym reflektował na kodzik
Tzn. mam tablicę 24 bajty ( na razie do testów). I teraz podaje adres początkowy z tablicy, od którego zaczyna się ID układu DS18B20. Podprogram ma załadować ID, odczytać, sprawdzić CRC i w odpowiedzi podać mi LSB, MSB, status czujnika, histereze ( poprzednią muszę mu jakoś podać ) i wynik w postaci zmiennej typu string. Wzorowałem się na czymś takim:...
Ok poradziłem sobie tylko teraz wyskoczył mi inny problem , a mianowicie nie wiem dlaczego nie mogę korzystać z funkcji LINI i Boxfill wyświetlacz szaleje :-) a chciałbym wykorzystać te dwie funkcje w programie poniżej kod programu [syntax=basic4gl] '***************************************... '* Code to test DS18x20 '* The 1-wire bus pin is Port...
Nie chce zalac maszyny woda. Dlatego zrezygnowalem z lodu. Sprawdzilem ta negacje i faktycznie we wczesniejszym moim rozumowaniu znak rozpoznawal poprawnie jednak warosci byly bledne. Moge jeszcze zapytac skad bierze sie ta negacja i odejmowanie jedynki? Nie moge do tego dojsc gdyz mnie (na przykladach z dokumentacji) wynika, ze aby otrzymac poprawny...
$crystal = ? ;)
Nigdy w przerwaniu nie użyłem "wait" i nie użyje.
Witam Mam problem ze skompilowaniem w Bascom 8051 procedur do DS18B20 B1 = B1 / 16 ,obliczenia wyłącznie... B2 = B2 * 16 , dla temperatur dodatnich. Być może dla Ciebie , przecinek i średnik to to samo - dla Bascome nie ;) Piotrek
Witam! Mam taki problem: Skleciłem oto taki kod i nie bardzo działa $regfile = "m16def.dat" $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Porta = Input : Porta = &B11111111 Config Portb = Output : Portb = &B11111111 S1...
Kod dla 18B20 1wreset 1wwrite &H55 1wwrite Adres(1) 1wwrite Adres(2) 1wwrite Adres(3) 1wwrite Adres(4) 1wwrite Adres(5) 1wwrite Adres(6) 1wwrite Adres(7) 1wwrite Adres(8) 1wwrite &HBE Odczyt(1) = 1wread(2) T(p) = Makeint(odczyt(1) , Odczyt(2))...
Panowie mam debilne pytanie bo nie rozumiem tego a sporo się naszukałem i nie znalazłem wyjaśnienia. Chodzi mi o to: kody rozkazów do ds18b20 w manuału są takie: ' 1 Wire commands: ' 1. Read ROM - 33h ' 2. Match ROM - 55h ' 3. Search ROM - F0h ' 4. Skip ROM - CCh ' 5. Alarm Search - ECh ' Convert T - 44h ' Read Scratchpad - BEh ' WriteScratchpad - 4Eh...
Tego nie wiedziałem:D, co trzeba zrobić aby działał na 18b20 ?? Napisac nowy/własny od początku, albo skopiowac jeden z wielu gotowych, chocby tu na 'elektrodzie, albo wpisz w 'google': "bascom ds18b20 termostat"(bez " "). albo; - poproś ładnie(!), - to nivea ci napisze...; a jak dłużej pociągniesz temat (będziesz udawał nie pojętnego nicponia), to...
Tosię nazywa wyświetlacz 7-segmnetowy LED. Da się. Kup garść rezystorów, złóż programatora sample programer, kup jakiś procek AVR, zamów/kup dallasa ds18b20, polutuj, ukradnij gotowy program / naucz się pisać je sam (Książka/manual). A poza tym nie to forum. Jest dział mikrokontrolery. Co do kosztów ds18b20 6 - 10zł procek 6zł, kawałek płytki uniwersalnej...
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...
Witam. Mam taki oto program do pomiaru temperatury przez DS18B20 i wyświetleniu jej na 14-sto pozycyjnym wyświetlaczu 14-sto segmentowym: '-------------Zegar Kalendarz 14-segment LED-" 'opis złącza ISP 'czerwony - "+" 'zielony - RESET 'biały - MISO 'niebieski - SCK 'brązowy - MOSI 'czarny - "-" '------------dyrektywy dla kompilatora--------"...
ds18b20 bascom ds18b20 bascom ujemny bascom ds18b20 schemat
bd243 bd244 wzmacniacz szczotki alternatora mazda zawory ciągniki
Schemat ideowy wzmacniacza Mivoc SW 1000 A-II Kodowanie wtryskiwaczy po wymianie podkładek w Toyota Auris 2.0 D-4D