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....
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...
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ę...
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
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...
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...
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...
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...
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...
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...
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ż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ą...
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...
Propozycja zmian $regfile = "m8def.dat" 'program jest pisany na procesor atmega8 $crystal = 8000000 'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 8Mhz '---------------------------------------... Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc. 4 , Db6 = Portc.3 ,...
azę dał bym rezystory np 12ohm toto-lotek, który skończy się zgonem obwodów pina... ;] No i błąd w nazewnictwie, mosfety nie mają bazy... Na pierwszy strzał możnaby się zastanowić po co autor raczył zastosować potężne mosfety na 100V i 14A do sterowania wiatraczkami na 12V pobierające w szczytach nieco ponad 1A prądu... Do tego z powodzeniem (i DUŻYM...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Pomyśl trochę nad "sprytem" kodu :D Chodzi mi o to że kiedy widzisz powtarzające się linijki kodu to powinieneś pomyśleć "czym one się różnią" i tylko te różnice napisać osobno a wszystkie powtarzające się sprawy napisać tylko raz. Po co tyle tych Locate 1,1 . Przeciez i tak i tak będziesz tę linijkę rysował od 1,1 zawsze, chyba że inaczej podejdziesz...
Tak, jak już pisałem, nie tędy droga. Trzeba zrozumieć, ze Menu czyli interfejs programu z człowiekiem powinno być tylko jego nakładką graficzną. Nie może być tak, że kiedy jesteś w Menu to program zaniedbuje cały system, na przykład nie pilnuje zadanych temperatur. Pomyśl co by było gdyby termostat sterował grzałką w akwarium a Ty sobie radośnie wszedłeś...
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
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...
Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak: * sterowanie wentylatorami czasowo * sterowanie poprzez odczyt temeratury 2 osobne funkcje (działa albo jedno albo drugie). Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych) OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których...
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.
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.
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
http://obrazki.elektroda.pl/4662811600_1... Kolejnym prostym projektem, jaki postanowiłem opublikować, jest higrometr do ultradźwiękowego nawilżacza powietrza.W zeszłym roku podczas mrozów wilgotność spadała tak mocno, że mimo mojej generalnej odporności na różne dziwne warunki, stawało się to nieznośne. Ciągłe uczucie zapchanego nosa,...
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,...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
Witam. Od paru dni pracuje nad swoim projektem komputerka do samochodu na ATMEGA8. W założeniu będzie miał funkcje: - pomiar temperatury wewnętrznej i zewnętrznej - pomiar napięcia w instalacji samochodu - pomiar poziomu paliwa w baku - pomiar ilości spalonego paliwa - ostrzeżenie o nie zapalonych światłach przy odpalonym silniku. - migająca sygnalizacja...
Cześć, czy ktoś może polecić sposób w jaki mogę z czujnika 0-20mA udostępnić odczyt po np. modbus? Ewentualnie czy jest jakiś sensor 1wire który odczyta mi wartości z pętli? Szukam od kilku godzin podobnego rozwiązania, ale albo mam pecha albo faktycznie nie ma czegoś takiego na rynku. pzdr, p.
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
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...
Proszę bardzo[syntax=basic4gl] 'Copyright Robert Wołgajew, 2012 'Wersja z dnia 26.04.2012 $regfile = "Attiny2313.dat" $crystal = 1000000 'Fusebit CKDIV8 = 0 -> zaprogramowany (ustawienie domyślne producenta) $hwstack = 32 $swstack = 32 $framesize = 32 'Konfiguracja wyświetlacza LCD Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.2...
http://obrazki.elektroda.pl/6119295500_1... Witam forumowiczów, jestem autorem modułu TTMSB, którego szerszy opis zamieściłem na swojej stronie internetowej 1. Cele Celem projektu była budowa modułu który za pośrednictwem otrzymanych z portu USB lub UART instrukcji będzie realizował następujące funkcje: - sterowanie dwoma silnikami DC, -...
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...
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.
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...
[youtube]https://www.youtube.com/watch?v...
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".
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 Implementacja procedury przeszukiwania magistrali 1-Wire oraz podstawowych funkcji protokołu w AVR GCC wymaga dość szczegółowego podejścia. Poniżej przedstawiam przykładowy kod, który zawiera podstawowe operacje...
Dokładnie tak jest, ale tylko co któryś odczyt temperatury, wtedy to przerwanie blokuje się i spada częstotliwość odświeżania wyświetlaczy co skutkuje widocznym mrugnięciem wyświetlacza. Co takiego mogłem skopsać ? A może ATMega32 tak ma ?
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....
http://obrazki.elektroda.pl/3622659500_1... Witam, chciałbym przedstawić swoją prototypową konstrukcję dotyczącą 1wire i słynnych czujników DS18, jak każdy układ powstał z potrzeby. Ten projekt jest Aktualizacją obecne używanego starego dosyć układu AVT AVT5330(8 x DS18) opartego na Attiny2313 - Link do dokumentacji: crontab -e i na...
Ok. Czyli pozostając przy moim układzie: - wykorzystam _delay'e do 1Wire - zachowam rozdzielność komunikacji Chcę jeszcze zapytać czy wykorzystać pliki z katalogu rozdziału 24 o nazwie 1wire_basic.c (ona zawiera ATOMIC_BLOCK) czy 1wire.c? No tak - nie było pytania doczytałem, że jeden jest częścią składową drugiego .
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)...
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.
U mnie dziala tak: 1wire_1 Alias P3.0 Dim T As Word Sub 1wire1 1wreset 1wire_1 ' reset magistrali 1wire 1wwrite &HCC 1wire_1 ' zaadresowanie DS'a - skip rom 1wwrite &H44 1wire_1 ' polecenie dokonania konwersji Wait 1 ' dajemy czas na konwersję (wystarczy 750ms) 1wreset 1wire_1 ' reset 1wwrite &HCC 1wire_1 ' adres 1wwrite &HBE 1wire_1...
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...
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...
Po odczycie powinna byc resetowana magistrala 1wire i wynik dzieli sie przez 2 nie przez 16 jak to jest w DS18B20
1wire odczyt numer odczyt 1wire ds18b20 1wire odczyt numeru
telewizor troll naczepie schmitz migająca dioda schemat
wykrywacz ruchu schemat pralka siemens iq500
Schneider wieża audio – brak ustawień programów i pamięci stacji Najczęstsze usterki tablic interaktywnych IR, IFP, PCAP – brak dotyku, ghost touch, kalibracja