Witam Obsługuję czujnik DS18B20 w Bascomie. Czy czas pomiędzy kolejnymi poleceniami, tj. 1wreset , potem 1wwrite &H55 , potem 1wwrite &HCC ... itd. może być dowolnie długi, przykładowo -np 6 minut; 5 godzin; 10godzin czy też 10dni .... ? Oczywiście wysyła 1 polecenie, czeka, wysyła drugie itd. do końca... Czy są ograniczenia? NIE! Te czasy (timingi)...
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
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",...
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ć ;)
$crystal = ? ;)
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.
czytałem wolniej i efekt ten sam:(
Czy to aby nie standardowy błąd połączenia "bottom view"?
O wiele prościej dziękuję za pomoc kolegów i program:)
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ę :)
$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ć...
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...
I jesteś pewien, że masz wszystko poprawnie podłączone. Rezystor podciągający szynę 1Wire (środkowa noga DS18B20) do zasilania około 4,7k jest? Pod który pin(numer nogi) procesora masz podłączoną szynę 1wire? Jaki masz kwarc na płytce?
Przerwanie_0: 'co 2ms If Liczniczek_przygotowanie_odczytu < 400 Then Incr Liczniczek_przygotowanie_odczytu If Liczniczek_przygotowanie_odczytu >= 400 Then 'co 800ms odzyt DS Liczniczek_przygotowanie_odczytu = 400 Flaga_przygotowanie_odczytu = 1 End If End If Flaga_dodatkowa = 1 'do wykorzystania w innym sub- też co 2ms- to Twoje sterowanie...
Wyłącz przerwania na czas transmisji 1wire
Obsługa 1Wire w BASCOMie nie jest obsługiwana w przerwaniach. Możesz spróbować czegoś takiego: cli 1wreset 1wwrite &H55 sei cli 1wwrite B2 sei cli 1wwrite &H44 sei Chodzi oczywiście o porozdzielanie wszystkich instrukcji 1Wire sekwencjami sei,cli.
Jeśli te funkcje będą następować po sobie (niezależnie jak długi jest odstęp, bo na taki pozwala specyfikacja 1wire), to będzie to działać. Jeśli coś jakaś aktywność na linii będzie pomiędzy, to całą komunikację zerwie. Przygotowanie danych to 1wreset 1wwrite &HCC ' SKIP ROM czyli do wszystkich 1wwrite &H44 ' Start conversion i po 750 ms możesz odpytywać...
Czy port F w atmega128 po skonfigurowaniu jako 1WIRE będzie prawidłowo działał chociażby z czujnikami ds18b20??
Wklej komenty 1wire, bo ten fragment kodu nic nie mówi.
Tylko ważna uwaga: takie podejście to już zalążki tzw. pseudowątkowości. Wobec tego w programie nie możesz używać żadnych "normalnych" opóźnień. Sęk w tym, że Bascom z większością swoich gotowców (zawierających ukryte opierniczanie się w pętli) - w tym i obsługa 1wire to jedno wielkie opóźnienie... :P
Po pobieżnym przyjrzeniu się programowi nasuwają mi się takie wnioski. 1. Zadeklarowałeś wejścia, ale zostawiłeś je jako "pływające". Powinieneś port-y przycisków podciągnąć do plusa, czyli ustwić stan wysoki =1 2. Nie widzę deklaracji dla magistrali 1wire dla DS-ów i całej procedury odczytu i zapisu danych do pamięci. Być może to celowe na tym etapie,...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
Jesli ktoś miał by pomysł jak to ogarnąć w bascomie to bardzo proszę o propozycję. Pisałem kilka razy jak to zrobić ale jest jeszcze jeden sposób, napisz w Bascom nie używając Bascom - użyj dostępu do SFR.
WItajcie Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku. $regfile = "2313def.dat" $crystal = 16000000 Config 1wire = Portb.0 Dim T As Integer , Stt As String * 6 Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 800 1wreset 1wwrite &HCC 1wwrite...
Tak przerwania mogą zakłócać komunikację 1wire. Na czas komunikacji z DSem blokuj przerwania.
piszesz portd.0 i jest ok. moze przyslij listing to sie zobaczy. sprawdz w EP 11/2004 tam jest prawie wszystko na temat 1wire
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)...
Daj się przekonać do $crystal. Jeśli częstotliwość zadeklarowana jest różna od rzeczywistej to nici z 1Wire. Gdzieś czytałem, że przy 16MHz 1Wire w Bascomie nie chce chodzić.
hmm powiem tak ja tez na poczatku mialem z tym problem (ds18b20) ale problem sie zozwiazal, opoznienia --- ale jedno, ale nie przestawilem na kwarc zewnetrzny i prawdopodobnie cos bylo nie tak 1wire bo bez poprawiania programu - zadzialalo ;)
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...
Tak na szybko to powinno być: "Config 1wire = Portc.1" "8 MHz" "na razie" Gdzie masz "Config Lcd" i "Config LcdPin" ?
ło matko ;) po opisie kolegi atom1477 i po tej informacji, że "Bascom coś kombinuje" można by uznać, że napisanie sotu do obsługi 1wire to rzecz prawie niemożliwa dla zwykłego śmiertelnika. Tymczasem to co robi Bascom to absoultnie nie żadna kombinacja tylko normalne zachowanie - ponieważ to podtrzymanie stanu wysokiego na pinie portu jest niejako przygotowaniem...
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.
Witam. Kolega w powyższym poście odpowiedział już, magistrala 1wire nie ma nic wspólnego z Timerami w Bascomie. Posiada własne procedury, nie wiem dlaczego przenosisz procedurę do Timera. Podczas pomiaru temperatury za pomocą DS18b20 w czasie pomiaru występuje Waitms 750 ale to opóźnienie nie pochodzi od Timerów.
Nikt nie jest w stanie mi pomóc? nie wie wiem dla czego kontroler nie porównuje wartości Rozumiem że jesteś początkujący , ale nawet Ty powinieneś wiedzieć , że nie porównuje się zmiennej binarnej(Us) ze stringiem (Tmp) :( To tak , jak byś porównywał kilogram z czerwonym :D Poza tym , ten program jest niezwykle pamięciożerny(Fusing,Single). Jeśli ten...
A czy zdajesz sobie sprawę z tego, że przerwania "rozwalają" Ci transmisję 1wire :?: Poza tym, co z niżej wymienionymi dyrektywami Bascom-a :?: A jak powinno być poprawnie ??
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...
No to powodzenia z obsługą 1-wire w assemblerze. Jeszcze przez początkującego. Mój nauczyciel bawił się okrągły miesiąc i udało mu się :). I2c można dosyć prosto obsłużyć z poziomu asm, ale co do 1-wire to jak nie znajdziesz gotowca w assemblerze to sam nie zrobisz. Dla chcącego nic trudnego. Nazwy procedur mówią same za siebie. Magistrala na P1.7...
Z mojego doświadczenia z DS18B20 wynika: Procedury 1wire w Bascomie działają bez zarzutu. Oscylator wewnętrzny 8MHz jest jak najbardziej dobry i w niczym nie przeszkadza. Podciąganie 4k7 dla jednego DS na krótkim przewodzie jest zupełnie wystarczający. Dla np. 4 DS na kilkunastometrowych przewodach przydaje się 1k. Po co w instrukcji 1wwrite portc.1...
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.
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...
Witam, a 1wreset to ma magicznie wiedzieć którą magistrale ma zainicjować? :roll: Więc resetuje tylko tą magistralę która została ustawiona jako domyślna z użyciem Config 1wire . Pozdrawiam, GSM
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.
1wire equp1.3 Co się dzieje, w czym pomóc ? Nazwa w programie (portu, podprogramu itp.) nie może zaczynać się od cyfry. Takie rozwiązanie spotyka się tylko w Bascomie (właśnie 1wire).
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.
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...
A czy w takiej konfiguracji jak mam może niedziałać?Wieczorem bede testował te dwa rozwiązania.Czy jest możliwość zrobienia tego uśrednianai w bascomie?Jestem początkującym więc może jakieś przykładziki ktoś posiada? Dzięki za info
A to to co? Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Porta.1 , Db7 = Porta.0 , E = Portd.2 , Rs = Portd.3 Config 1wire = Portd.0
To może pokaż cały kod, ponadto po licha czytasz z 1wire 9 bajtów? I czy na pewno nie pomyliłeś VCC z GND (w datasheet jest widok od dołu kości)
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...
Gotowiec w asemblerze (nie mój, chociaż większość kodu piszę w asm, to akurat 1wire ubsługuje mi Bascom): http://www.boerde.de/~matthias/m8051/ds1...
Nie ma bata. Z ds na 1wire i multiplexem led musi mignać. I nie słuchajcie zadnych zapewnień że "mi nie miga". Napewno miga. rygory czasowe w ds to są us (mikrosekundy) i nie ma takiej możliwości żeby bascom się wyrobił. Mylisz się , jest bat :D Rozwiazanie? Zacząć stosować czujniki na I2C zamiast 1wire. ... A da radę na 100m lub dalej :?: Piotrek
Proponuje dodać dodatkową zmienną pomocniczą której zadaniem będzie pamiętanie że program zaczął działać nie jestem pewien tego rozwiązania z bascomem miałem doczynienia dość dawno temu ale możesz spróbować tego $regfile = "attiny25.dat" $crystal = 4000000 Config Portb.3 = Output 'przekażnik Config Portb.2 = Input 'włącznik typu microswitch...
z tego co mi wiadomo to zwykly ukladzik pracujacy na 1wire. czyli tak podlaczasz mase do ukladu i teraz tak zlbo podlaczasz 5 v i dane osobno albo razem. bo jesli razem wystarcza tylko 2 przewody ( 1 wire ;) ) przewod danych podlaczasz do ktoregos z wyprowadzen proca (nie zapomnij o wejsciach open collector - niektore nie maja pullupow) i teraz tylko...
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ś...
Z dwoma bajtami uC i Dallas w 5ms wyrobią się spokojnie. Problemem jest brak synchronizacji pomiędzy przerwaniami generowanymi przez Timer a funkcją Waitms. Ponieważ przerwanie występuje teraz co 5ms to można w nim ustawić flagę że własnie się zakończyło. Wtedy w pętli głównej możesz sobie spokojnie liczyć te flagi. 50x 5ms = 250ms co bardzo tu pasuje....
Program do czujnika temp ds18b20 ktory mierzy z dokladnoscia dwoch miejsc po przecinku. Sprawdzony ale tak jak juz koledzy mowili wyniki po przecinku bardzo czesto skacza Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 Config Pind.7 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pina.6 = Output Config Pina.7 = Output Set Portb.0 Set...
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...
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...
Też miałem problem z DS'ami. Dwa czujniki na kablach 3m (nie ekranowane) pod 1Wire. Zaczynał się grzać. Zastosowanie DS9503 jak na razie zlikwidowało problem. Na razie bo to za krótki okres żeby stwierdzić czy pomogło na 100%.
$crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 $baud = 4800 Config 1wire = Portd.7 Dim T1 As Byte Dim T2 As Byte Print "ala ma kota" Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 waitms 250 Waitms 250 waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE T1 = 1wread() T2 = 1wread() Print T1 ; " " ; T2 ;...
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ść
Pisałem w Bascomie procedura odczytu temperatury sprawdzona na at90s2313. Atmega8l prawidłowo wyświetla teksty na lcd więc nic nie zmieniałem na bitach konfiguracyjnych. Czy pomimo tego muszę coś zmieniać? Czy dla 1wire jest może przypisany konkretny pin? Dziekuję za zainteresowanie się moim problemem.
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ą...
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ć. O tym było nawet w help do Bascom, ale ja tego "cudu" nie macam z 10 lat (no moze 8). Pamiętam że problem z odczytem to był z DS18B20 pod 1wire, pierwszy odczyt był zawsze do kitu, następne jednak były...
Futrzaczek czy ten kod, który pokazałeś to cały kod czy po prostu uznałeś że początek jest nieistotny i dlatego go nie wkleiłeś. Cały. Nigdy wcześniej nie dawałem deklaracji $CRYSTAL i programy działały poprawnie. W Bascomie od zawsze ustawione było 4MHz (domyślnie). Nie pytać się jak, ale działało. Aż przestało. Grzebałem natomiast w fusebitach, mając...
hmm... a ja się bawiłem 1wire który działał z kablem 500m. Ale procedurki były pisane w C i nie były to procedurki "wbudowane" w Codevision. ale żeby to dobrze napisać potrzeba oscyloskopu
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...
Witaj! Co masz na myśli mówiąc "jednocześnie"? Masz na myśli immobiliser z termometrem w jednym? :) Ten przykład tutaj działa :) To niewątpliwie, bo kiedyś go uruchomiłem ... z pełnym sukcesem, tak więc musisz próbować :) Albo pisz co jest niejasne, co Ci nie działa, albo jakie masz błędy ... Ja teraz zmagam się z zegarem :) Chcę zrobić zegar ATMEGA8+PCF+właśnie...
Witam, To: If T(2) = 0 Then Temp = T(1) / 2 Else I = 256 - T(1) End If If Temp < 0 Then Set Portb.7 Temp = -temp End If nie będzie Ci działać tak jak się tego spodziewasz, bo w Bascomie typ BYTE jest bez znaku (0-255), ale zamień "< 0" na "> 127" i masz już prawie wszystko na talerzu. Tu też jest błąd: If T(2)...
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...
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...
Mogę to ekspresem napisać na dowolny AVR w tym Xmega lub np. mały Tiny85 w Bascom. Moje referencje ->Emulator DS18B20 -> https://bart-projects.cba.pl/1wire.html
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...
Witam, Problem udało się rozwiązać. Z zasilaniem wszytko OK. Na forum poczytałem o problemach obsługi 1wire w C i wpadłem na pomysł, że tu też może być problem z czasami. Mega była ustawiona na wewnętrzny rezonator 8MHz i widocznie DS miał za mało czasu. Zmieniłem na 4MHz i zaczęło działać. Pozdrawiam
Dziekuje za odpowiedz Tego kodu probowalem i wiem ze dziala.mam pytanie czy po zaniku napiecia badz restarcie programu czujka raz zapisana jako pierwsza zawsze edzie pierwsza a druga zawsze druga? co sie stanie jak jedna prestanie dzialac z sieci np 8 czujek? ale ja mam jeszcze inne zmartiwienie. powiedzmy tych czujek mam 8 i z kazdej spisalem adres...
Mam pytanie związane z tym termometrem - czy BASCOM wymusza stan wysoki na linii danych DQ magistrali 1WIRE na czas konwersji temperatury, w celu realizacji zasilania typu "parasite"? Jeśli nie - to pomiar może być obarczony dużym błędem ze względu na zasilanie czujników jedynie przez rezystory 4k7.
Napewno, bo tych procedur użyłem juz kilkanaście razy i zawsze działają. Config 1wire = Portd.7 ' Port 1 wire Może chodzi o to, ja mam portd.7 a nie pind.7 http://obrazki.elektroda.pl/2307501500_1...
A ile czekasz od rozkazu konwersji do odczytu? DS18B20 podczas konwersji pobiera dość duży impuls prądu. Jeżeli MASTER nie wymusza jedynki na linii 1Wire podczas transmisji, albo po niej (w stanie spoczynku), to napięcie na tej linii mocno spadnie i DS się zresetuje. Na szczęście BASCOM właśnie tak robi, ale możliwe że nie każda wersja.
1WIRECOUNT Przeznaczenie: Zwraca liczbę urządzeń podłączonych do magistrali 1Wire. Składnia: [syntax=basic4gl]zmienna = 1WIRECOUNT( ) zmienna = 1WIRECOUNT( port , pin )[/syntax] A także: [syntax=basic4gl]1wverify Reg_no(1) Print Err 'Err=1 gdy nie ma takiego numeru[/syntax] Zwróć uwagę na tajemniczą zmienną Err, która jest zaszyta w programie.
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,...
[url=http://www.elektroda.pl/rtvforum/to... post [/code] 100% podobny problem naj efektywniej będzie zrobić emulator ds18b20 2 przewody mnogość czujników standardowe procedury obsługi na różnych platformach Jetem z okolic Gostynia mam kody emulatorów w asm , c , i bascom potrzebuje pomocy przy przekonwertowaniu dla atmega8 bo takie mam...
Taka modyfikacja nie rozwiązuje problemu ( cykliczny zanik świecenia wyświetlaczy na około 1sek). Kod: Temperatura2: Config 1wire = Portb.4 1wr 'podprogram 1wr 1wwrite &HCC 'komenda skip ROM 1wwrite &H44 'rozkaz konwersji temperatury wait 1 'odczekanie jednej sekundy Return
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;...
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...
A od kiedy "Config 1wire" można ponawiać? Zastosuj raczej: 1wreset Pinb , 0 1wwrite &HCC , 1 , Pinb , 0 … 1wreset Pinb , 1 1wwrite &HCC , 1 , Pinb , 1 … 1wreset Pinb , 2 1wwrite &HCC , 1 , Pinb , 2 …
Zrobiłem kiedyś termometr z 1wire i multipleksowanym wyświetlaczem (4 znaki), ale nie mogłem pogodzić multipleksowania i transmisji. Albo sypały się dane i miałem błędne CRC, albo można było zauważyć mrugnięcie wyświetlacza kiedy zatrzymywałem przerwania dla wysłania/odebrania danych. 1wire jest dość wolne... Po prostu samo odebranie ramki z danymi...
heheh, już tak miałem wcześniej, ale przeniosłem ponownie tak ja mi napisałeś alien_audio i zastanawiałem się co mogłem popsuć, bo na logikę to po prostu MUSI działać :P Widać siedzenie do późna mi nie służy, bo... odliczanie sekundy trwało krócej, przez co 1wire nie zdążył konwertować, a już kolejne dane przychodziły do odczytu :P Tak to jest jak człowiek...
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ą...
Witam, od pewnego czasu meczę się z odbiornikiem IR na magistrali 1wire (dokładnie chodzi o tsop4836). Nie wiem jakie dane wyslac do niego... Pamiętam, że przy ds18b20 znalazłem sobie te dane w karcie katalogowej, ale w karcie tsop4836 nie ma takich informacji... Nie mogę znaleźć w internecie nic sensownego na ten temat... ...czy ktoś może pokazać mi...
licencja zabrania sprzedawać urządzenia będące slave'ami 1wire Zastanawia mnie ocena tego postu przez innych użytkowników - w chwili pisania mojego postu było to -5 :D Do autora: Do jakiego pinu procesora podłączyłeś emulowany pin 1W? W sensie czy wykorzystujesz jakieś sprzętowe peryferia typu przerwania zewnętrzne/ timer a może jeden z istniejących...
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...
Odczytuje z 1wire kolejno 9 bajtów danych do tablicy. Temperatura to liczba 16bitowa, pierwsze 8 bitów zapisanych jest w 1 elemencie tablicy 8 kolejnych w 2gim. Jakim poleceniem mogę połączyć te te dwie liczby aby otrzymać jedną 16bitową? Czy może ktoś ma jakiś inny sposób aby odczytać temperaturę i sumę kontrolną (1,2 bajt - temperatura, 9ty -CRC)...
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...
Mam mały problem z termometrem DS18B20. Dotyczy on "zrywania" transmisji przy temperaturze powyżej ok 45..50 degC (dwa dzialały do 65 C), w niższej temperaturze i/lub po ostudzeniu wszystko zachowuje się poprawnie. Przy obniżeniu napięcia zalilania DS18B20 (przy lini trójprzewodowej) do ok 4V temperatura pracy wzrasta średnio o 5K. Czy ktoś mial podobny...
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...
No nie.. tzn wiedziałem, ale nie stosowałem do tego takiego rozwiązania. Sprawdzę opiszę. Właściwie to masz rację z zasileniem termometrów równiez. Ja jednak jeszcze trochę będę trwał przy skrętce. Ale koledzy proszę o jedno... my nie rozmawiamy o zasilaniu termometrów i o ich działaniu lub nie, lub o błędnych odczytach. Sprawa się toczy o przełączniki...
Witam wszystkich na forum. Buduje układ który miałby sprawdzić ile urządzeń podłączonych jest do magistrali 1wire (termometry ds18b20) i wyświetlałby kolejno odczytane temperatury. Do rzeczy, problem tkwi w tym ze mój atmel po wykonaniu instrukcji : 1wreset Il = 1wirecount() zawsze znajduje max. 2 termometry nie zależnie od tego ile jest podłączonych....
Witam. Napisałem program w bascomie, zwykły termostat z wyjściem na przekaźnik. Mikroprocesor to Atmega8 + lcd + DS18b20 + 2 przyciski. Przerwania działają, lcd tak samo, jednak program nie chce odczytywać danych z czujnika. Sądzę że jest dobry gdyż tą cześć kodu która ma służyć do obsługi czujnika zaczerpnąłem z tego forum. Kod zamieszczam poniżej...
Takiego tematu nie znalazłem więc zakładam nowy. Otóż mam problem tego typu że: Posiadam Atmega 2560 ,podłączony do niej odbiornik RC5 (TSOP) , DS18B20 (1Wire) , a także kartę pamięci SD. W fusebitach przełączyłem się na razie na wewnętrzny oscylator i wyłączyłem Fusebit 7(clock divide by 8) . Jeśli mam ustawiony $crystal = 1000000 to transmisja z karty...
ds18b20 1wire 1wire bascom bascom 1wire
tyrystorowy moduł zapłonowy schemat schemat przewodów paliwa wieczna bateria
Phison PS2251-68 Firmware: Tools and Flashing Guide Moment dokręcania koła zamachowego Renault Trafic 2.0 dCi