... 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
Poza tym, że reset dotyczy maszyny stanów w urządzeniu 1-wire, a nie całego urządzenia, to cześć bajtów ze scratch pada to są komórki pamięci EEPROM - akurat nie te od temperatury, ale np. od alarmu już tak.
Kolega Mad Jaro mierzy czas pomiedzy INT-em i przelicza na obroty. zablokowanie INT spowoduje pływanie obrotów( INT nie liczy impulsow). Kolega xury ma rację odnośnie jednokrotnego użycia szukania czujników. A poza tym zsynchronizuj odczyt 1wire z przerwaniem INT tzn. komunikację z 1wire podziel na max -5 bajtowe odcinki i wykonuj je po przerwaniu INT....
[syntax=c]#define ONE_WIRE_SET_LOW ( GPIOA->BRR |= ( 1 << 3 )) #define ONE_WIRE_SET_HIGH ( GPIOA->BSRR |= ( 1 << 3 ))[/syntax] Powinieneś użyć normalnego przypisania "=", a nie logicznej sumy "|=". Nie ma to tutaj specjalnego znaczenia, ale warto o tym pamiętać. Sprawdź w manualu, czy timer którego używasz (jak wszystkie timery na...
static uint8_t onewire_0_reset(void) ; static void onewire_0_WriteByte(uint8_t data); static uint8_t onewire_0_ReadByte(void); #define WIRE_PORT_0 PORTC #define WIRE_DIR_0 DDRC #define WIRE_PIN_0 PINC #define WIRE_CON_0 3 union int16_t_LSB_MSB { struct { uint8_t LSB; uint8_t MSB; }; int16_t XSB; }; union...
ł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...
Proponuje przejzec note katalogowa do tego ukladu. Ze specyfikacji magistrali 1Wire wynika ze zawsze na poczatku transmisji musi byc reset, potem komenda np read rom i pastylka odpowiada na nia wysylajac nr seryjny.
Po pierwsze to ty jak zwykle w temacie, gdzie chodzi o AVR 8bit zaczynasz opowiadać jak to ty robisz na ARM'ach - a to nie ma nic wspólnego z tematem. Po drugie - panie kolego - może już przestań opowiadać o Delayu 750ms, bo myślałem że co do tego to chyba się rozumiemy - że to jakaś bzdura i tak się nie robi. Ja piszę o pozostałych delayach ale tych...
Może Reset 1Wire przed Skip ROM (0xCC) i Convert T (0x44) ?
Tak - aby odczytać później te dane będziesz już musiał przeprowadzić ww. sekwencję za każdym razem poprzedzoną resetem.
Używam linuksa i nie potrzebuję AVStudio. Wszystko co chcę mogę ustawić w pliku makefile - nie mam z tym problemu. Jednak mam nierozwiązany problem z obsługą 1WIRE i można się na tym skupić.
Już sobie poradziłem: 1. nieprawidłowa kolejnośc: reset, wymuszenie przetwarzania i odczyt 1wire 2. użyłem kompilatora fastavr32.exe No i wszytsko jest OK :) FastAVR, coraz bardziej mi się podoba.
Na początek każdą instrukcję od 1Wire obuduj takim czymś: [syntax=basic4gl] Disable Interrupts 1wreset 'Reset magistrali 1wire. Enable Interrupts Disable Interrupts 1wwrite &HCC Enable Interrupts ...[/syntax]
Tak robie reseta i jak nie mam presence to zapetlam reseta by czujka odpowiedziala. Czyli jakby nie wystapil presence to by mi program sie zapetlil na resecie 1wire i bym nie odczytal bledu FFh
Praktyka mówi że 1wire ma jeszcze bardzo szybki reset. Tak że układ i2c <> 1wiire na pewno się wyrobi.
Przy 1 urządzeniu na 1Wire nie ma potrzeby używać ani SearchROM, ani MatchROM, ani ReadRom, tylko wystarczy SkipROM. 1. Reset1Wire 2. Jeśli Reset poprawny to SkipROM (0xCC) i ConvertT (0x44) 3. Odczekanie czasu na konwersję 4. Reset1Wire 5. Jeśli Reset poprawny to SkipROM (0xCC) i ReadScratchpad (0xBE)
Mam klawiature foliową 6 przycisków. Wszystkie działają prawidłowo , tylko jeden konkretny powoduje reset. Naciśnięcie przycisku skutkuje zwarciem danego pinu do MASY. Najśmieszniejsze jest to, że po uruchomieniu programu(RESET) tylko na kilka sekund włączam 1wire(sprawdzam temperature na ds1820), włączam ADC by zmierzyć napięcie (na dzielniku 150k...
wątek stary .. ale moze... ja czasy w resecie 1wire mam na ok.380 us. powyzej nie działa mimo ze w datasheet jest min.480us moze to że mam sample. temperatura tez mnie oszukuje o jakieś 2-3 stopnie powodzenia
Bez resetu? Nic nie rozumiem z tego... Przeciez kazdą transakcję zaczyna się od 1wire_reset. Ten reset resetuje maszynę stanu protokołu 1wire w slave'ach. A standardowa transakcja składa się z: 1) reset 2) adres(match rom)/pomin adres(skip rom) 3) rozkaz 4) transfer (opcjonalnie) 5) reset (opcjonalnie, ale zalecane) Z punktu widzenia mastera właśnie...
$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ć...
U mnie dziala tak: 1wire_1 Alias P3.0 Dim T As Word Sub 1wire1 1wreset 1wire_1 ' reset magistrali 1wire 1wwrite &HCC 1wire_1 ' zaadresowanie DS'a - skip rom 1wwrite &H44 1wire_1 ' polecenie dokonania konwersji Wait 1 ' dajemy czas na konwersję (wystarczy 750ms) 1wreset 1wire_1 ' reset 1wwrite &HCC 1wire_1 ' adres 1wwrite &HBE 1wire_1...
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);//...
Jeszcze takie jedno pytanko... Jak ustawić fusebit'y? edit: Dodałem napisy "Witaj!", "Miłego Dnia!" i "Temp:" Problem w tym, że przy ujemnej temperaturze, minus pojawia się przed "Temp:" Jak zrobić, aby był przed wynikiem pomiaru (po napisie "Temp:')? Upperline Lcd " Witaj! " Lowerline Lcd " Milego Dnia! " Do 1wreset 'reset magistrali...
Transmisje z DS wykonuje 5 razy i sprawdzam, czy zawsze przychodzi to samo. Mam aktywne przerwanie timera, ktorz relizuje zegar czasu rzeczywistego. Po kazdym odczycie dwoch pierwszych bajtow wykonuje reset lini 1wire. Rzecz w tym, ze nie dostaje roznych odczytow tylko zawsze 0. Zauwazylem, ze 0 dostaje sie tez jak sie zewrze linie danych do masy. PL
Czy ja dobrze widzę, że w każdym obiegu pętli głównej wywołujesz DS1820a() a w niej za każdym rzem robisz reset 1wire? No to pętla ma sporo _delayów do zrobienia. Ja bym w procedurze obsługi timera zrobił multipleks LED'ów i flagę maszyny stanów do obsługi DS1820. Ponadto w pętli głównej w kółko liczysz co ma być wyświetlane na wyświetlaczu jak to się...
Nie słuchasz , co do Ciebie mówię ;) ... Config Pinc.2 = Output 'tryb wyjscia i stan niski na 1wire Kicha ;) Wypróbuj to Dim A As Byte Wait 1 Set Portc.3 Config Pinc.3 = Output 'VDD=5 Waitms 5 Reset Portc.3 'VDD=0 For A = 1 To 16 Set Ddrc.2 '1wire=0 Waitus 1 'w/g doku. 0.1-10us Reset Ddrc.2 '1wire=1 Waitus 1 Next A Set Portc.3 'VDD=5 Waitms 5 1wreset...
Pisząc reset mam na myśli sygnał wystawiany na linii 1wire.
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...
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 ->...
Inna rzecz, że nawet jak odczytam osobno numery seryjne (podłączając je osobno po kolei) to i tak nie działają razem. Nie działa dlatego iż inaczej się obsługuję magistrale jak masz jeden układ a inaczej jak wiele. Nie będę tłumaczył jak odczytać numery bo koledzy powyżej wskazali odpowiednią dokumentację łącznie z numerem strony. Jeśli masz parę układów...
Witam Po przesunięciu w prawo w miejscu gdzie mamy informacje o temperaturze +/- są uzupełniane automatycznie bity 0000 i nie mamy możliwości rozpoznania tego znaku Dlatego stosujemy maskę i wszystko wraca do normy Jeżeli kolega zumek ma inne rozwiązanie to proszę o przedstawienie kilku linijek kodu Jestem ciekaw jak to robią inni Ten kod był sprawdzany...
Przykładowy programik, ale dla DS18B20: Dim Bd(9) As Byte 'tablica Dim T As Integer 'zmienne Dim T1 As Integer Dim T2 As Integer Declare Sub Read18b20 'deklaracja procedury Cls 'inicjacja wyświetlacza Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 'def. znaku stopnia Cls Lcd "Temp:" Do 1wwrite &HCC 'rozkaz SKIP ROM 1wwrite...
hehe no racja nie widziałem tego ;) aktualna wersja : Config 1wire = P1.0 Reset P1 Set P1.7 Set P1.6 Set P3 Ledzolta Alias P3.0 Ledmieszanie Alias P3.1 Ledgrzanie Alias P3.2 Ledgrzalki Alias P3.4 Ledalarm Alias P3.5 Mieszanie Alias P1.6 Grzanie Alias P1.7 Wyj1 Alias P1.4 Wyj2 Alias P1.3 Wyj3 Alias P1.2 Reset Wyj1 Reset Wyj2 Reset Wyj3 Dim A1 As Bit...
Twoje makro OUT_1WIRE_LOW jest bledne - dziala na PIND zamiast na PORTD, p[odobnie OUT_1WIRE_HIGH.
Sygnały CS, SCK i SI połącz z uC bezpośrednio. uC w stanie spoczynku ustawia na CS HIGH a podczas komunikacji wystawia LOW. Nie zapomnij linii 1Wire podciągnąć do 5V rezystorem ~4K7 Pin 1 uC (Reset) też do 5V ~15K
...kabel koncentryczny to większy koszt zwłaszcza dla większych odległości, niż elektronika zabezpieczająca. Chcę zabezpieczyć procesor AVR przed resetami z powodu zakłóceń/przepięć na 1wire. Pzdr.
Witam. A jak chcesz uaktywnić ten drugi , skoro "ogłuchł" po wybraniu pierwszego i nie reaguje na żadene polecenie :?: Jedynie RESET magistrali może go ożywić :) Piotrek
Read ROM jest, gdy koniecznie chcemy uzyskać "Lasered ROM Code" - adres pojedynczego układu na magistrali, bo wtedy nie ma potrzeby wykonania Search ROM (oczywiście każdą sekwencję logiczną wymiany danych poprzedza się resetem magistrali). Do wywołania właściwego adresu jest Match ROM. Po wykonaniu tego dopiero postępujemy analogicznie jak po Skip ROM...
Oto mój program wykorzystujący LCD w trybie 4-bitowym, śmiga jak ... Jest tam obsługa LCD i 1wire, procedurki LCD łatwo wyłowić :) // ****************************************... // Project: Obsluga układu DS18B20 // Author: Zbigniew Chrobot // Module description: pomiar temperatury z DS18B20 kwarc 4MHz // wyswietlanie na...
Poniżej podaję przykładowy poprawny kod dla układu DS18 B 20, wyświetlający temperaturę z rozdzielczością 0,1*C: Dim Bd(9) As Byte 'tablica Dim T As Integer 'zmienne Dim T1 As Integer Dim T2 As Integer Declare Sub Read18b20 'deklaracja procedury Cls Lcd "Temp:" Do 1wwrite &HCC 'rozkaz SKIP ROM 1wwrite &H44 'rozkaz CONVERT...
hej niech ktoś podpowie czy dobrze rozumiem wywoływania jednego ds-a 1)RESET() - 1wire 2)wysłanie 0x55 3)wysłanie adresds18b20[0x28] -0 bit 4)wysłanie adresds18b20[0x..]-1 bit 5)wysłanie adresds18b20[0x..]-2 bit 6)wysłanie adresds18b20[0x..]-3 bit 7)wysłanie adresds18b20[0x..]-4 bit 8)wysłanie adresds18b20[0x..]-5 bit 9)wysłanie adresds18b20[0x..]-6...
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 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)...
Biorąc pod uwagę fakt, że jeden bit w 1-wire trwa kilkadziesiąt - kilkaset mikrosekund, oraz to, że można go zrealizować w pełni sprzętowo korzystając z UARTu, taka zabawa IMHO nie ma sensu. No racja :] Ale są przypadki gdzie moje rozwiązanie jest najoptymalniejsze. Ja mam do obsługi 8 czujników, każdy na osobnym osobnym pinie...Osiem UARTow?..:] BTW,...
A jak myślisz,po kiego grzyba funkcja "ow_reset()" zwraca "presence" :?: Żeby to sprawdzić w programie , a nie dla widzimisię. If(ow_reset()) { //cisza na 1wire ;) else //jeeeeest coś :) ... Ile razy można to wałkować :( Pozdrawiam Piotrek
Na podstawie noty trzeba to wykonac a więc bedzio wygładało to mniej wiecej tak : Declare Sub Odbior_reset Declare Sub Wysylanie_nr Dim Komenda As Byte , A As Byte Dim Nr_seryjny(8) As Byte config 1wire = portb.0 ' tutaj piszesz gdzie masz podłaczoną linie 1wire 'czekamy sygnał reset od master '*********************** Sub Odbior_reset bitwait...
domyślam się że chodzi o 1wire, co w tym takiego pamięciożernego? Instrukcje procedury w szczególności reset linii. Cała procedura odczytu temperatury z dallasa to prawie 1Kb!
Witam. Ze względu na warującą ostatnio na dworze temperaturę chciałem zrobić prosty termometr oparty na 89s52 i czujniku 18b20. Napisałem program i o ile pomiar temperatury działa należycie z dokładnością 0.5*C to mam spory kłopot z porównaniem i zapamiętaniem tej minimalnej- aby rano wiedzieć do jakiej spadła temp w nocy. Układ sprawuje się dobrze...
'***************************************... '*********************************1 WIRE READ************************************... '***************************************... Ds1_read: 1wreset Pinb , 0 'reset magistrali 1WIRE 1wwrite &HCC , 1 , Pinb , 0 1wwrite &HBE...
Ponizej caly kod programu. Procesor to dallas 89c430, podzial zegara ustawiony na 1. Wg. moich obliczen cykl maszynowy trwa: 1s/12*10^6 = 83.3ns 1us = 12 cykli maszynowych (996ns) Procedura delay_us(0) trwa dokladnie 12 taktow. Dla parametru 1 to dokladnie 24. delay_hus() opoznia o 6 cykli. Opoznienia tutaj wykorzystane znalazlem w jakims pdf maxima...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
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...
Witam. Zbudowałem termometr w oparciu o DS18b20. Chciałbym zapisywać co 1200 pomiar do tablicy 3-elementowej. Po zapełnieniu tablicy 3 pomiarami: pierwszy pomiar = 1 element tablicy drugi pomiar = 2 element tablicy trzeci pomiar = 3 element tablicy chciałbym porównać wartości i sprawdzić, czy temperatura wzrosła, czy spadła. Wszystko wydaje się proste,...
musisz odpowiedzieć centrali tylko wtedy kiedy Cię o to zapyta Takie coś zapewnia standard 1wire (czyt. slave odpowiada tylko wtedy gdy dostanie reset i adres od mastera) masz określony czas na odpowiedź. A czy ktoś powiedział, że ja chce wysyłać jakieś ramki, czy nawet że ma to być transmisja cyfrowa ? Jeśli weźmiesz nośną która jest odpowiednio wyżej...
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...
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 ??
Tu masz prosty programik, który kiedyś pisałem. Przedstawia obsługę zarówno wersji B jak i S. [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...
Zmien ten fragment: \code #define OW_PORT PORTD #define OW_BIT 2 \endcode na: \code #define OW_PORT PORTD #define OW_BIT 0 \endcode bo bylo ustawione na Port D.2 - chyba, ze tam podepniesz DS'a to bedzie smigac... Pozdro! Dodano po 3 a ten plik z kad wziasc?? 1wire_lib.h To jest wlasnie ten fragment: #include <avr/io.h> #include <inttypes.h>...
[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...
Witam Reset mam dokładnie tak ak na obrazku tylko mam dwa kondensatory równolegle.Próbowałem z jednym 100n i osobno 2,2uf efekt ten sam.
Witam Widzę że sporo problemów jest przy uruchomieniu sterownika na ATtiny13 i dlatego zwróce uwagę na kilka elementów jakie mogą być przyczyna kłopotów. - wsady ze stronki są prawidłowe i sprawdzone, - w FUSEBIT znacznik CKDIV8 musi być wyłączony!!! (przy nowym układzie jest domyślnie ustawiony), - oscylator wewnętrzy musi być ustawiony na 9,6MHz,...
A swoją drogą... iButton przecież będzie miał styczność fizyczną z przewodem 1-wire interface'u uC przez dosłownie mgnienie oka (producent zaleca chyba nie mniej niż 5 milisekund), toteż czy ten kod będzie na okrągło wysyłał jakieś impulsy sprawdzające czy na 1-wire "widać " iButton'a ?? Co będzie robił kod , to zależy wyłącznie od inwencji (oraz zdolności)...
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....
http://obrazki.elektroda.net/60_12870844... Witam. Termometrów na elektrodzie było już dużo, w tym projekcie nie ma nic specjalnego, poza tym że wykorzystuje w miarę nowy procesor LPC1343. Projekt umieszczam w sumie tylko po to żeby podzielić się źródłami. Mam nadzieje że komuś się przydadzą. Jak wiadomo, kto stoi w miejscu, ten się cofa....
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
jedyne co trzeba w zasadzie dodać, to że w rejestrze PORTC musi być 0, bo w przeciwnym wypadku po ustawieniu portu na wyjście przez DDRC na pinie będzie błędnie stan wysoki. Po resecie jest tam zero, więc w zasadzie może nie potrzebnie o tym wspominam, ale czasami możemy omyłkowo zapisać do tego rejestru i wtedy szukać błędu tam gdzie się go nie spodziewamy....
Mam problem z napisaniem programu rozpoznającego stany w sieci. Na wejście INT0 procesora podpiąłem sygnał z sieci 1Wire. Chciałbym rozpoznać trzy stany w sieci: - reset (czyli ściągnięcie linii danych do 0 na 480us) - nadanie 0 - (czyli 10us stan niski, 80us stan wysoki) - nadanie 1 - (czyli 80us stan niski, 10us stan wysoki) 0 i 1 następują po sobie,...
To jest przyklad tego jak mozna obsluzyc DS1820 przez mega 8 ale jest tam tez obsluga wyswietlacza w C.Moze sie pryda.Sam to dostalem od jednego kolegi z forum:-) wiec mam nadzieje ze sie nie obrazi...mnie interesowal DS. Pozdrawiam Maciek! #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <ctype.h> #include...
Ja też nie jestem pewny, ale nie wyobrażam sobie pisania programu obsługującego i2c, 1wire, rs232, rtc, 4094 i 74165 w pętli do loop...? Być może do tego jednak dojdzie - jak tak dalej pójdzie jak idzie. :-(
To nie jest poprawny zapis http://obrazki.elektroda.pl/3954802400_1... Życzę miłego dnia
witam - czy ktoś z was pisał program obsługujący te pastylki (w BASCOMIE) bo ja mam straszliwe problemy.... a może w asm-ie ktoś ma ? też mile widziane:) pomóżcie bo trace mase czasu przez to i nic nie dzaiła.... wszystkie układy 1wire oprócz pastylek wykrywa a samych pastylek nie... nawet reset magistrali niedziała... niemam tutaj aoscyloskopu więc...
http://obrazki.elektroda.pl/8851662100_1... Witam wszystkich Chciałbym tu zaprezentować swoją konstrukcję sześciocyfrowego wyświetlacza LED z interfejsem 1wire. O tym że 1wire jest chronione patentem dowiedziałem się już po zlutowaniu płytki w trakcie pisanie program. Mam nadzieję, że zmiana protokołu komunikacji pozwoli uniknąć złamania...
Mam problrm z zapisem i odczytem danych do DS18B20. Program wykrywa czujnik jednak po podaniu komend do pomiaru temperatury a następnie odczytaniu danych z DS w zmiennych temp1 i temp2 są same jedynki. W tej postaci na wyświetlaczu mam "Ok11111111" Kod programu: [syntax=c]#define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000)...
Witam mam problem z obsługą magistrali 1Wire a dokładnie z odczytem temperatury przez DS18B20, napisałem funkcje do podstawowej obsługi 1Wire, RESET działa poprawnie natomiast przy odczycie danych mam zawsze same 1. Dodam iż korzystam z płytki STM32DISCOVERY a czujnik szynę danych ma podciągniętą do 3,3V za pomocą rezystora 4,7K według noty katalogowej....
Klima napisał: No może nie do końca tak - 1wire zezwala na dowolnie długie okresy pomiędzy kolejnymi bitami, zatem można pokusić się o implementację poleceń "zapisz 1", "zapisz 0", "reset", "odczytaj bit", a każde z nich może być wysyłane w pojedynczym pakiecie po USB (bo inaczej się nie da) i realizowane przez ATmegę. Implementacja USB na ATmedze działa...
Trochę wiesz a jednak nic nie wiesz. Może i listonosz rzucił te listy na klatkę ale na każdym był adres. Wystarczy skrzynąć sąsiadów że poczta przyszła a każdy znajdzie coś dla siebie. Jak by ci się chciało poczytać to byś wiedział jak działa ten termometr kolegi DUCH. Najpierw poprzez reset magistrali 1wire i odpowiednio wysłaną komendę do tejże magistrali...
Mam następujący problem... chciałem napisać pod bascomem program czytający pastylki dallasa DS1990 mam ich siedem i żadna nie odpowiada na sygnał resetu program wygląda tak: Config Lcd = 16 * 1a Config Lcdpin = Pin , Rs = P1.7 , E = P1.6 , Db4 = P1.5 , Db5 = P1.4 , Db6 = P1.3 , Db7 = P1.2 Config 1wire = P3.3 Do 1wreset If Err = 0 Then Cls Lcd "ok" Waitms...
Witam, RXD jest alternatywną funkcją portu, UART lub USART - sprzętowe wsparcie dla szeregowej transmisji danych, nie korzystasz z tego przy implementacji 1wire. Możesz dowolnie zmienić pin procesora do którego będzie podłączony termometr. Pozdrawiam. GSM P.S. Kod który wkleiłeś pisał ktoś niekonsekwentny. Aby uzyskać łatwą zmianę używanego pinu, poza...
Są gotowe paski LED z diodami WS2812B - są to paski RGB ( czyli mogące świecić "dowolnym" kolorem ). Sterowane są właśnie 1Wire. W dodatku można ustawiać ich jasność a także sterować kolorem i jasnością poszczególnych diod w taśmie a nie tylko całą taśmą. Są oczywiście dużo droższe od taśm "zwykłych". Co do kodu - bardzo, bardzo martwi mnie duża ilość...
Witam, Temat wałkowany już 100 raz, ale od paru dni próbuje i nie wiem jak to rozwiązać:/. Mam podłączonego DS18B20 do atmega8a, kwarc wewnętrzny 8MHz. Początkowo układ nie chciał w ogóle współpracować i zwracał standardowe 85 C. Po modyfikacji sterowania pullup zgodnie ze wskazówkami mirekk36 z http://www.elektroda.pl/rtvforum/topic14... układ...
Psiemek. Rozwiazania ethernet sa zbyt drogie. 1-wire to prostota nawet bez mikrokontrolera. glowne elementy to : ds2405/6 , stabilizator, jakis tranzystor przekaznik i kilka innych drobnych elementow koszt ogolny 1szt. nie powienien przekroczyc 30 zl. avatar wlasnie doszly do mnie sample 2xDS2405 2xDS2406 ALE SZYBKO SZOK!! , prawie skonczylem projektowac...
Sprawdż do jakiego portu-pinu podłączyłeś magistralę 1Wire. Jeżeli używasz portu alternatywnego RXD TXD warto wyzerować programowo bity UART Reset UCR.3 Reset UCR.4 Miałem kiedyś podobny problem W rejestrze UCR (UART Control Register) bity 3 i 4 nie są standardowo ustawiane, co oznacza że końcówki TXD i RXD nie są używane przez UART. Nie jest to jednak...
Zrób trochę inaczej. Czekaj na reset i zobacz czy wystepuje z czujnikiem. Reset wygląda tak: - PORT jako wyjście, port w stan niski - delay 480us - PORT jako wejście - delay 70us - samplowanei wejścia (stan niski odbiorniki obecne) A ty zrób tak: - PORT jako wyjście, port w stan niski - delay 480us - PORT jako wejście - delay 1us - while(PORT w stanie...
Program winien wyświetlać godzinę na lcd 4x20 (jako duże znaki) a co chwila przełączać się w tryb kiedy pokazuje temperaturę i dodatkowo datę. Dodana jest także regulacja jasności LCD(PWM) wykorzystując fotorezystor(ADC). W załączniku program. Program działa przez pierwsze kilka minut dobrze, później temperatura pokazuje się w obu przypadkac 0 stopni,...
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...
Witam, czy jest jakiś ogólny sposób sprawdzenia obecności wybranego urządzenia na magistrali 1wire? Mam 4 x ds1820 i wszystko działa ok. Usuniecie jednego czujnika daje dla niego wynik pomiaru 128 stopni. I to mozna wykorzystać jako test. Ale co z innymi urzadzeniami? Wysyłam reset, potem MatchRom , adres urzadzenia i co dalej robić? W Bascomie widziałem...
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...
Wyczytałem, że: inicjalizacji polega na wygenerowaniu przez komputer impulsu Master Reset o czasie trwania min. 480?s. Jak to wygląda w LabWindows? Napewno tak samo, cała komunikacja 1wire opiera się na zależnościach czasowych.
//***************** CZUJNIK TEMPERATURY ********************** // Definicje dotyczace 1wire #define PORT1Wa PORTB // port z podlaczanym 1Wire #define DDR1Wa DDRB // port z podlaczanym 1Wire #define PIN1Wa PINB // port z podlaczanym 1Wire #define ONEWIRE 0 // bit uzytego wejscia // 1wire podlaczony jest do PORTB.0 #define WIRE_0a sbi(DDR1Wa, ONEWIRE)...
No gotowiec jest, a (może o tym zapomniałem wspomnieć) jeśli chodzi o podłączenie LCD itd, to ja podałem podłączenie tylko tych pinów które są TYLKO I WYŁĄCZNIE pomiędzy LCD (DS1990A) a uC, reszta pinów LCD (jak m.in. wspomniane RW) powinna być podpięta domyślnie jak w standardowych projektach. Czyli wszystkie piny typu Reset, do kwarców, zasilania...
Witam, To co ja pisałem to nie jest kwestia teoretycznych rozważań, pierwszy raz na poważnie zabrałem się za napisanie własnej obsługi dowolnych DSxxxxx tutaj: http://www.elektroda.pl/rtvforum/topic14... W międzyczasie spokojnie działa mi oczywiście RS232 z prędkością 115200 ale też każdą inną i jak zawsze w moim projekcie jeszcze kilka innych...
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...
Witam, Chciałem obsłużyć 1-wire na atmega8 z czujnikiem ds18b20, napisałem program i zaczęło wszystko działać dobrze. Ale jak zwiększyłem taktowanie uc powyżej 1MHz to już komunikacja z termometrem nie działa i nie mam już pomysłów dlaczego? Do DS18B20 jest podpięty GND, VCC i rezystor 4,7k między VVC - DQ. Diody podpięte do PC0, PC4, PC5 sygnalizują...
Najprawdopodobniej problem stanowi procedura "Waitus".Wykonanie "Waitus(1)" , dla proca z kwarcem 1MHz , trwa ~23 uS(zajrzyj do pliku *.lst) , a czas tRDV(początek timeslot) wynosi max 15 uS. unsigned char slot_odbierz1w(void){//odbi... bit nadany przez urz. 1wire unsigned char bit1w; //w w jednym slocie czasowym cbi(PORT1w,PIN);...
Osobiście lubię programować i mi to w niedzielę nie robi problemu, ale tutaj wkradł się błąd logiczny i to pewnie związany z tym, że "Niedzielna praca w nic się obraca" ahahaha :D Żądanie konwersji odbywało się co 100ms a nie co sekundę... Niemniej rozbiłem to jeszcze bardziej. Sprawdź podmieniając w poprzednim kodzie tylko tę całą pętlę główną. Jak...
Witam. Ja zrobiłem obsługę 1wire na uarcie i tym sposobem nie martwię się o czasy, 115200 przy normalnej pracy i reset przy 9600. Prędkości są tak dobrane aby nie martwić sie o czasówki. Śmiga do dzisiaj jak trzeba. Jedyne co trzeba zrobić to zastosować 2 bufory odpowiednio połączone i śmiga jak trzeba. Wadą rozwiązania jest zajętość niestety 2 nóg...
Myślałem nad zabezpieczeniem linii 1Wire, ale ten układ jest nieaktywny na linii dopóki nie uaktywni się go przynajmniej sekwencją "stan niski na wejściu >480us -<960us" Emulujesz więc musisz akceptować reset do 3,8ms. Czy pomiędzy bitami może być dowolnie długi stan wysoki i emulator nie przestanie w takiej sytuacji odpowiadać/interpretować...
witam Przeszukując elektrodę można znaleźć mnóstwo procedurek dotyczących 1-wire na AVR ale niestety w większości pod język C lub bascom. W jednym wątku znalazłem jakieś procedury ale jak ktoś w nim zauważył z błędami. Kolejną procedurkę znalezioną w kursie asm pod avr znalazłem na mikrokontrolery.net. Procedurki są ustawione pod 4MHz. #define DQ_PORT...
Program nie da się nawet skompilować, bo raz jest użyte odwołanie WIRE1_RESET innym razem RESET_1WIRE a definicja jest jedna. Czy oprócz tego pdf są do pobrania jeszcze jakieś źródła, bo w tym pdf nie ma użycia ani definicji WIRE1_RESET ?
Drodzy koledzy. Dziękuje wszystkim za pomoc w temacie, lecz jak zwykle błąd był w przeoczeniu głupiej rzeczy w kodzie. Muszę stwierdzić, że nie mieliście racji co do czasów magistrali gdyż jak się okazało są one dobre (byłem o tym przekonany gdy pisałem kod z wykresami przed oczami i sprawdzałem w symulatorze) Błąd w 1 kodzie tkwi w że nie można użyć...
1wire reset magistrali 1wire reset magistrala esp8266 1wire
renault laguna przycisk otwieranie centralnego zamka awaryjne komputer długo włącza
silnik kohler teltonika konfiguracja
Ford Galaxy Mk1 - Umiejscowienie ECU Brak iskry w silniku Briggs & Stratton - przyczyny i rozwiązania