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
... Mikrokontroler taktowany jest wewnetrznym rezonatorem RC (nie posiadam w tej chwili kwarcu) ... A kompilator o tym wie :?: Czy masz zadeklarowaną częstotliwość oscylatora w programie :?: $Crystal = 1000000 Config 1wire = Portx.x Masz to w programie lub w ustawieniach globalnych poustawiane :?: Nic o tym nie wspominasz :( Pozdrawiam Piotrek
Jeżeli Twój program jest napisany w Bascomie , Atmega8 pracuje na wewnętrznym oscylatorze 1MHz to przestaw oscylator na 4MHz.Mi 1Wire nie chciało działać na 1MHz.Chyba nie tylko mi: http://www.elektroda.pl/rtvforum/topic12...
... Czy w obsłudze protokołu 1wire trzeba ciągle zmieniać konfigurację pinu jako wejściowy/wyjściowy w rejestrze DDR czy istnieje inny sposób, żeby uprościć sprawę i nie przekonfigurowywać co chwilę pinu ? ... Cały pic polega na tym , że obsługa magistrali 1wire, powinna odbywać się wyłącznie przez "zmianę kierunku" pinu. Piotrek
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...
rs485 odpada Tylko że najlepiej by się do tego nadawał. Nie wiem jak masz daleko na strych ale I2C (SDA, SCL) może powodować błędy w transmisji, SPI piszesz że też nie, czytałem ze ktoś zrobił to na 1WIRE ale nie wiem na jakiej odległości. Poszytaj trochę o "inteligentnym domu" , było parę ciekawych tematów na elektrodzie.
Tak? if (bit_is_clear(PORT_1WIRE, PIN_1WIRE)) Czy tak? if (bit_is_clear(PIN_READ_1WIRE, PIN_1WIRE))
Dla pewności możesz jeszcze dodać potwierdzanie odbioru i testowanie poprawności odebranych danych CRC-16. Dodano po 4 Jeśli chodzi o komunikację przewodową na UARCIE to tak. Ale IRDY po stronie procka jeszcze nie ruszałem :) Do czego ma służyć to urządzenie , może wcale IRED tu nic nie wniesie. Styk to jednak styk. Jeśli problemem jest konektor to...
Chyba sobie to odpuszczę, potrzebuje czujnik do mierzenia tylko temp cylindra, szkoda mi wydawać dużo kasy na takie coś. To miało być w skuterze więc miejsca też dużo nie ma. Nie ma jakiegoś czujnika na 1wire do 150°C? Ewentualnie do 135°C powinno wystarczyć. Oczywiście, że tak. A co powiesz na to?: http://www.mera-sp.com.pl/przyrzpom_opis...
Szyna nie jest zależna bezpośrednio od oscylatora czy rodzaju procesora. Od strony procesora szyna jest tworzona programowo, więc przyczyn należy szukać w programie. Natomiast szybkość wykonywania programu, a tym samym przebiegów na szynie 1-wire zależy od typu procesora i oscylatora. Tak, więc przy dobrze napisanym programie (ważne są odpowiednie czasy...
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...
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...
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...
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...
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...
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...
Co to znaczy wyświetla jedną linię?? Opisz dokładnie albo zrób zdjęcie. Ekran startowy się pokazuje, czyli "Witaj ..." a w drugiej lini "Temometr.." itd. Gdzie staje program? Co dokładnie pokazuje LCD od momentu włączenia do końca? Prawdopodobnie masz coś na magistrali 1W zwarte albo któryś czujnik poleciał lub port w procesorze. Mogłeś zmienić tylko...
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
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ą...
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 ,...
Wrzuc tu schemat. BTW to co ma wspolnego SDA z 1wire? SDA to raczej w IIC jest...
Niech kolega sprawdzi, bo nie testowałem, ale powinno działać co 0,1°C. [syntax=basic4gl]'Regulowany termostat cyfrowy 'Projekt wykonał Krzysztof Gońka $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11000001 Portb = &B11111111 Config Portd = &B11111111 Portd = &B11111111 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
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...
http://obrazki.elektroda.pl/6948868900_1... Wzmacniacz samochodowy o mocy 400W. Oparty o przetwornicę push-pull na układzie KA7500 (TL494), o mocy do 500W pozwalającej na pracę czterech końcówek mocy TDA7294. Wzmacniacz na przednim panelu posiada trzy trzy-cyfrowe wyświetlacze LED, wyświetlające aktualne napięcie zasilania wzmacniacza,...
Hmm... o co chodzi dokładnie z "podciąganiem" DS'a? rezystorem 4.7k podciągamy linie danych do Vcc, czy linię danych łączymy z portem I/O mikrokontolera przez ten rezystor? Troche lamerskie pytanie ale z innych postów jakos wydedukować nie mogę :D
http://obrazki.elektroda.pl/5851782000_1... Jako, że sezon na kąpiele w ogródku się rozpoczyna to być może ktoś skorzysta z mojego opisu podgrzewania wody w basenie ogrodowym. Ogrzewanie skończyłem w zasadzie w maju i pod jego koniec i jakieś trzy dni po zalaniu 13-o stopniową wodą miałem temperaturę 26 stopni, ale od początku... Na...
Podłączyłeś dławik i kondensatorki zgodnie z książkowym przykładem wykorzystania ADC ? Może daj dokładnie swój schemat. Acha, polecam DS1820 - świetny termometr na 1wire ;-)
Witam Udało mi się końcu dzisiaj rozwiązać problem. W jednym miejscu (_1WReadSlot(), tuż za odczytaniem bitu) ustawiłem za małe opóźnienie (25us, a powinno być 60us). Jeszcze spróbuje "pogadać" z DS18B20, i postaram się wrzucić tutaj gotowe funkcje do obsługi 1Wire. Dodano po 4 Zgodnie z obietnicą podaje gotowy projekt w WinAVR, pod ATmega8 (at) 4MHz....
A pisałem żebyś wydrukował sobie schemat płytki. Jest przecież na niej gniazdko 1wire z opornikiem podciagającym
Witam Mam pytanie : Czy procek Atmega8 można tak skonfigurować i napisać program, aby jednocześnie można było obsługiwać następujące sygnały na porcie PC: - AC0(adc0), AC1(adc1) - czytać wartości analogowe, - na AC2 - zrobić obsługę 1Wire, - na AC4(SDA) i AC5(SCL) obsłużyć komunikacje I2C. może znacie linki przykładów, gdzie tak procek jest skonfigurowany....
Równolegle jest temat: http://www.elektroda.pl/rtvforum/searcht... Masz ładnie opisaną transmisję 1wire na MCS51. Pozdrawiam.
a jak to jest z transmisją 1Wire
Czujnik z kabelkiem ma 2 przewody masa i data i jest w gilzie ,DHT jest 1wire z tego co wiem
1wire jest podciągnięte przez rezystor do VCC.
Znam C a wolę pisać w B4A, B4i, B4R, Bascom czyli w Basic, ale kiedy coś mi nie działa to odpalam analizator stanów logicznych albo oscyloskop. Nie zwalam na język programowania. https://obrazki.elektroda.pl/6883372000_...
A czy koledzy słyszeli, że Dallas zabrania samowolnego tworzenia urządzeń 1Wire Slave? http://www.1wire.org/index.html?target=p...
Witajcie Mam zadanie zrobić sterownik z czterema czujkami DS1820. Żadna nowość, napisałem kod, by nie bawić się z ID kolejno konfiguruję 4 piny na 1wire bo portów mi nie żal. Uruchomiłem na testerze, działa. Gdy zacząłem rozbudowywać menu zaczęła mi przeszkadzać konwersja czujek (4x Waitms 650). Zupełnie przypadkiem zamiast Waitms użyłem pętli For T...
Dać się da ale to nielegalne. Slave-y 1Wire są opatentowane i może je produkować tylko Dallas Semiconductors. Tobie do celów własnych zgodnie z prawem wolno wyprodukować tylko jeden, a jak widzę chcesz 4. No chyba że wykupisz licencję, ale nie sądzę. Aż dziw bierze że w EdW był projekt jakiegoś urządzenia pełniącego funkcję Slave-a 1Wire. Łamanie prawa...
Jeśli faktycznie wpływa, to prawdopodobnie będą błędy w odczycie, ale ni spotkałem się z takim przypadkiem.Na początek to może zmniejsz rezystor podciągający 1Wire i sprawdzaj sumę CRC z DS18S20.
Może nic konkretnego tu nie poradzę (bo nie znam na tyle "C") ale napiszę, że pomysł jest trochę zakręcony. Jeśli taki musi być to proszę nie czytać reszty. Jeśli nie to podłączyłbym czujnik temperatury do ATMEGA8 po 1Wire, a MEGĘ do PC poprzez RS232. Będzie można bez problemu czytać temperaturę jak i dane z uC. Podłączenie MEGI po 1Wire będzie wymagało...
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...
PORTC.1 - 1wire PORTC.0,1,2 - multiplexowanie wyświetlaczy PORTD - segmenty
No tak- ale to nie jest DS tylko pamięć na ATmedze zaprogramowana zgodnie z 1wire. Reszta układów podpieta do 1wire będzie miała swoje 3.3V. Tylko ta Atmega udająca 1wire będzie miała nieco niższe napięcie zasilania- o spadek na diodzie. P.S. A swoją drogą- fajny pomysł zrobić własne układy na 1wire. Szkoda tylko że sprzedawać tego nie można.
Skoro znasz już składnię assemblera, to jedyne czego potrzebujesz, to: - datasheet Atmega8 - datasheet Ds18b20 - opis standardu komunikacji 1wire Nie wiem jak jest z gotowcami, ale na assembler to bym za bardzo nie liczył. Skoro kiepsko u ciebie z angielskim, to zacznij chociażby od tego: http://www.1-wire.rms.biz.pl/
Możesz spróbować [syntax=basic4gl]CONFIG LCD = 16 * 2 , CHIPSET=KS077[/syntax] ..albo spróbować jeszcze zmienić FuseBity na 8MHz i w kodzie wtedy też. Widziałem takie chińskie Megi, że nie chciały z 1Wire działać na 1MHz. Może jakieś zależności czasowe poza tolerancją.
Mam sterownik do kolektora słonecznego zrobiony na atmega8 i dwóch termometrach ds18b20. Do tego mam komputer zbierający dane jeszcze z innych czujników podłączonych do innej magistrali 1wire. Teraz chciałbym aby komp zbierał też dane z czujników podłączonych do ATMEGA8. Podłączenie obu magistrali 1wire i podłączenie dwóch masterów do jednej magistrali...
Proszę. Pisałeś kiedyś, że przy okazji chciałbyś się czegoś nauczyć, więc masz tu przykład który napisałem przy kawie. Trzy różne czujniki- DS18B20, LM35 i Termistor NTC 10k - podłączone jednocześnie do jednego mikrokontrolera. Dla czujników NTC wyznacza się ich "Betę" czego nie robiłem dlatego wskazywana przez niego temperatura różni się nieco od tych...
w programowaniu jestem kompletnie zielony :) chcę żeby 2 czujniki ds18b20 były na 1Wire na zasilaniu osobnym (nie pasożytniczym z układu) jeśli to pomoże to mogę schemat wstawić
tych czujnikow nie mozna laczyc szeregowo . Laczysz je rownolegle wiec wszystkie + razem podobnie GND i linie 1wire do procka. Jednak na samym poczatku po napisaniu programu musisz je dolaczac pojedynczo aby odczytac nr seryjne po tym zabiegu juz moga one razem pracowac. Inicjujesz 1wire wysylasz konkretny numer seryjny odczytujesz temperature resetujesz...
Witam Przy obecnych cenach zewnętrznych przetworników na I2C ilość ADC w Atmedze przestaje mieć znaczenie, zwracam też uwagę że Atmega8 ma w obudowie DIP tylko 6 przetworników. Temperaturę możesz mierzyć po 1Wire ( DS18B20 ). Masz pomimo komplikacji sprzyjające warunki, dysponujesz +12V i -12V, wiele wzmacniaczy różnicowych może pracować z wejściami...
jeśli urządzenie na magistrali 1wire się wogóle nie zgłasza najczęściej coś jest nie tak ze szczelinami czasowymi. Czy masz tę samą cz. procesora co zadeklarowana w programie?
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.
Jak napiszesz bardzo skąpy kod w asemblerze to raczej tak. Jeśli bascom to zdecydowanie proponuję atmega8 - koszt niewielki a za to i2c jest sprzętowe można dać zegarek pcf8573 lub podobny i 8 kB pamięci to zdecydowanie więcej .
Nie jestem pewny czy procesor zdąży wykonać to co masz w tym przerwaniu , zanim przyjdzie następne (mam na myśli wszystko ).Program w przerwaniu ma być krótki , chyba że pierwsza linijka jest taka " Disable timer0 " , ale w twoim programie taka instrukcja raczej odpada. I jeszcze jedno , co się dzieje jeżeli podczas transmisji po i2c lub 1Wire przyjdzie...
jak z jednego czujnika to po co kilka kanałów? ale jeśli ma być kilka to do LM35 wystarczy ten przetwornik wbudowany w procek na ATMega8 (10 bitów) może lepszym rozwiązaniem byłoby dać czujnik na 1wire ? nie wiem co o tym myślisz, ale wtedy można dać jakiś tańszy procek bez przetwornika
W uC należy odpowiednio ustawić FUSE BITY!!! Poczytaj przyklejony temat.
Tak, AVCC jest podłączone. Program w Bascom: http://obrazki.elektroda.pl/8556711100_1... http://obrazki.elektroda.pl/5791017800_1...
Tak się "macha" magistralą 1wire ;) //inicjacja DDRC&=~(1<<PC0); //PINC bit numer 0 - wejście PORTC&=~(1<<PC0);//bez pull-up'a - high impedance //reszta operacji DDRC|=(1<<PC0);// 1wire=0 DDRC&=~(1<<PC0);// 1wire=1 x=PINC & (1<<PC0);//odczyt 1wire Złożyć do kupy,dopisać...
No to faktycznie muszę takie coś dopisać. No a jakby dopisać tylko IF-a który uzależni spadek napięcia poniżej 4V i wyzeruje piny przez które porozumiewa się z LCD , ELSE zrobi init , czyli jeszcze raz przypisze kontrolę (co na którym pinie przy Config LCD). [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin =...
Do 1wire zwykle daje tak patrząc od układu 1wire: rezystor około 100ohm rezystor do plusa (4k7) dioda do masy i dopiero na pin. Działa wyśmienicie. Można też podłączyć jeszcze malutki kondensatorek równolegle z diodą. ----------------------------------------... Schemat ten co powyżej tylko brak kondensatora i inne wartości elementów.
Witam, pytanie dotyczy połączenia między uC a układem RTC jak w temacie. Domyślnie połączenie dotyczyło RTC DS2415 gdzie łączyliśmy się z pinem 1-Wire (Input/Output). Fukcje: void send_1wire (unsigned char znak) { if (znak) {DDRB |= _BV(6);//sciagnij wyjscie 1wire do masy wait1w(3); //sciagnij linie na czas...
Podejrzewam, że błąd będzie gdzieś w samym schemacie/płytce, ponieważ przed chwilą złożyłem na stykówce na szybko układ: - Atmega8 - 1x DS18B20 - dioda led i wrzuciłem w niego program: Dodano po 3 Problem z wykrywaniem czujnika rozwiązany. Powodem całego kłopotu okazało się jedno ze złączy (przy magistrali 1Wire), które było uszkodzone i nie stykało....
Wystarczy to co jest wbudowane w Atmega8 na przykład. Problemem jest właśnie dzielnik... dostępność komponentów i ceny... Przykładowo w RS Components minimalne ilości to 5 sztuk x 2,7 + 30 zł koszta wysyłki i za 10 rezystorów płacisz... blisko 70 zł.
wg mnie najlepiej zastosowac termometry 1wire (np ds1820) i podpiac do jakiegos avr'ka najprostrza budowa podlaczenie i najlepsza cena (3 ds1820 ~ 3*8zl atmega8 ~ 8zl jakis najprostrzy wyswietlacz ~ 10zł) nie ma zadnego strojenia tylko jakis wyswietlacz albo cokolwiek co nam pasuje
Dzień dobry, Zbudowałem termometr cyfrowy oparty na układzie Atmega8 i czujniku DS18B20. Do tego podpięty jest wyświetlacz LCD. Termometr "pamięta" i wyświetla temperaturę maksymalną i minimalną z ostatnich 12 godzin. Do tego wszystkiego podłączyłem diodę RGB tak jak na schemacie: http://obrazki.elektroda.pl/6410117800_1... Zadaniem...
No i gratulacje. Tak podpowiem jak ktoś wykorzystuje tylko połowę UART`u, na przykład tylko nadaje temperaturę do jakiegoś modułu to pin RX jest bezużyteczny (nie działa na nim 1Wire ani dosłownie nic) Można go śmiało uruchomić wyłączając odbiornik (na przykład) w UCSR0B.4 = 0 który normalnie ma wyższy priorytet niż DDRB :) Przydaje sie taki myk też...
Jedyną przewagą LM35 nad DS18b20 którą dostrzegam to ta, że nie potrzeba implementować protokołu 1-wire który bywa kłopotliwy w zetknięciu z przerwaniami. Oooj tam Kolego kłopotliwy. Zerknij: - [url=http://www.firma.stsystem.pl/compon...
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...
Z racji że sąsiad poprosił mnie o wymyślenie jakiegoś patentu aby jego pompa od wymiennika CWU nie śmigała non stop więc wymyśliłem układ który załączy pompe gdy na powrocie spadnie temperatura poniżej 35 stopni. $regfile = "m8def.DAT" $crystal = 1000000 Config Portc = &B1000011 Pk Alias Portc.0 Config 1wire = Portd.5 Dim I1 As Integer...
Od kilku dni staram się uruchomić pomiar temperatury czujnikiem ds18b20. Pomiar niskich temperatur przebiega poprawnie. Po przekroczeniu temperatury 54stC na wyświetlaczu ukazuje się wartość 127. Poniższy kod jest skopiowany z tego forum, poza tym napisałem własne funkcje obsługi 1wire lecz skutek był taki sam. Programując uC bascomowymi procedurami...
Mcucr = Mcucr Or 2 W helpie wyczytałem że procesory serii Mega mają przerwanie INT0 tylko na niski poziom i wykonują się w kółko jak poziom jest niski. Z drugiej strony ATmega8 Bascom tolerował, ATmega32 już nie. Dokumentacja mnie wprowadziła w błąd. Omawiając przerwania jest odesłanie do strony z opcjami uśpienia, a powinno być dużo dalej do zegara...
Hmm... Spróbuj regularnie migać LED, jednocześnie komunikując się z PC, obsługując pomiar temperatury za pomocą 1wire (DS18B20) i wyświetlać ją na LCD, używając waitXX... ;) Timer0 jak nic do zastosowania... Tymczasem małe co nieco w załączniku (miganie LED z użyciem timera), zarówno dla ATmega8, jak i na ATmega8515. Ponieważ ATmega8 nie posiada przerwania...
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...
Witam , prosty program nadajnika attiny45 i odbiornika atmega8 wszystko chodzi poprawnie ale potrzebuje do jednej linii podpiąć 3 nadajniki i nie wiem jak zmodyfikować program odbiornika tak aby na lcd 4x16 każdy był identyfikowany osobno i odczytywany w osobnej linii lcd . Lcd i reszta jest do ogarnięcia główny problem to identyfikacja każdego nadajnika...
ok sprawdzę .. :) wielkie dzięki za pomoc :) Dodano po 40 nic z tego dodałem ustawianie strong pull-up i dalej mam to samo co wcześniej .. ow_wrbyte(0xCC); //SKIP ROM ow_wrbyte(0x44); //CONVERT T // OWPORT - port od 1wire // OWPIND - linia z dioda OWPORT |= _BV(OWPIND);// wlacz silny pull-up _delay_ms(20000); OWPORT &=...
Ok, dzięki za pomoc, już wszystko działa :) Powodem była zła płytka :/ miała zwarcie i już ją odesłałem z powrotem :) Ale mam jeszcze inne, nurtujące mnie pytanie.. Według datasheet ds18b20 ma zasilanie +5V na 1 nóżce ( patrząc na wypukłą stronę ), na 2 nóżce 1wire i zasilanie przez 4k7 Ohm, a na 3 GND. Ja na swoim czujniku mam zupełnie na odwrót .....
Oj kolego, poważny błąd - zasilaj prawidłowo mikrokontroler: http://mikrokontrolery.blogspot.com/2011... Dzięki za upomnienie, faktycznie gdzieś to przeoczyłem, na schemacie ideowym nawet masa wisi :) Poniżej zamieszczam poprawiony schemat ideowy i płytkę w EAGLE. Widząc duże zainteresowanie kodem wrzucam wsad w BASCOM....
jesli chodzi o transmisje to lepiej SPI lub i2c, nigdy 1wire - ten jest zdecydowanie za wolny do zastosowan ADC... Najlepiej po prostu najpierw ustalić rozdzielczość docelową, policzyć napięcie odniesienia dla tej rozdzielczości i wtedy dobrać przetwornik. Nawet 8-bitowy moze miec krok 0.02mV o ile dostanie odpowiednio male napięcie odniesienia....
Dzieki za linka problem rozwiazany:) .... . .. Config 1wire = Pind.0 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 100 1wreset 1wwrite &HCC 1wwrite &HBE i1 = 1wread(2) I1 = I1 * 10 I1 = I1 / 16 'If I1 > 0 Then Cls Ss = Str(i1) Ss = Format(ss , " 0.0") Config 1wire = Pinc.2 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 100...
Mam pytanie związane z tym termometrem - czy procek wymusza stan wysoki na linii danych DQ magistrali 1WIRE na czas konwersji temperatury, w celu realizacji zasilania typu "parasite"? Jeśli nie - to czy pomiar jest możliwy ? Czy pomiar może być obarczony dużym błędem ze względu na zasilanie czujników jedynie przez rezystory 4k7 ? "Klony" skasowałem....
Odnośnie metody pomiary temperatury tzn. analogowej (użycie ADC) czy cyforwej to zdecydowanie polecam, w okolicznościach jakie opisałeś, metodę cyfrową. Ponieważ: 1. Używając Bascoma odpada ci sprawa oprogramowania magistrali I2C czy 1wire (w sumie parę linijek i już). 2. Analogowe czujniki trzeba kalibrować, co nie jest na ogół łatwe i dokładne! 3....
Mozna zrealizować to na bardzo pospolitym mikrokontrolerze atmega8 (powinno wystarczyc) w cenie 15 zł. Portów jest tam wystarczajaco duzo. Pomiar temperatury na czujniku DS18B20 podłączonym na 1wire (2zł). Do tego zasilacz, kilka przekaźników i kwestia wykonania płytki. Pobór prądu jest znikomy. Przykładów kodu napisanego w jezyku c na mikrokontroler...
... zumek, zastanawialem sie nad ta funkcja, nie wiem co tam jest zle, funkcja pochodzi ze strony dallas semiconductor gdzie opisana jest kominukacja 1-wire, z tamtad tez sa zastosowane czasy opoznien przy komunikacji http://www.maxim-ic.com/appnotes.cfm/app... A ja , myślę sobie tak:" masz podaną na talerzu gotową funkcję, a rozbudowujesz...
Witam. Poszukałem trochę w sieci, poczytałem polskiego helpa do Bascoma i zlepiłem taki program: [syntax=basic4gl]$regfile = "m8adef.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1 Cursor Off Cls Deflcdchar 0 , 14 , 17 , 17 , 14 , 32 , 32 , 32...
... niestety tak. Pamiętaj - co Cię nie zabije, to Cię wzmocni :D Lepiej wtopa na początku na małym projekcie niż później na czymś 5x bardziej skomplikowanym ;-) Powodzenia, nie łam się, jeszcze wiele niespodzianek przed Tobą :D Nie jestem załamany, wręcz przeciwnie. Elektroniką zacząłem się zajmować kilka dni temu po odkryciu że w C można pisać programy...
$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 LCD Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 16...
Kolega ma nowy procesor. Prosto ze sklepu. Trzeba ustawić fuse-bity by pracował z zewnętrznym kwarcem - takim jaki jest podany podczas kompialcji. Inaczej cała transmisja 1wire idzie w maliny. Ewentualnie najpierw proszę zmienić zapis w dyrektywie $CRYSTAL na: $crystal = 1000000 Jek będzie dobrze to przycyzną jest taktowanie. ps. A swoją drogą. Tyle...
Piszę obecnie program obsługujący termometr ds18b20. Nie mogę wykorzystać gotowych bibliotek dostarczonych razem z kompilatorem (CodeVision), więc obsługę 1 wire napisałem sam na podstawie specyfikacji. Jednak poza wysłaniem resetu komunikacja nie przebiega poprawnie. Oto mój kod: /***************************************... This program was...
Witam serdecznie. Walcze już z tym drugi dzień. Na początku problemem było permanentne wskazanie 0 -1. Jednak gdzieś na forum znalazłem informację aby wymienić czujnik co okazało się strzałem w dziesiątkę. Teraz jednak mam inny problem. Maksymalna temperatura jaką chciałbym zmierzyć to około 100 stopni. Jednak po przekroczeniu wartości 35 stopni układ...
mi sie zdaje ze tu jest bład // procedura odczytu bitu od urzadzenie 1wire unsigned char wire1_read_bit(void) { unsigned char bit; WIRE1_0; //_delay_loop_2(4); _delay_us(2); WIRE1_1; //_delay_loop_2(40); _delay_us(20); if(bit_is_clear(WIRE1_PIN,WIRE1_... { bit=0; } else {...
Wow jaakim cudem nie znalazłem tego programu wczesniej ;] Ustawione jak zalecałeś ale dalej nic ;/ Apropo to jak już jesteśmy w temacie mogłbyś mi polecic jakąś ksiązke któa pozwoliła by mi nadrobić wiedze typu "skąd mam wiedziec że JTAG przeszkadza mi w komunikacji 1wire " .Wiesz o co mi chodzi STOP kończyłem pisac posta kiedy wpadłem na pomysł że...
$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega16 $crystal = 8000000 'deklaracja cześtotlwiości pracy 'Deklaracja portów od wyświetlacza LCD Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Cursor Off '**** Termometr **** Config 1wire =...
Znalazłem dwa ciekawe rozwiązania do obsługi MinCap 2 Pierwsze to Universal Frequency-to-Digital Converter (UFDC-1). Układ UFDC- 1 przetwarza dane z czujników pojemnościowych i komunikuje się po szynach I2C lub 1wire lub RS232 wszystkie standardowo obsługuje atmega8 . Ilość elementów zewnętrznych jest rewelacyjna to znaczy zerowa poza dostarczeniem...
Idea: Urządzenie ma za zadanie sterować przekaźnikami które będą załączać i wyłączać grzałki w zależności od temperatury w obudowie. Temperatura będzie wyświetlana na wyświetlaczu zgodnym z HD44780 2x16. Jeden termometr DS18S20 wew. obudowy drugi na zewnątrz i temperatury wyświetlane na wyświetlaczu. Dwa przekaźniki obsługują dwie grzałki i dwa wentylatory,...
Mruga tylko raz po kilkunastu sekundach a potem juz nie czyli nie nadaje ? Sprawdziłem dokładniej i po każdym resecie po ok 38 sekundach mrugnie ale potem już nie mruga, tak jakby się zawieszał program. Tak wygląda teraz program w odbiorniku ; [syntax=basic4gl] $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 16000000 $hwstack...
ok tadzik juz dziala :D Pomogles znaczy doradziles z tymi fusebitami Nalaeza ci sie te pkt ale jak bys jeszcze pomogl mi w polaczeniu tych kodow : $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 8000000 'informuje kompilator 'linia PB2 jako wejściowa Config Lcd = 16 * 1a 'konfiguracja typu wyświetlacza...
Witaj. ale......jak dodaje odczyt zegara to nie odczytuje go :( No to musisz nad tym popracować. Czy w przerwaniu chcesz umieścić cały program?? Tak się nie robi. No i po drugie. Przy odczycie temperatury robisz Waitms 750. Mało miałem do czynienia z 1Wire i nie pamiętam, czy opóźnienie musi być 750ms, czy może być np. 1000ms. Jeśli tak, to aż się prosi,...
Witam wszystkich forumowiczów. Mam problem ponieważ napisałem sobie program do pomiaru temperatury na Atmega8 z wyświetlaniem na LCD. Taktowanie procka to 8MHz wewnętrznym oscylatorem. Proszę o pomoc bo nie mam pojęcia już jak to ugryźć - wyświetla temperaturę 4095 C. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config...
OK. To tak - po pierwsze - transmisja USB na ATmega8 jest napisana, wystarczy wgrać - http://www.cesko.host.sk/IgorPlugUSB_RS2... i to faktycznie działa. Dalej - można i bez mikrokontrolera, ale potrzebujesz RS232 lub LPT albo coś, co pozwoli ci machać pinami tak, jak chcesz ty, a nie standard transmisji. Czyli jeśli...
Witam Jeśli idzie o mikrokontroler to można polecić coś z AVRów :). Ma wbudowany przetwornik ADC więc wielkości analogowe pomierzysz z czujnika cyfrowego DS też bez problemu. pozdrawiam Hehe zaraz zaraz... Jak mozna mierzyc wielkosci analogowe z czujnika cyfrowego DS za pomoca ADC?? :) DSa podlaczasz przez 1wire do procka, pozostale dwa czujniki maja...
atmega8 1wire atmega8 1wire bascom 1wire ds18b20 atmega8
klimatyzator sterowanie ciężka rozruch zimne silnik błędnie drukuje
Ustawienie diody w lodówce Sharp - porady i wskazówki Jak podłączyć EGR: przewody z płaskiej na kwadratową wtyczkę