w czym napisales soft?? wlczyles zewnetrzny oscylator w ATMega??
ustawianie stanów logicznych na pinie odbywa się w przypadku 1-wire nieco inaczej niż pokazałeś. Ty ustawiasz kierunek i wymuszasz stan, a to troche nie tak. Ustalać powinieneś jedynie kierunek transmisji. Domyślnie w rejestrze PORTx są same zera, więc nie musisz się nim w ogóle przejmować. Dla np resetu powinno być tak: ustawiasz port jako wyjście,...
Atmegę kupiłem na allegro, posiada ona wbudowany Kwarc i Bootloader. ATMega nie posiada wbudowanego rezonatora kwarcowego, lecz wewnętrzny oscylator. Nie ma też wbudowanego bootloadera. Czy pin 11 jest odpowiednim pinem do podłączenia 1Wire? W jakiej obudowie jest ATMega DIP28, czy TQFP?
ł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...
Witam, Czasówki 1wire do zmiany. Sprawdzaj CRC numerów seryjnych.
Czy na pewno nie ma przerwy na magistrali 1Wire ? Ten program jest sprawdzony i należy szukać błędu w połączeniu i konfiguracji. Czy Atmega jest nowa tzn. bezpośrednio ze sklepu ?
$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ć...
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);...
Niestety coś jednak nie tak podczas kompilacji kodu. Na zestawie uruchomieniowym również wyświetla się 0.0 C zamiast "error", jeżeli do linii 1Wire nie został podłączony żaden układ. Czy ktoś mógłby podesłać gotowy wsad dl atmegi8 dla chociażby sprawdzenia czy atmega wykrywa jakiś układ na linii 1Wire? U mnie widocznie sypie się eclipse, bo czysty układ...
Witam serdecznie i dziękuje za zainteresowanie tematem. Czy ten napis "Rozpoczynam temp" znika po tej sekundzie, czy wyświetla się cały czas? Odpowiadam: Napis pali się cały czas Jak tylko wypije kawę sprawdzę kod Pana snnaap. To znaczy tyle, że procek łapie zwiechę na TERMOMETR_RESET(); albo na TERMOMETR_ODCZYTAJ_TEMPERATURE(tablica); a najbardziej...
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...
Ja nie widzę problemu w izolacji 1WIRE, trzeba użyć 2 szybkich transoptorów (np. 6N137) i 2 linii mikrokontrolera - osobnych do nadawania i odbioru. Można wykorzystać USART, co dodatkowo uprości obsługę magistrali od strony programowej. Oczywiście dodatkowo potrzebna będzie izolowana przetworniczka DC/DC do zasilania czujników i elektroniki za transoptorami....
A jak masz połączone te rezystory? Szeregowo czy równolegle? Czemu posługujesz się czyimiś bibliotekami, nie napiszesz ich sam? A to już nie można cudzych bibliotek wykorzystać? Nie wiem czy tutaj byłeś: [url=http://www.hobby.abxyz.bplaced.net/... Na dole artykułu jest gotowa biblioteka do ds18b20 działająca na 100%. W msb i lsb...
Kiedyś przerobiłem na szybko jedną z dostępnych bibliotek na obsługę kilku ds18b20 na różnych liniach: [syntax=c] //#ifndef 1wire //#define 1wire #include "hardware.h" ////////////////////////////////////////... // ROM commands #define DS18B20_ROM_SEARCH 0xF0 #define DS18B20_ROM_READ 0x33 #define DS18B20_ROM_MATCH...
Witam serdecznie. Mój cel jest dosyć prosty - zbudować termometr oparty na uC ATmega128 wykorzystując czujnik DS18B20. Sprawa wydawała się banalna - wydawała się, gdyż niestety do tej porty nie potrafię sobie z tym poradzić. KOD: Identyczny jak ten ze strony http://hobby.abxyz.bplaced.net/index.php... (oczywiście ze zmienionym pinem 1wire):...
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...
Magistrala 1Wire jest bardzo zależna od czasów. Ponieważ nowa Atmega8 ze sklepu jest ustawiona na 1MHz zapytam czy zmieniałeś ustawienia FuseBitów w tych Atmegach? Pytam ponieważ w kodzie masz zadeklarowaną prędkość 4MHz. Taką predkośc podałes kompilatorowi i do takiego taktowania policzył czasy do komunikacji z czujnikiem. Jeśli nie zmieniałeś nic...
(at)snnaap: Ta funkcja ("ms") to jakaś pozostałość - coś zmieniałem, ale skoro spełniło moje wymagania to już zostawiłem odłogiem. Pierwszego pytania nie rozumiem. Tu znalazłem jakieś informacje o tym, że można sobie efektywnie poradzić bez UART: http://mirekk36.blogspot.com/2011/09/fak... Nie ma (albo nie "doszukałem...
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.
http://obrazki.elektroda.pl/4776361100_1... Witam wszystkich, jest to mój pierwszy projekt opisywany na tym forum. Przedstawiam projekt mojego autorstwa, zegar z termometrem wyświetlający aktualną datę, godzinę oraz temperaturę z 3 czujników. Założeniem projektu było zbudowanie zegara wyświetlającego godzinę oraz temperaturę wewnątrz...
Witam, Jakiś czas temu zacząłem budowę termometru wielopunktowego opartego na ATMEGA162 i DS18B20. Układ działa super, do wejścia 1wire podłączyłem 17 czujek temperatury i wszystko śmigało jak należy ale niestety po podłączeniu czujek przez skrętkę już tak cudownie nie jest. Między układem ATMEGA a DSami jest dość duża odległość nawet do 50m. W momencie...
Mam dziwny problem z ATmega8515 i obsługą szyny 1wire w Bascomie AVR 11.7.4. Prosty program zbudowany w oparciu o nieznacznie zmodyfikowany przyklad z helpa do odczytu temp. z ds18b20 działa na AT90S2313, a nie działa na ATmega 8515. Sposób podłaczenia jest ten sam, próboałem też konfigurować szynę 1wire na różne porty. Problem jest zawsze ten sam -...
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. Na ten problem równiez ja ostatnio wpadłem i nie udało się tego rozwiazać przyzwoicie. Moze atmega z najszybszym zegarem (20MHz) da radę ale jest to porywanie sie z motyka na księżyc....
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...
Chyba mam coś nie tak z podłączeniem. Atmega nie może ściągnąć linii do 0. Wygląda to tak, że gdy linia 1wire jest podłączona do mikrokontrolera i do rezystora 4.7k wówczas gdy ustawię pin jako wyjście i na port dam 0 to tak jest w rzeczywistości (sprawdzałem miernikiem - ustawiłem sobie czas na kilka sekund). Natomiast gdy do tej linii podłączę jeszcze...
Przede wszystkim. Zejdź z taktowaniem do jakiejś normalnej wartości dla ATmega16 i przetestuj czy wtedy komunikacja z DS-ką jest prawidłowa. Jeśli nie to najpierw musisz naprawić sprzęt/algorytm by wszystko działało prawidłowo. Jeśli na niskim taktowaniu komunikacja będzie w porządku to będzie to oznaczało tylko to, że specjalne makra opóźniające jakie...
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...
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...
wcześniej miałem #define CLEAR_1WIRE DDRD|=_BV(WE) #define SET_1WIRE DDRD&=~_BV(WE) No to dobrze miałeś. Ale wtedy miałem temperaturę 0.0 przy podłączonym czujniku, a jak go odłączyłem było -0.1. Jak odłączę rezystor to pokazuję się "Brak pomiaru". Kolego nolab . Częstą przyczyną kłopotów z 1wire, są np. niewłaściwe opóźnienia, bo umieszczenie...
$regfile = "m8def.dat" $crystal = 'Częstotliwość rezonatora Config Lcd = 'Sam nie wiem co wpisać Config Lcdpin = 'Konfiguracja LCD Cls Cursor Off Cls Deflcdchar 1 , 32 , 12 , 18 , 18 , 12 , 32 , 32 , 32 Cls Dim A(2) As Byte Dim T(3) As Byte Dim Temp As Byte Config 1wire = Port 'Konfiguracja magistrali 1-wire Do 1wreset 'Inicjalizacja...
Witam Który z procesorów z serii Attiny ( bo atmega 8/16/32 to bez problemu ) nadawałby się do pomiaru/odczytu DS18B20 oraz przesyłania przez UART ( w ramach testów przez RS232, a docelowo przez RS485 ) ? Programowy UART można chyba uruchomić na większości, gorzej z obsługą 1Wire
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 juz wcześniej cobyś sprawdził czy opoźnienia są poprawne. 1Wire to interfejs który bazuje na pomiarze czasu. Fabrycznie nowa Atmega ma ustawione fusebity na 1MHz wewnętrzny - w programie masz wpisane 4Mhz - jak jest naprawdę to należałoby sprawdzić fuse (jeśli używasz PonyProga to mogę Ci podpowiedzeć jak zmienić) Możesz zrobić prosty test:...
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...
http://obrazki.elektroda.pl/8783995300_1... Przedstawiam projekt termostatu do mojej wytrawiarki, opartej na Atmedze 8, termometrze cyfrowym DS18B20 oraz przekaźniku JQC-3FF. Motwywacja Wytrawiarkę udało mi się kupić na allegro, niestety przepłaciłem (zakupiłem ją od cwaniaczka, który wykonał ją niechlujnie oraz dorzucił jakąś grzałkę...
1. Z tego co widzę w datasheet od DS18B20 to linia 1wire powinna miec rezystor 4k7, więc włączanie dodatkowo rezystora wewnętrznego pewnie niewiele da. 2. Jeżeli odpowiedni bit w rejestrze PORTx (u Ciebie PORTD) będzie już miał wartość 0 to tak.
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.
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,...
Witam Może ktoś wie jak dogadać się z termometrem DS18B20 ? Na początek wersja uproszczona z jednym układem na magistrali 1wire. Do kontroli transmisji chcę użyć ATMEGI oprgramowanej w avrgcc. Czytam dokumentację i nie mogę zbudować obrazu całości :( . Przypuszczam, że najpierw trzeba wysłać rozkaz "CC" i zapamiętać zwrócony adres, potem rozkaz "55"...
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 …
Na upartego mogę się pobawić dziś wieczorem, wykorzystam TIMER1 do określenia czasu wykonywania tych instrukcji w rzeczywistym układzie. Mateusz dobrze wykombinował, chociaż w/g mnie symulator pewnie nie bierze pod uwagę wielu rzeczy, w tym odpowiedzi ze strony 1WIRE (teoretycznie powinny się one trzymać sztywnych ram czasowych i nie wpływać na prędkość...
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ą...
a może po prostu : 1wiresearchfirst, a kolejnym czujniku: 1wiresearchnext.
witam, Od razu do rzeczy. Jak w temacie! Program odczytuje po 1wire temperatury z 2 czujników. Wszystko działa poprawnie (płytka, czujniki dodam ds18b20). Kod programu poniżej. Error : 261 Line : 39 Array expected [ID1] Error : 261 Line : 43 Array expected [ID2] Error : 124 Line : 43 LOOP expected ostatnim errorem...
Poczytałem trochę w internecie i zmieniłem na coś takiego (wywaliłem w ogóle funkcje pojedynczych bitów). [syntax=c] unsigned char uc1Wire_ResetPulse(void){ WIRE_DIR |=1<<WIRE_CON; // pin 1wire jako wyjscie WIRE_PORT&=~(1<<WIRE_CON); // pin 1wire -> 0 _delay_us(650); // tx reset pulse WIRE_PORT|=1<<WIRE_CON; // pin 1wire ->...
Ł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)....
Oki oki. Moja wina. Wiec procek to Atmega 168 do wprowadzania mam kursory lewa/prawa gora/dol no i Enter. Posiadam magistrale 1wire i na niej siedza DS18B20 i switche DS2405. Wszystko chodzi, ale.... . Ja tego po prostu jeszcze nie robilem w taki sposob. Cyfry od 1..9 wprowadzam i jest oki, ale teraz potrzebuje moc wpisac z tej klawiatury adres DS-ow...
Panowie, Od dłuższego czasu zastanawiam się nad fenomenem popularnosci DS18B20 w układach z mikrokontrolerami wszelkiej maści. Przecież na rynku jest dostępny przetwornik o takiej samej dokładności, znacznie prostszy w implementacji. Mam tu na myśli przetwornik LM35, który jest w większości sklepów tańszy od DS18B20. Do jego obsługi wystarczy jeden...
udało mi się z tego kodu wyciąć komunikacje 1wire i całą resztę potrzebną do o debrania temperatury z ds18b20 i wklejiłem to do kodu z którym działa mi lcd troche się męczyłem aż na wyświetlaczu w miejscu gdzie powinna być temperatura pokazało sie -00.2 ds18b20 nie reagował na zmiany temperatury wszystkie delay_ms zwiekszyłem 8 razy bo mój atmega chodzi...
Witam Już od dłuższego czasu nie mogę poprawnie uruchomić termometru ds18b20. mikrokontroler to ATMEGA32A, F_CPU 16Mhz Próbowałem już na wiele sposobów, ostatecznie jednak korzystam z kodu zamieszczonego w książce tmfa. http://obrazki.elektroda.pl/9838684200_1... Każda próba kończy się odpowiedzią " No Presence Pulse" Jestem początkujący...
Właśnie... Jest jeszcze motyw taki, że PIN, którym podłączam się do 1Wire to INT0, przerwania na oba zbocza. Zbocze opadające zeruje timerek a zbocze narastające sprawdza ile upłynęło czasu (ile trwał impuls). Jeśli czas trwania impulsu oznacza RESET PULSE od mastera, zaczyna się cała obsługa w moim SLAVE. W nocie katalogowej jest napisane, że jeśli...
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...
http://obrazki.elektroda.pl/5636705900_1... https://filmy.elektroda.pl/37_1378532310... Termometr mikromocowy LCD ATMEGA16 Tym razem głównym celem projektu było sprawdzenie możliwości wykonania mikromocowego systemu pomiaru temperatury w oparciu o możliwie standardowe elementy, mówiąc w skrócie byłem ciekawy czy zwykły avr może być...
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);//...
Witam! Na podstawie kilku wcześniejszych projektów: http://www.elektroda.pl/rtvforum/topic25... http://mikrokontrolery.blogspot.com/2011... i kilku innych, postanowiłem zaprojektować własną płytkę testową pod Atmega16 Co ma być na płytce: -mikrokontroler Atmega16 -złącze 6PIN (wyjscie do programatora)...
Ktoś polecał mi eram zamiast readeeprom ale musiałbym dokładać kolejne zmienne a program tak czy tak byłby długi. Chyba że się mylę. Masz rację mocno się mylisz, tym bardziej że to co robisz za pomocą readeeprom czy writeeeprom to to samo co dim as eram tyle że w sposób na piechotę i pod górkę i to mocną górkę. Koledzy miałem ochotę zrobić te DS na...
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....
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)...
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,...
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
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)...
Witam! Mam problem a polega on na tym że: Mam procka atmega 8 oraz trzy czujki temperatury ds18b20. Czujki temperatury skonfigurowane są na 1wire, rezystor podciągający tych czujek to 4,7 kohm. Połączenie czujek jest trój przewodowe. I problem jest w tym że co jakiś czas temperatura podawana przez czujki jest albo 0 albo 85 st. Mierzy dobrze temperaturę...
A wiec pwm masz na oc1a i oc1b to jest timer1 (jak sie nie myle). Poza tym masz 3 pwm oc2 na timerze2. Wiec jak bys chcial jeszcze czas liczyc lepiej uzyj jakis zew. ukladu, bo zostal ci tylko timer0, na ktorym bedzie ciezko to osiagnac. Na timerze1 i 2 mozesz zrobic sterowanie diodami rgb. Wlasnie widze ze ten czujnik wilgotnosci nie ma mozliwosci...
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...
$regfile = "m8def.dat". $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0 Config 1wire = Portc.0 Declare Sub Odcz_temp Dim Temperatura(2) As Byte Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32, Do Call Odcz_temp Cls If Temperatura(2)...
Czyli funkcje 'v1Wire_SendByte' i 'uv1Wire_ReadByte' służą tylko do tego, żeby wysłać odpowiedni rozkaz do termometru? Te funkcje, jak sama nazwa wskazuje, wysyłają i odczytują bajt danych z magistrali 1wire. W przypadku ds18b20 ten bajt danych to może tym rozkaz dla termometru (np. wspomniany już start pomiaru) lub dane (np. zmierzona wartość temperatury)....
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.
Na pewno masz źle zrobioną obsługę 1wire: [syntax=c]// zczytanie bit z magistralii unsigned char read(void) { unsigned char PRESENCE = 0; CLEAR_1Wire; // ustawienie w stan niski DQ _delay_us(2); // odczekanie 2us SET_1Wire; // zwolnienie magistralii _delay_us(15); <------------ // odbiór jedynki lub zera if (bit_is_set(PORT_1Wire, WE)) PRESENCE =...
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...
Brakuje kondensatora na AREF Nie musi być, choć jest to dobry zwyczaj... niemniej nic nie ma do cyfrowej transmisji po one wire. W zamieszczonym kodzie (może ślepy jestem) nie ma nic dot. komunikacji 1wire ani konwersji wyniku. Podejrzewam, że gdzieś coś jest niepodzielone odpowiednio. Czy po złapaniu czujnika temp. wskazywana wynosi 70-72st?
Nie mogę znaleźć rozwiązania problemu z czujnikiem DS18B20 w wersji w obudowie SO8 - mianowicie czujnik nie odczytuje poprawnie temperatury. Przykładowy kod programu (nie sugerujcie się procesorem bo to działało i na mniejszych, a że pod ręke wpadł akurat 1280 to chyba raczej nie istotne. ) $regfile = "m1280def.dat" $crystal = 8000000 '-------------------------...
...liczyłem że podczas tych 100ms na końcu ds coś odpowie Kolego :!: Magistrala 1wire była już "wałkowana" tyle razy, że muszę odesłać Cię do podstaw. Zapoznaj się z czymś, co nazywa się TIME SLOT. Podpowiem tylko, że układy slave nie pytane ... "nie mówią". zumek
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...
Witam wszystkich, robię prosty układzik na uC atmega. Zadaniem go będzie odczyt temp z czujnika ds18b20 i ustawianie zewnętrznego przetwornika dac po spi. Wszystko praktycznie napisałem, bo części programu były wykorzystywane w innych układach, które pracują, z spi problemu nie ma, z odczytem ds też. Ale chodzi o to, żeby cały układ pobierał jak najmniej...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
[syntax=basic4gl] $regfile = "m8def.dat" 'deklaracja procesora $crystal = 8000000 'deklaracja czestotliwosci taktowania Config Lcd = 16 * 2 'typ wyswietlacza i konfiguracja pinow Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 'definicja...
http://obrazki.elektroda.pl/9822499800_1... UWAGA! AKTUALIZACJA!! Jako, że dostaliśmy dodatkowy tydzień na dopracowanie - nie traciłem czasu. Niestety studia uniemożliwiły mi napisanie tetrisa, jednak dodałem kilka bajerów. Pierwszym jest zrobienie obudowy. Nie zdążyłem tylko listwą obłożyć (widać od spodu). Dodałem możliwość sterowanie w...
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...
DS18B20 nada się, z tym że jeśli chcesz go używać na zewnątrz to musisz go odpowiednio zabezpieczyć przed warunkami atmosferycznymi. Piszesz że jesteś początkujący, a do DSa musisz sobie poradzić z 1Wire - jeśli to nie problem dla Ciebie to OK. Jeśli tak, to możesz go zastąpić np. LM35 który od strony programowej będzie łatwiejszy w obsłudze. Możesz...
Niestety nadal nic ... Napisałem (a dokładniej przerobiłem program z innej strony): [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 8000000 $baud = 2400 Config Portb = 255 Portb = 0 Config Portc = 255 Portc = 255 Config Portd = 255 Portd = 255 Config 1wire = Pina.0 Cls Cursor Off Noblink Enable Interrupts Dim Lsb As Byte Dim Msb As Byte Dim Tempa...
Tak jak pisałem - kilka testów. Można to zrobić zawsze samemu. Zmodyfikuj Ds_reg i sprawdzisz co odczytuje, potem zapis i odczyt. Będzie widać w czym problem. [syntax=vbnet]Ds_reg: 1wreset 1wwrite &H33 Ds(1) = 1wread(8) L_cz = 1wirecount() If L_cz > 0 Then Cls For N = 1 To 8 Lcd Hex(ds(n)) 'pokaż odczytane z czujnika Next Lowerline For N = 1 To 8 Hbyte(1)...
A jest jakaś inna opcja przez którą nie mogę połączyć się przez ten 1wire z ds'em?
Tym razem read jest zle napisane - zauwaz, ze petla + wczesniejsze opoznienia trwa co najmniej 63us, czyli czasami moze czytac 0 jako 1. Poza tym po co w petli to czytasz? Juz bym zrozumial gdybys zrobil jakies odszumianie, ale tak zwracasz ostatnia przeczytana wartosc. Odstepy pomiedzy bitami sa ciagle za krotkie - czemu nie probkujesz kiedy linia...
No ale pisałem, że chodzi o to, że główny program korzysta z komendy input, która odbiera polecenia via RS232. I w tym czasie nie ma możliwości "równoległego" odczytu z termometrów. A chodzi mi o to, żeby po odebraniu zapytania o temperatury pomiary były już "gotowe", co można zrobić tylko odczytując je w przerwaniu. Jest tylko kwestia prawidłowej obsługi...
Witam, złożyłem płytkę, napisałem kod i coś nie działa, narazie podam kod bo płytka śmiga byłbym wdzięczny za sugestie co jest nie tak że to nie chce działać, kod zbudowany po części w CodevisionAVR. Wyświetlacz jest na wspólnej Katodzie stąd mój wniosek że aby zaświecić jakiś segment muszę wysłać 0 na pin, a aby go zgasić 1. Jeżeli źle myślę to poprawcie...
Dziękuję Wam za pomoc. Menu działa. Dorobiłem sobie dwa pliki do odczytu i wyświetlania temperatury na DS18B20. Mam plik_glowny.bas I pliki do DS18B20 - Config_DS18B20.bas oraz DS18B20.bas W celach testów zrobiłem osobny program aby tylko sprawdzić czy popranie działa odczyt temperatury. I działa bezbłędnie. Zasada działania tych plików jest następująca:...
Hmmm... Tylko Programuję kontroler programatorem ZL2PRG i w Bascomie mogę tylko resetować z komputera uC, a nie działa mi wgrywanie programu do niego, ani nawet odczytywanie modelu, albo mam coś źle poustawiane... uC programuję PonyProgiem i tam mam Fusebity i np przy CKSEL3 mam tylko okienko do zaznaczenia, ale nie mogę tam podawać żadnych 1 ani 0....
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
Z takim kwarcem da się zrobić programowe 20kHz. Ze sprzętowym nie ma problemu z jakimikolwiek przerwaniami. Zapewne chodziło o przerwania występujące podczas multipleksu wyświetlaczy, ale wtedy przy odpowiednim zarządzaniu przerwań także nie ma problemu z odczytem z 1Wire.Także piszę w bascomie i mam program z 4xDS18B20 na przewodzie 20m i z 15 multipleksowanymi...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Witam Muszę stworzyć układ w którym bedę używał 8 czujników DS18B20 , i każdy musi pracować na osobnym pinie. Nie mogę podpiąć wszystkich na jednej linii i odpytywać ich po ich ID. Kiedyś robiłem sterownik w którym odczyty robiłem w ten sposób: Sub Odcz_temp1 Config 1wire = Portb.0 1wreset 1wwrite &HCC 'opuszczenie zapisu numeru ID 1wwrite &H44 'start...
Jakiś szczególny powód dlaczego każdy termometr jest podłączony osobno? Pamiętaj ze termometry DS1820 działają na magistrali 1wire i możesz wszystkie podłączyć do jednego portu procesora (potencjalnie)
Skoro kto pyta nie błądzi to pozwolę sobie podpiąć się do tematu :) W życiu napisałem już kilka razy obsługę 1-wire na różne procki i wszystko działało od ręki. Tym razem trafiło na AVR+WinAVR i nie jest tak kolorowo...gapię się w monitor 2 dni i funkcje jak nie działały tak nie działają. #define WIRE_PORT PORTD #define WIRE_DIR DDRD #define WIRE_PIN...
A coś tańszego jest, w kosztach ds18XX ? A nie ma jakiegoś czujnika wilgotności i ciśnienia opartego na magistrali 1Wire ?
Wsad testowałem na płytce testowej i działa. Schemat wydedukowałem z kabelków i manuali dotyczących podłączania uc. Załączam poniżej [syntax=basic4gl]$regfile = "m8def.DAT" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 16 * 2 Config 1wire = Portd.5 Config...
http://idom.svn.sourceforge.net/viewvc/i... Przejrzyj pliki 1wire.h i DS1820.h oraz odpowiednie c. Co prawda w c++ ale na AVR i chyba dosyc przejrzyste.
Dodano po 1 [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 $baud = 1200 Config 1wire = Portb.0 Dim Adresy(16) As Byte Dim Temp As Byte Dim Temp_wew As String * 6 Dim Temp_zew As String * 6 Dim W As Byte Dim...
Stosuję odczyt DS18B20 w przerwaniu, dlatego, że przerwanie rozkładało mi transmisję 1wire. Przerwanie jest wyzwalane z częstotliwością 100 Hz, przez częstotliwość sieci 220 V i służy do obsługi ściemniacza. Transmisję 1wire umieściłem w tym przerwaniu, żeby uniknąć jej zakłócania właśnie przez to przerwanie. Co przerwanie wykonywana jest kolejna instrukcja...
Witam. Otóż mam taki problem ;) Dwa czujniki DS18b20 podłączone są do osobnych pinów Atmegi168, PINB0, PINB1. Chciałem to zrobić w ten sposób aby w przerwaniu ustawiana była flaga (co sekundę) która realizowana była w pętli głównej while(1), w ten sposób, aby co sekundę na zmianę wykonywany został convert oraz odczyt. Wydaje mi się, że wszystko zrobiłem...
Witam. Oto KOD: 'Jednopunktowy termometr z czujnikiem DS18B20 'www.portalnaukowy.edu.pl 'Program na podstawie kursu z książki "Mikrokontrolery dla Początkujących" Pana Piotra Góreckiego $crystal = 4000000 'deklaracja częstotliwości pracy kwarcu $regfile "attiny2313.dat" 'model procesora dla którego jest ten program Deflcdchar 1 , 14 , 17 ,...
ds18b20 1wire 1wire ds18b20 atmega8 odczyt 1wire ds18b20
zewrzeć matryca samsung taśma głośniki nierówne obroty omega
logitech kabel układy zasilające
Piekarnik słabo grzeje - możliwe przyczyny i rozwiązania Niedziałający przycisk włączenia pralko-suszarki Haier - diagnostyka i rozwiązania