Zobacz sobie krótki opis [url=http://bart-projects.cba.pl/multipl... Zacznij krok po kroku i w 20 minut opanujesz temat. Co prawda tam akurat nie multipleksuję w przerwaniu chociaż tak to właśnie robię najczęściej. Spowodowane to było tym że akurat musiałem pogodzić multipleksowanie sześciu wyświetlaczy z odczytem 1Wire i czasem "naciągałem"...
Kolega Mad Jaro mierzy czas pomiedzy INT-em i przelicza na obroty. zablokowanie INT spowoduje pływanie obrotów( INT nie liczy impulsow). Kolega xury ma rację odnośnie jednokrotnego użycia szukania czujników. A poza tym zsynchronizuj odczyt 1wire z przerwaniem INT tzn. komunikację z 1wire podziel na max -5 bajtowe odcinki i wykonuj je po przerwaniu INT....
Brak kropki w deklaracji pinów wyświetlacza ma byc: DB6 = portb.1 Następnym razem sprawdz dokładnie tego typu błedy i nie dodawaj tematu z tak błahego powodu
Masz rezystor podciągający? Niektórzy o nim zapominają.
Zauważ że ta funkcja jest w plikach które zawierają w nazwie DS18X20.* Jak myślisz po co one są ? Masz tu po prostu przykład użycia funkcji nadrzędnych w magistrali 1wire do obsługi właśnie tych czujników. Zamiast więc pomijać tę czy inną funkcję dodaj kilka stałych do pliku *.h oraz lekko przerób te funkcje do wyszukiwania również twoich urządzeń na...
Poza tym, że reset dotyczy maszyny stanów w urządzeniu 1-wire, a nie całego urządzenia, to cześć bajtów ze scratch pada to są komórki pamięci EEPROM - akurat nie te od temperatury, ale np. od alarmu już tak.
Mianowicie: czy bezpośrednio za wysłaniem komend match rom, następnie adresu, rozkazu konwersji mogę przejść do wysłania podobnej sekwencji dla kolejnego czujnika czy też zanim to zrobię muszę "puścić" reset? Nieudany Match ROM wymusza wykonanie resetu: https://obrazki.elektroda.pl/3178936300_... Skoro chcesz kilka czujników zmusić...
Chyba musisz doczytać dokładniej... 1. Wysłanie jednego BAJTU przez UART przekłada się na wysłanie jednego BITU przez 1wire. 2. Wysyłać można tylko 0xFF albo 0. 3. Odczyt inicjowany jest przez mastera - musi on nadać 0xFF żeby cokolwiek przyszło. 4. Odczyt jednego BAJTU z UARTa przekłada się na odczyt jednego BITU z 1wire. Ty zaś wysłałeś od razu 0x33...
Już sobie poradziłem: 1. nieprawidłowa kolejnośc: reset, wymuszenie przetwarzania i odczyt 1wire 2. użyłem kompilatora fastavr32.exe No i wszytsko jest OK :) FastAVR, coraz bardziej mi się podoba.
Pokładałem sobie urzadzonko które ma czytac z czterech ds-ów temperature, wszystkie cztery sa na jednej magistrali z zasilaniem osobnym, (trzy kable) wyswietlacze na których ma byc pokazana temperatura to zwykłe 7-mio segmentowe led-y, multipleksowane w przerwaniu od timera (przerwanie działa tylko w momentach kiedy ds czeka naprzykład na impuls strobujacy...
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...
To tylko potwierdza że trzeba jednak kwarc zewnęrtzny. Ja przeprowadziłem wiele prób i doszłem do wniosku że ten wewnętrzny to można ustawiać dla magistrali I2C,1wire tylko dla odczytu numeru (pomiar temperatury już jest błędny). Pozdrawiam i czekam na efekty pracy.
z kopiowałem Do.....Loop i temperatura działa ale mruganie nie ustało . Kolega LChucki ma racje ale wcześniej nie zagłębiałem się szczegółowo w 1wire i nie spodziewałem się ze będą kłopoty. Wcześniej robiłem sterowniki temperatur na zasadzie zał/wył grzałkę i to działa do dziś. Próbowałem wcześniej procedurę odczytu 1wire władować do przerwania (przejścia...
Witam, Dla sprawdzenia zostaw kod w takiej postaci jak masz. Zmień tylko linijki config pind.5 = input config 1Wire = pind.5 Jesli to nie pomoże to: zamień jeszcze: PRINT B na np PRINT "123" i zobaczysz czy odczyt 1Wire wpływa na port UART.
Witam Mam problem jak w temacie. Plik to procedura zapisu i odczytu 1Wire. Po skompilowaniu pliku wyrzuca 14 błędów. Po dodaniu na początku $MOD52 program wyrzuca tylko 7. Zawartość w załączniku (zrzut pliku 1wire.lst). Być może problem jest w tym że skopiowałem zawartość pliku *.a51 i wkleiłem całość do ASM. Używam 8051 CROSS ASSEMBLER. Jak to inaczej...
ok ale dla mnie cala funkcja do odczytu 1wire jest krytyczna wlasciwie. nie wylacze przed nia przerwania a wlacze po niej bo na wyswietlaczu bede mial to samo jak w przypadku kiedy funkcje wrzucam bezposrednio do przerwania. wedlug symulatora funkcja wykonuje sie 150 ms.
Problem jest w sprzęcie a nie w programie. W układzie brakuje kondensatorów ceramicznych 100nF na pinach zasilających uC, LCD, czujnika, wejściu ADC. Nie widzę też filtru na AVCC oraz jakiegokolwiek tantala/elektrolita na zasilaniu. Popraw zasilanie a zamiast analogowego czujnika użyj cyfrowego np DS18B20 na 1Wire.
Przerwanie żeczywiście wtedy nie zakłuci pracy 1wire ale sam odczyt 1wire zakłuci czestość występowania przerwania - it o jest powazym ograniczeniem w stosowaniu tego. ... A w jaki sposób 1wire , zakłóci częstotliwość występowania przerwań :?: Nie rozumiem :| Ostatecznie , można zastosować automat i obsługę 1wire upchać do procedury przerwania.Jeśli...
(at)ElektrodaBot Napisz zatem kod takiej procedury i zawrzyj w nim także funkcje protokołu 1wire (odczyt i zapis bitu oraz bajtu i.tp. z obsługą błędów) w avr gcc
Staram sie napisać programik w Bascom, który odczyta mi numery seryjne z termometrów dallasa DS1820 (docelowo 3-4 termometry) ma go zapisać w pamieci eeprom procesora, a nast ma być odczytany. Na końcu użyłem komendę dla wyświetlenia na lcd ale jakoś mi to podejżanie działa ponieważ nie wyświetla mi znaków a tylko jakieś "9". Może źle odczytuje lub...
Wynik temperatury jaki uzyskał jest efektem odczytania samych jedynek z magistrali 1wire, czyli czujnik nie odpowiedział.
https://pl.aliexpress.com/item/100500180...
Tak się "macha" magistralą 1wire ;) //inicjacja DDRC&=~(1<<PC0); //PINC bit numer 0 - wejście PORTC&=~(1<<PC0);//bez pull-up'a - high impedance //reszta operacji DDRC|=(1<<PC0);// 1wire=0 DDRC&=~(1<<PC0);// 1wire=1 x=PINC & (1<<PC0);//odczyt 1wire Złożyć do kupy,dopisać...
A mam pytanie - ile trwa odczyt z takiego DS18x20 ? Bo słyszałem że odczyt z 1Wire trwa długo. Jeśli czujników będzie 10 sztuk to boję się że wszystko będzie "zamulone".
No to można też na karcie dane zapisać 8-mio bitowo a w uC przerabiać je na 6-ci bitowe i takie wysyłać na LCD. Wtedy przynajmniej sam odczyt z SD się przyspieszy.
Na Atmega162 działam z 1w i przerwaniami do obsługi wyświetlaczy 7seg, transmisji RS i jeszcze jakiegoś timerka. Przerwania wyłączone na czas zapisu/odczytu bitu i nie ma problemu. Wklej może funkcje zapisu/odczytu bitu.
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...
Oczywiście ,że $crystal nie przestawia wewnętrznego oscylatora ale informuje kompilator z jaką częstotliwością pracuje procesor. Częstotliwość swojej Atmegi przestawiłem za pomocą Bascomowego programatora (stk200).Ustawiłem 0011 i kliknąłem na Write FS i od tej chwili przy zczytywaniu(otwarcie zakładki lock and fuse bits)programator podaje wartość...
Nie myślałeś o DS18B20 1wire do odczytu temp?
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ą...
$crystal = ? ;)
na wbudowanych timerach może być problem bo na czas odczytu temperatury z 1wire nie mogą się właczyć żadne przerwania
Człowieku... :) Nie musi być bardziej prawidłowo :) Ma działać. Cały program jest gotowy. Pominąłem odczyt DSów w przerwaniach, bo nie działało, i zrobiłem po prostu, po zapytaniu przez RS. I tak może być. Trzeci raz piszę, że odczytuję komendy z RS poprzez input. No przecież to nie będzie działać w przerwaniu. A przerabianie tego na jakieś inne procedury...
Masz na myśli odczyt wbudowanego ADC? Szczerze mówiąc to kiedyś się tym bawiłem i nie pamiętam problemów z ADC, chociaż mogłem po prostu nie zauważyć. Pamiętam że problem z odczytem to był z DS18B20 pod 1wire, pierwszy odczyt był zawsze do kitu, następne jednak były OK, ale to raczej nie był błąd Bascoma.
Witam. Realizuję właśnie odczyt temperatury na płytce Nucleo z wykorzystaniem ds18b20. Mam następujący problem. Odczytując LSB i MSB z czujnika pojawia się błąd w postaci tego że MSB ma wyższą wartość niż można by było zakładać. Po odczycie temperatury wyrzuciłem sobie obydwie wartości na konsolę przez UART. W temperaturze pokojowej widać że LSB się...
Witam, czy ktoś posiada działającą procedurę odczytu licznika z układu 1wire DS2423 w Bascom? Pozdrawiam Darek
http://www.elektroda.pl/rtvforum/viewtop... Popełniłem kiedyś taką zabawkę, w powyzszym linku w załączniku jest kod w bascomie, na at90s2313 ale to praktycznie to samo co attiny2313 obecnie bascomem sie nie zajmuje ale na tej stronie http://mikrokontrolery.net/avr_asm_10.ht... (ASM) oraz http://mikrokontrolery.net/avr_c_10.htm (kod...
A nie prościej napisać ten program tak? Do Config 1wire = Porta.7 Gosub Odczyt Config 1wire = Porta.6 Gosub Odczyt ... xx=1 Loop Odczyt: 1wreset 1wwrite &HCC 1wwrite &H44 Wait 1 1wreset 1wwrite &HCC 1wwrite &HBE Temp(1) = 1wread() Temp(2) = 1wread() 1wreset If Temp(2) >= 248 Then Temp(1)...
Można wykorzystywać wewnętrzne podciąganie. Urządzenie slave 1wire może jedynie ściagać linie 1wire do masy i dlatego jest konieczne jakiekolwiek podciąganie. Moje procedury wykorzystują sterowanie 1wire przez właśnie rejestry PORTx. Przy odpowiednie dobranych czasach pozwala to uzyskać transmisję na bardzo długich liniach (udalo się uzyskać transmisję...
Ja w Skodzie popełniłem kiedyś taki prosty zegar z pomiarem dwóch temperatur , oraz pomiarem napięcia na akumulatorze. No ale to ma się nijak do w/w projektu. Możesz wycenić ile Cię kosztował ? Bo wyświetlacz z dotykiem to najdroższy element ? PS. Fragment kodu z mojego jakby kto chciał jednak zrobić z gotowca :) [syntax=vbnet] $regfile = "m8def.dat"...
Na zagramaniczych kanałach hvac mówili że do 1K spadku jest ok powyżej nie. I dobrze mówili. 1K spadku ciśnienia, co brzmi może dziwacznie, ale dla ludzi z branży jest OK. A ten 1K wyznacza różne ciśnienia w zależności od rodzaju czynnika i zakresu temperatur. weszło 1.2kg czynnika R32 j Przelicz sobie masę czynnika w dla średniej temp skraplania i...
Oczywiście , że wpisując : Config 1wire = Porta.1 zablokujesz odczyt z Porta.0 Musisz przed odczytem z Porta0 , wpisać w programie Config 1wire = Porta.0 a następnie gdy będziesz odczytywał z Porta.1 wpisujesz linie Config 1wire = Porta.1 Czyli , najpierw konfiguracja z której linii potem odczyt.
W jaki sposób odczytać temperature z trzech czujników ds1820 podłączonych do 1WIRE. Może ktoś ma przykładowy program w Bascomie, assemblerze.
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,...
Pisałem ze chce napisac program w BCB (Borland C++ Builder) ale na PC! Kawałek kodu w bascomie pokazuje jedynie zasade odczytu po 1wire, a czujnik jest na przystawce ds9097e. Czy ta przystawaka powoduje, że zapis i odczyt realizowany jest jak do urządzenia sterowanego RS-em?? Dodano po 1 Nie potrafię sie zkomunikować z tym czujnikiem w Builderze, jeśli...
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...
Piszesz o testowaniu po kolei każdego bitu. O jakie bity chodzi? Bo tego nie załapałem. Jeśli piszesz o możliwych czterech stanach to co masz na myśli dokładnie? Idea jest taka, po instrukcji Search ROM dokonujesz dwa odczyty (w sensie magistrali 1wire, czyli odpowiednie impulsy odczytujące), najpierw urządzenia które mają pierwszy bit zero zwierają...
Rozumiem. A teraz mam małą zagwozdkę: 1. Wysyłam żądanie konwersji. 2. Startuje timer1 generując przerwanie co ok. 2 sekundy. 3. Skok do obsługi przerwania, a w niej żadanie odczytu 1wire i pobranie dwóch bajtów danych. 4. Powrót do programu głównego. 5. W programie dokonuję niezbędnych przeliczeń i operacji na zmiennych. Dobrze kombinuję, czy nie bardzo?...
Wspaniały projekt. Mam pytanie: co to za akcelerometr i jak się komunikuje z prockiem (przez 1wire)?
http://idom.svn.sourceforge.net/viewvc/i... Pliki 1wire i DS1820 oraz odpowiedniki w katalogu src. Zdziala z tyloma czujnikami na ile starczy ci pamieci do przechowywania ID. Co prawda w C++ ale na AVR i banalne do przerobienia na C.
No to faktycznie muszę takie coś dopisać. No a jakby dopisać tylko IF-a który uzależni spadek napięcia poniżej 4V i wyzeruje piny przez które porozumiewa się z LCD , ELSE zrobi init , czyli jeszcze raz przypisze kontrolę (co na którym pinie przy Config LCD). [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin =...
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);//...
BASCOM generuje prawidłowy kod do obsługi 1wire tylko dla częstotliwości zegarowej 12 MHz. Dla przeanalizowania tego przypadku przytaczam poniżej procedurę odczytu bajtu z linii 1wire przetransponowaną żywcem z BASCOMa do assemblera. ;***************************************... ; Odczyt 8 bitow z urzadzenia 1wire, poczatkowo...
Mam takie zadanie o tak podyktowanej treści "Switch odczyt". Jest to zagadnienie do tematu 1wire. I mam takie pytanie bo nie wiem co rozumieć pod tak skrótowo podaną treścią czy chodzi może o to, że mam do mikrokontrolera np. 8051 podłączoną szynę 1wire i następnie do tej szyny podłączonych parę urządzeń i mam sczytać numery seryjne tych urządzeń na...
Skoro tak , to może masz coś nie tak z timingami( delay_us() ) na 1wire :?: Piotrek
Według mnie to procedura odczytu powinna wyglądać tak Odczyt_1czujnik: Config 1wire = Portc.3 1wreset Temp = 1wread Upperline Lcd Temp ; "'C" Odczyt_2czujnik: Config 1wire = Portc.4 Iwreset Temp1 = 1wread Lowerline Lcd Temp1 ; "'C" lecz moge się mylić bo nigdy nie używałem 1wire
Zmniejszyć rezystor podciągający, skorzystać z CRC, zmodyfikować czasy w kodzie obsługi. Bzdurny odczyt to brak weryfikacji CRC, tylko. Ilość błędnych ramek można zmniejszyć poprzez korektę okien czasowych 1wire, szczególnie na długich przewodach. W trybie pasożytniczym nieprawidłowy pullup na czas konwersji zwróci temp. 85. Rezystor pociągający ma...
_delay() w pętli mam tylko tam, gdzie to konieczne - w obsłudze interfejsu 1Wire, aczkolwiek odczyt temperatury z termometru przy użyciu takowego interfejsu może trwać nawet ~800ms.
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...
6x ds18b20; Ale Kolega nie będzie używał overdrive Co więc oznacza Praktyka mówi że 1wire ma jeszcze bardzo szybki reset. Tak że układ i2c <> 1wiire na pewno się wyrobi. ? W czym ma się wyrobić I2C<>1wire?
Puść DS z odczytem, pomoarem ciągłym i po bólu. Na początku programu ustaw go do ciągłego pomiaru i przy odczytach będziesz miał wrtość z ostatniego pomiaru.
Masz poniżej zawartość dwóch plików, które trzeba podmienić: [syntax=c] #include <util\atomic.h> #include <util\delay.h> #include <avr\io.h> #include "1wire_basic.h" uint8_t Error; uint8_t PinMask; void OW_SendBit(bool bit) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { DDRB |= PinMask; _delay_us(3); if(bit) DDRB &= ~PinMask; _delay_us(60);...
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
Gdyby nie biblioteka "1-wire" to obciążenie procesora byłoby bliskie zeru. Kernel ma obsługę 1wire i odczytu temperatury z DS18B20, wystarczy załadować odpowiedni moduł modprobem, więc nie trzeba robić tego w userspace.
Witam, Czy ktoś z Was ma doświadczenie jak szybko w OWFS pojawia się podłączony układ 1wire? Nie pytam o odczyt na przykład temperatury, ale zanotowanie podłączenia nowego układu, czyli odczyt unikalnego numeru. Załóżmy że RaspberryPi jest włączone, OWFS odpalony w tle, jakiś dowolny układ 1wire podłączony do odpowiedniego pinu i włączamy mu zasilanie....
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...
Witam Właśnie sobie projektuję taki dość prosty układzik; Atmega162-16AU, do niej podłączone 4 DS18B20. Chcę sterować z procesora 4 wyjściami PWM - 2 będą regulować 12V taśmy LED, a 2 wentylatory 12V (takie "komputerowe" powiedzmy). Całość pod BASCOMEM (nie znam C niestety), a jako jeszcze zielonkawy, mam tu pewną wątpliwość - obawiam się jednego problemu;...
... do czego służy przycisk... Wciśnięcie tego przycisku, powoduje jednokrotne wykonanie programu głównego. DS1990A - odczytanie ID DS18B20 - odczyt temperatury
Na tak- automat akwariowy, ale nie tylko. skoro ma załączać 8 urządzen o różnych porach dnia to może przydać sie to urządzenia do czegoś jeszce. Termometr na ujemne temperatury też może sie przydac, no moze nie rybką... po co ograniczać możłiwosci urządzenia, jesli niewielkim (żadnym )kosztem można dodac jakieś funkcje wracając do tematu. wywaliłem...
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 {...
Sam jestem ciekaw czemu to się sypie. Osobiście dałbym odczyt i zapis 1wire w momencie wygaszenia wszystkich wyświetlaczy... To czy wyświetlacz świeci czy też nie świeci, nie ma żadnego znaczenia. Ale ... ciepło. Bardzo podobny temat był już kiedyś poruszany, ale kto by tam używał "szukajki" :( LINK
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...
Również miałem problemy z odczytem i wystarczyło tylko zmienić ustawienie bitów konfiguracji na 4MHz. Na dodatek z tego co pamiętam to miga napis na wyświetlaczu ponieważ jest cały czas czyszczony ekran: Cls : Cursor Off : Lcd "* Temperatura *" zmieniłem to na: Cursor Off : Lcd "* TEMPERATURA *" Lowerline : Lcd "Wynik: " ; Napis ; " " ; Chr(1) ; "C"...
http://obrazki.elektroda.pl/8836607800_1... Witam Chcę przedstawić konstrukcję termostatu 4 Kanałowego z wyborem trybu pracy. Układ wykonany na Atmega 32 a program napisany w poczciwym Bascomie. Wyświetlacz ma 4 wiersze po 20 znaków Zastosowane czujniki temperatury firmy Dallas DS18B20 Sterowanie jest za pomocą 4 przycisków (menu, up,...
Bascom, bo z C stawiam dopiero pierwsze kroki. Config 1wire = Portb.0 1wreset 1wwrite &HCC 1wwrite &H44 Config 1wire = Portb.1 1wreset 1wwrite &HCC 1wwrite &H44 'odczyt waitms 750 Config 1wire = Portb.0 1wreset 1wwrite &HCC 1wwrite &HBE temp(1) = 1wread(2) T = temp(2) Shift T , Left , 8 T = T + temp(1) T1 = T * 0.0625...
Witam, Czasówki 1wire do zmiany. Sprawdzaj CRC numerów seryjnych.
Witam, Nie będę się znał to będzie okazja się czegoś nowego nauczyć. "Nie róbmy nic - nie będziemy mieć nic." Kolega wyżej pisał że warto przejrzeć jak to wszystko wygląda. I mi będzie łatwiej i może i WAM jak będzie potrzeba. Może ktoś temat obserwuje z podobnymi umiejętnościami i nie popełni tych błedów co ja. Wklejam pdfy. Słuszna uwaga. Jak pisałem...
To fakt, chodzi o program w Bascomie. Konkretnie wykorzystuje Bascomowy zegar z kwarcem 32767 Hz, z tego co wiem, pracuje to na Timerz 2. Co jedną sekundę odczytuje temperaturę z 4 DS18B20 na jednej magistrali. Nie wiem czy to wykorzystuje timer i który. Do tego w przerwaniach wywoływanych przepełnieniem Timera 0 lub 1, które miały występować z częstotliwością...
Może zanim się zdecydujemy na jakiś język to szybkie pytanie: Jak jest szybkość wykonywania kodu na tych modułach? Domyślam się że to działa na zasadzie interpretowania kodu. A więc C czy BASIC w tym przypadku to jedynie składnię mają z tych języków. Więc szybkość zależy od interpretatora. A więc to nie C jest lepsze czy gorsze, tylko interpreter. Ale...
Najlepiej jakbym to na początek zobaczył rozbite na poszczególne operacje, czyli np.: B = X3 B = B and &b00000001 B = B or X2 ;) Wymyśliłem sobie taki oto enkoderek: http://obrazki.elektroda.net/68_12128818... - odczyt leci po 1wire i mam bajt w kodzie greya, który musze przekonwertować do kodu naturalnego, ale chciałbym to zrozumieć dlatego potrzebuję...
Czy budowałeś układ z komunikacją przez I2C na PCB? I czy opisane przez Ciebie problemy dalej występowały? Unikam I2C jak ognia w swoich konstrukcjach. Tak jak wspomniałem wcześniej, miałem przypadek wywalającego się I2C na płytce. Zakłócenie wygenerowane przez typowy przekaźnik 12V/230VAC 16A powodował absolutny zwis MCP23008... Myślisz, że to ogólnie...
czyli jak przykładowo dam: [syntax=basic4gl] do if flaga = 1 then 1wreset 'reset 1wwrite &H55 1wwrite &HCC 1wwrite &H44 'dokonaj konwersji end if if flaga = 2 then 1wreset 'reset 1wwrite &H55 1wwrite &HCC 1wwrite &HBE Temperatura(1) = 1wread(2) 'odczytaj dwa pierwsze bajty end if 'DALSZA OBRÓBKA DANYCH.... 'inne rzeczy - obsługa przycisków czy coś innego......
Może nic konkretnego tu nie poradzę (bo nie znam na tyle "C") ale napiszę, że pomysł jest trochę zakręcony. Jeśli taki musi być to proszę nie czytać reszty. Jeśli nie to podłączyłbym czujnik temperatury do ATMEGA8 po 1Wire, a MEGĘ do PC poprzez RS232. Będzie można bez problemu czytać temperaturę jak i dane z uC. Podłączenie MEGI po 1Wire będzie wymagało...
Gotowego programu nie mam, poniżej masz funkcję obsługi 1wire bez których się nie obejdziesz, musisz zrobić sobie tylko odpowiednie funkcje opóźnień, w listingu funkcje nazywają się np. waitus(x) -tzn czekaj x mikrosekund lub waitms -milisekundy, wait10us(x) -10*X mikrosekund itd. dodatkowo musisz przejrzeć aplikację i dopasować komendy, #define MATCH_ROM...
piszesz portd.0 i jest ok. moze przyslij listing to sie zobaczy. sprawdz w EP 11/2004 tam jest prawie wszystko na temat 1wire
Witam. Chciałbym odczytać temperaturę z czujnika DS18B20 przez długie i krótkie migania diodą. Np gdy mamy temperaturę 25 stopni to dioda sygnalizowała by dziesiątki za pomocą dwóch długich piknięć a jedności poprzez 5 krótkich. Dopiero zaczynam zabawę z Bascomem i kompletnie nie wiem jak się za to zabrać. Poniżej wklejam fragment kodu z odczytem temperatury....
A jest jakaś inna opcja przez którą nie mogę połączyć się przez ten 1wire z ds'em?
Na końcu przerwania, zerujesz flagę (Reset Flag), nazwijmy ją "flaga końca przerwania", a przed każdym odczytem czy zapisem (przed każdym 1Wire...) czekasz aż ta flaga zostanie wyzerowana. Gdy to się stanie odrazu odczytujesz/zapisujesz dane z szyny 1wire i wtedy przerwanie nie powinno przerywać tych odczytów. Do oczekiwania na wyzerowanie flagi wykorzystaj...
Po odczycie powinna byc resetowana magistrala 1wire i wynik dzieli sie przez 2 nie przez 16 jak to jest w DS18B20
Czy magistrala 1wire jest podciągnięta do zasilania przez rezystor 4,7kΩ ?
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...
DS1820, DS18B20, DS18S20 (koszt - kilkanaście złotych/szt. ale oszczędzisz na kablu :) ) Przy odległości do czujników rzędu kilku- kilkudziesięciu metrów jesteś całkowicie uniezależniony od wszystkich niestabilności związanych z analogowym pomiarem, a I2C to zasieg rzędu centymetrów... Jak trochę poszperasz to znajdziesz mnóstwo przykładów odczytu temperatury...
A ja osobiście proponuje zrobić proste sterowanie i odczyt linii z użyciem dwóch tranzystorków bipolarnych. 1Wire będzie chodzić i nie będą na kontrolerze robić wrażenia przepięcia.
Jednak pojawił sie mały problem. W sposób jaki podłączyłem adapter wykrywa tylko 2 czujniki, może być podłączonych kilka ale wykrywa tylko 2. Proszę o podpowiedź co z tym tematem można począć? Ogólnie zależy mi na podłączeniu 8 czujników 1wire ds18b20 przez usb. Pozdrawiam
Zgaduję, że kompilator nie analizuje częstotliwości kwarcu przy konwersji poleceń 1wire bo w tym wypadku kompilacja polega na podstawieniu gotowych procedur w asm. ... Dobrze zgadujesz :wink: , ale dotyczy to Bascom8051.Dla BascomAVR, parametr "$crystal" ma niebagatelne znaczenie ,gdy używamy poleceń 1wire. Polecenia te działają dla szerokiego zakresu...
Dzięki za pomoc. Mój program był ok. nie dałem 2,2k (1wire - vcc) i dlatego nie chciał czytać
Po załączeniu zasilania czytam sobie przed pętlą główną z EEPROM-u pewne nastawy. Niestety czasami powiedzmy 1 na 5 odczytów jest nieprawidłowych. Wartość zapisana jest dobra, natomiast odczyt jest nieprawidłowy. Wiem to stąd, że jeżeli jeden z odczytów jest nieprawidłowy, to po wyłączeniu zasilania i ponownym jego załączeniu kolejny odczyt jest prawidłowy,...
Poczatkowo myslalem o plytce jednostronnej, ale po wstepnej przymiarce widze, ze nie ma sensu i dam dwustronna. (at)MirekCz wlasnie o cos takiego mi chodzi. (at)Crazy_phisic - zasilanie tak , trafo, TL7805 i oczywiscie kondensatorki. Bloki moglbym wyroznic nastepujace. zegar RTC na 1wire odczyt temperatury 8 wyjsc podlaczonych do triakow ukladzik pod...
Na pewno wysyłanie bajtów jest złe - opóźnienie pomiędzy SET_DQ na końcu wystawienia jednego bitu a CLR_DQ przy następnym bicie - jest (a właściwie go nie ma) zdecydowanie za małe. Odczyt też zresztą jest niepoprawny - na jeden bit powinno przypadać dla bezpieczeństwa 60us, tutaj jest 18us w funkcji ow_read_bit oraz kolejne 9 w ow_read_byte - nawet...
Obsługa 1wire w przerwaniu to porażka do tego jeszcze waitms. W przerwaniu ustawiaj tylko jakąś flage i na jej podstawie czytaj 1wire w pętli głównej. W trakcie odczytu blokuj przerwania - i tak nie są wtedy potrzebne.
1wire odczyt numer odczyt 1wire ds18b20 czujnik 1wire
samsung syncmaster dioda falujące obroty zimny gaśnie serwisówka pioneer
Schemat zasilacza Samsung LE23R81W - gdzie znaleźć? Renault Trafic 1.9 dCi 2006 - Głośna praca silnika