Kasować licznik- a nie przerwania- na początek. Kasować licznik i musisz zastosować dwie flagi, inaczej nie da rady. Jedna sprawdzająca czy już możesz odczytać dane, drugie sprawdzająca czy już możesz wysłać żądanie odczytu:)
Chyba zapomniałeś o wysłaniu polecenia konwersji ;) 1Wwrite &hcc 1Wwrite &h44 <<<<----- WaitMs 250 WaitMs 250 WaitMs 250 1Wreset 1Wwrite &hcc 1Wwrite &hbe
Po latach trochę dziwnie się czyta te opisy. Teraz już chyba lepiej władam angielskim ahahahahaha :D [syntax=vbscript]$regfile = "ATtiny13.dat" $crystal = 1200000 $hwstack = 4 $swstack = 2 $framesize = 24 '***************************************... '* WIRELESS THERMOMETER * '* WITH CIRCULAR BUFFER * '* TRANSMITTER PART Tiny13 * '* bartek.niveasoft(at)gmail.com...
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)...
Łap. Cały tydzień programuję poważniejsze sprawy i taki programik to dla mnie dosłownie rozrywka :D Bierzesz Tiny85 i programujesz Hexem lub Binem do wyboru. Podłączasz do niego DS18B20 i linijkę na MAX7219 i gotowe... żonka zadowolona. Program ma nawet wyjście diagnostyczne i wypluwa temperaturę na UART 9600bps (to żeby sprawdzić poprawnośc Dallasa)....
Odnalazłem w czeluściach HDD ;) Sub Ds18b20eeprom_write(byval Thi As Byte , Byval Tlo As Byte , Byval Cfg As Byte) 1wreset 1wwrite &HCC 1wwrite &H4E 1wwrite Thi 1wwrite Tlo 1wwrite Cfg 1wreset 1wwrite &HCC 'zabyłech kruca fuks ;) 1wwrite &H48 Waitms 15 1wreset End Sub Piotrek
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)...
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...
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...
Tutaj masz przyklad w ktorym po kazdorazowym wcisnieciu przycisku zmienna zwieksza sie o 1: Config Pinb.3 = Input S1 Alias Pinb.3 Set Portb.3 If S1 = 0 Then Waitms 25 If S1 = 0 Then 'np. Incr twoja_zmienna End If End If A tutaj wcisniecie przycisku i jego przytrzymanie powoduje zmniejszanie sie zmiennej o 1 co 200 ms: Config Pinb.3 = Input If S1 = 0...
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,...
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...
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...
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...
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...
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
Help bascoma faktycznie podaje możliwość wpisania wartości do 65535. To jednak nie działa. Np. poszukaj kodu do obsługi ds18b20 (tam potrzeba 750 ms na konwersje temperatury) - zawsze używa sie 3 x waitms 250. Tak to już jest, teoria a praktyka to 2 różne sprawy... ps spróbuj zmienić config portb.2=output na config pinb.2=output. Fusebity służą do konfiguracji...
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...
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...
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...
W bascomnie ciężko zrobić LED + Ds18b20 wszytko psuje Waitms 750. Zwiększ do 8 a jak możesz do 16MHz kwarc. A od kiedy to musimy czekać 750ms nie robiąc nic innego? Od czego mamy timery? Przepraszam najmocniej Kolegę, ale jeśli Kolega tego zrobić nie potrafi to: 1. Nie oznacza że się tego zrobić nie da - ja nie potrafię zbudować komputera klasy PC...
Jarosław J --> po pierwsze postaraj się jak najszybciej robić odpowiednie wcięcia w kodzie to będzie łatwiej nie tylko nam tutaj na forum analizować twój kod - ale tobie samemu będzie łatwiej a to jest nawet ważniejsze ;) po drugie masz tam gdzieś w tej swojej pętli głównej coś takiego: Convallt ' "Convert ALL T on the 1w-bus" Waitms 1 czyli...
Witam ! Dodaję gotowy działający program do pomiaru temperatury. ATmega8 fabryczne fuse bity ( nic nie zmieniaj ). Program sprawdziłem z liniami które wtym programie są zaremowane, ze względu na łatwiejszą konfigurację na mojej płycie. $regfile "m8def.dat" Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4...
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...
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...
Zbytnio mi ta odpowiedź nie pomogła... To chyba niezbyt dokładnie przeczytałeś(zrozumiałeś) dokumentację DS18B20 :cry: Przypatrz się tabelce i zobacz, gdzie znajduje się rejestr konfiguracyjny, w którym zapisane jest, z jaką rozdzielczością ma "pracować" nasz DS. http://obrazki.elektroda.net/29_12275171... Zakładając, że nie znamy wartości...
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ą...
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...
Hey czyli problem jest w instrukcji Ss = Format(ss , " 0.0") wrzuć ten program i powiedz czy wszystko gra jeżeli tak będę pisał co zrobiłem. [syntax=basic4gl]$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) 'Deklaracja portów od wyświetlacza...
...Nadal mam problem z minusem, zastosowalem funkcje Abs i nie ma juz tego "automatycznego minusa" ale wszystko dziala dopuki stosuje Ttt = Abs(ttt) tylko do wskazan z jednego czujnika. gdy zrobie to samo dla drugiego mimo, ze stosuje dwie nazwy (Ttt1 i Ttt2) to ta funkcja przestaje dzialac i mimo ujemnych temp minus sie nie wyswietla. Co jest nie...
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...
informującego o zmianie temperatury co 1 stopień w górę lub dół To są założenia więc co każdy stopień ma być krótki sygnał. Warunek If T >= 200 then spowoduje że przekroczenie 20 stopni spowoduje sygnał. Muszę chwilę pomyśleć. Trzeba badać także różnicę pomiędzy odczytem poprzednim a następnym. Sprawdź to: (zmień procesor, konfigurację LCD, portów,...
Ja to zrobiłem na Attiny13, temperatura jest określona na stałe, taka byłą specyfika mojego projektu laminatora (do folii UV). Kod był zaczerpnięty z sieci, lekko go zmodyfikowałem. Pamiętam, że teoria nie pokrywała się z praktyką i musiałem wpisać temperaturę z przesunięciem o kilka stopni. [syntax=vbnet]' Uk³ad z sam¹ diod¹ dzia³ao...
$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '-- Wejscia przycisków Config Portd.2 = Input Config Portd.3 = Input ' -- podciągnięcie Set Portd.2 Set Portd.3 ' -- porty sterowania segmentami LED Config Portd = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output ' -- tranzystory Config...
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...
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
Problem rozwiązany było tak jak mówiłeś PIND.3 był zwarty do masy na ścieżce .Tylko teraz coś moje desy1820 są chyba uszkodzone bo pokazują na innym termometrze 10 stopni przy 22 w pokoju. Ale mam dwa desy 18b20 i są ok bo sprawdzałem . I kolejne moje zapytanie jak z tymi przeróbkami na ds18b20 . Czy trzeba pozmieniać Waitms 7 Waitms 500 I co jeszcze.
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.
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...
Waitms 750 musisz mieć przed odczytem.
Dobrze rozumiem, że na początku trzeba dostawić ... ? [syntax=vbnet] 1wreset 1wwrite &HCC 1wwrite &H44 waitms 750[/syntax]
W chwili gdy obsługuje 1-Wire, Bascom ZAWSZE nawet na czas generowania resetu, co trawa ok 500us, później presence, co daje razem ok 800us, zawiesza przerwania. To samo w czasie transmisji danych, transmisja bajtu to ponad 500us zawieszone przerwania. W tym czasie nie wykona się przerwanie od timera, od i cała tajemnica. Ale zabobony. Każdy może otworzyć...
Witaj W procedurze : Rf12_wrt_cmd_2: Rf_sck = 0 'Waitus 2 'USUNĄC TEN WIERSZ Rf_nsel = 0 'Waitus 2 'USUNĄC TEN WIERSZ Data_in = 0 For I = 0 To 15 Waitus 1 Rf_sdi = Data_out.15 Shift Data_out , Left , 1 Waitus 1 Rf_sck = 1 Waitus 1 Shift Data_in , Left , 1 Data_in.0 = Rf_sdo Waitus 1 Rf_sck = 0 Waitus 1 Next I Rf_sck = 0 'Waitms 2 ' USUNAĆ TEN WIERSZ...
ah.. to opóźnienie to nie jest problem przecież :) trzeba napisać własne opóźnienie zamiast polegać na waitms :)
Dobry wieczór. Przepraszam za tak dużą zwłokę, ale ostatnio miałem zakuwanie na egzaminy szkoleniowe do pracy i nie miałem kompletnie czasu by myśleć o tym:( Musiałbyś pokazać przykład swojego programu. Najpewinej efekty o któych piszesz wynikają z tego, że nie korzystasz z peryferii mikrokontrolera - m.in. timerów, przerwać itd. A na siłę starasz się...
Znalazłem chwile czasu i przerobiłem kod... Wykorzystałem twój kod do aktualizacji mojego termometru :D Poprzestawiałem tylko miejsca wyświetlania strzałek względem temperatury. PS. Warto by pomyśleć o sposobie wyświetlania strzałek jeśli temperatura się utrzymuje niezmiennie przez dłuższą chwilę. http://obrazki.elektroda.net/4_120902224...
Macie jakiś sposób jak odczytać wartość temperatury z DS18b20 nie wstrzymując głównej pętli programu? Chodzi o trzecią linijkę i magiczne 750ms :) [syntax=basic4gl] 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Bd(1) = 1wread(9) 1wreset [/syntax]
Witam nie czekasz na obliczenie temperatury powinno być waitms 750 . Wstaw waitms 750 w miejsce gdzie masz 'przeczekaj czas konwersji
Osobiście nic nie mam. Widziałem jedynie WAV player z takim generatorem na 25MHz na MCS. Mój największy overclocking to był w projekcie MIKA gdzie użyłem tego USARTfriendly 18432_000Hz bo wyświetlacz był duży i lepiej/płynniej to wyglądało. Niemniej wiem, że się da. Wiem, że procesor powinno się dobrać do zadania, ale jak ktoś pisze, że ma tak i tak...
Wrzucam tu procedurki którymi ja odzczytuję DS18B20 w asemblerze '51 może się przydadzą :) ; /-----\ ; |-------| ; | | ; |DS12B20| ; |_______| ; | | | ; GND Vdd ; DQ ; PIN1WEQU P1.0 ;=======================================... ; procedura odczytu temperatury z DS18B20 ;---------------------------------------...
waitms pętle atmega8 waitms waitms timer0
układ generatora funkcyjnego grubość kabla wzmacniacza złącze telefon nokia
meloman25 schemat blokowanie telefonu przez operatora
Ursus 1224 - Problemy z uruchomieniem zimnego silnika, biały dym, nierówna praca Koszt kodowania kluczyka do immobilisera Skoda Octavia II 1.6 MPI 2004