https://obrazki.elektroda.pl/2327631000_... Niedawno w jednym z podobnych tematów wspominałem, że na dniach będę swoją drugą już wkrętarkę przerabiał no i te "na dniach" nadeszło :) W zasadzie nic odkrywczego tu nie napiszę ale być może ktoś coś wykorzysta. Przerabiana wkrętarka to 18V Einhell. Bardzo mi jej szkoda było, bo ma świetne...
Tak, tylko może się to wiązać ze zmniejszeniem rozdzielczości pomiaru. Lepiej wykorzystać potokową budowę ADC i odpalać kolejne konwersje w kolejnych kanałach, dzięki temu uzyskasz 2 Msps przy nominalnej rozdzielczości 12 bitów.
Nie warto, bo nie polepszy to jakosci - material zostal uciety i uproszczony, i informacja zniknela. Kolejna konwersja jeszcze bardziej zdegraduje material.
Może już po podniesieniu CS powinieneś puścić ekstra 8*CK. Poza tym czas konwersji to 0,22s więc pewnie dopóki nie wykona kolejnej konwersji nie wyśle Ci nowych danych.
Błąd w logice. Twój kod czytam tak -> Dopóki zmienna nie ma 5 to cały czas resetujemy pomiar i startujemy nowy (już Select Case byłoby lepsze). Potem próbujemy to czytać jak zmienna ma powyżej 100. No daj spokój. Są tu tego tony jak to obsługiwać. Mój/nie mój sposób to dwa suby. Jeden Startuje konwersję a drugi Czyta. Sprawa polega na tym by odwrócić...
Ja bym to jednak zrobił tak jak wynika z twojego opisu programu bascomowego. Czyli timer na 8kHz, w przerwaniu timera odczytujesz ADC i startujesz kolejną konwersję. ADC musi być tak ustawiony, aby skończyć konwersję przed kolejnym przerwaniem timera, co nie jest problemem. Dzięki temu masz gwarancję, że przy każdym przerwaniu timera (z wyjątkiem pierwszego)...
85 ST jest wartością domyślną wpisaną do rejestru w którym przy kolejnych konwersjach DS wpisuje już zmierzoną temp i przy pierwszym pomiarze zawsze taka liczbę odczyta. Może gdzieś nie łączą przewody i czujnik traci na chwile zasilanie i wpisuje to wartość domyślną.
Oj pomieszałeś :) Dwie możliwości: Pierwsza wersja (opisałem wyżej): 1. wyłącz Free Running 2. zostaw przerwanie ADC, 3. przed pętlą główną w main() wywołaj pierwszą konwersję, 4. w przerwaniu ADC wykonuj to, co aktualnie wykonujesz w przerwaniu + wystartuj kolejną konwersję. Druga wersja zaproponowana przez BlueDraco: 1. wyłącz Free Running 2. zostaw...
Mikrofalowniki do magazynu mają się jak pięść do oka. Mikroinwertery zamieniaj DC na AC tuż przy panelach PV a magazyn ładowany jest prądem DC. Więc dochodzi kolejna konwersja. Trzeba by zastosować jakiś retrofit żeby, to razem spiąć.
Zmień podejście. Tryb free running praktycznie nie nadaje się w sytuacji w której planujesz zmieniać kanały. Lepiej zastosować single conversion i przerwania. W takiej sytuacji w procedurze obsługi przerwania zapisujesz do tablicy wartość ADC, inkrementujesz indeks tablicy, inkrementujesz ADMUX (kanał) i zaczynasz kolejną konwersję. I tak w kółko. W...
Referencja jest zdecydowanie stabilniejsza i rozrzut też jest mniejszy co widac w nocie. Co do max samplowania to spraw anie jest prosta - z jednej strony wzmocnienie wprowadza dodatkowy takt opóźnienia, ale z drugiej masz 2 ADC z 4-kanałowym pipeline, z możliwością rozpoczynania kolejnych konwersji co 1 takt zegara ADC. W połączeniu z możliwością precyzyjnego...
Chodzi mi ko konkretnie o hierarchiczny podział projektu i interaktywny routing(gdzieś film z tym widziałem i chciałbym wypróbować) Na chwilę obecną to chyba tylko podręczniki KiCada dostępne z poziomu menu Pomoc. Natomiast co do konwersji bibliotek Eagle, to nawet jeśli uda się je przekonwertować na format KiCada, to biblioteki płytkowe mogą wymagać...
Chcąc bezproblemowo zmieniać kanały powinieneś zostawić GETADC() i w konfiguracji zmienić na SINGLE . W trybie FREE przetwornik mierzy ciągle (ustawiając flagi przerwania ADI F po każdym pomiarze), a ostatni wynik będzie znajdował się w zmiennej specjalnej ADCD (typu Word ). Jednak zmiana kanału pomiaru jest nieco problematyczna, bo kanały musiałbyś...
Oj mylisz się :) Ponieważ nie ustawiliśmy bitu ADATE, przetwornik wcale nie jest w trybie freerunning. Więc kolejne konwersje wcale nie robią się same. W trybie single (konfiguracja taka jaka jest u mnie) konwersja występuje wtedy gdy ustawimy bit ADSC. Bit ten jest tak długo ustawiony, dopóki trwa konwersja, więc najprościej zrobić pomiar tak: ADCSRA...
nie wiem, czy do oddzielenia części całkowitej ma być użyta kropka, czy przecinek - to potrafi zależeć od języka, na który ustawiony jest komputer (dla en_US to jest kropka, dla pl_PL przecinek; jest jakiś trick, żeby to nie zależało od języka, ale nie pamiętam. Format string: %.; %,; %; Ustawia kolejno: kropka, przecinek, wg. ustawień systemu. Obowiązuje...
można PDF a można zainstalować drukarkę postscriptową i schemat oraz kolejne warstwy wydrukować do postscripta
Teraz preskaler dla ADC ustawiony jest na /32 ADCSRA = 0b11110101 ; // wyczyść bit ADIF, tak, że ADC może rozpocząć kolejną konwersję (0xF5) A gdyby bity ADPS2-0 zmienić na 111 (podział przez 128) ADCSRA = 0b11110111 ; i sprawdzić czy czas wydłużył się x4? (konfigurację ADCSRA widzę w dwóch fragmentach programu) Dobrze byłoby ustawić ADIF przed rozpoczęciem...
Odrzucanie pierwszego wyniku, czy też serii wyników, to tylko proteza do źle zaprojektowanego algorytmu. Takoż samo algorytm używający jakiegoś opóźnienia (nie piszę o delay). Jak komuś zależy na dokładności, to nie używa wbudowanego, powolnego i mocno ograniczonego ADC A to jest demagogia, w obronie jakiś dziwnych tez. Zresztą opóżnienie Ja piszę...
Na pewno pogorszy. Każda kolejna konwersja pogarsza, bo jest stratna.
Interesujące byłoby również wykonanie kolejnego małego projektu pobocznego - konwersji z TuyaMCU do deepsleep Beken
A widzial kolega to: http://www.elektroda.pl/rtvforum/topic17... Zwróć uwagę co robię z INT0 podczas odczytu 1W Poza tym u Ciebie w podprogramie odczytu temperatury nie dajesz nic wytchnienia dallasowi i czytasz temperaturę zaraz po rozkazie konwersji. Kolejna sprawa to czy zawsze przed odczytem musisz szukać czujników? Nie lepiej jest to zrobić...
Nie wiem czy to interesujące, ale z ciekawości przeprowadziłem próbę 20-krotnego kopiowania D/A->A/D. Czyli 20-stu kolejnych konwersji do analogu i z powrotem na cyfrę. Interesujące i pokrzepiające zarazem :-) Być może konwersje nie takie straszne jak przypuszczałem.
W free running mode ten bit sluzy tylko do zainicjowania pierwszej konwersji. Potem nic cie nie interesuje, bo kolejne konwersje zachodza dopiero kiedy odczytasz ADC.
Czyżby kolejne PM tylko fundusze potrzebne?
Witam, problemy kolegi autora mogą wynikać z: - już leciwego odtwarzacza CD, laser może być zużyty, a to będzie wymagało użycia lepszych płyt CD do nagrywania, proponuję (jak już wspomnieli poprzednicy) "niebieskie" płyty, mnie nigdy nie zawiodły, najsłabsze są te "ledwo złote". - czy odtwarzacz jest przystosowany do odtwarzania tak nagranych płyt?...
Jeśli dasz flush za każdym razem oczywiście musi też zdawać sobie sprawę z konsekwencji. Lepiej ustawić tak ADC aby na pewno było gotowe do kolejnej konwersji przy następnym trygerzu. Wtedy też konwersja wystartuje przy następnym takcie zegara.
A... Zapomniałem. Kolejna konwersja będzie wstrzymana dopóki nie odczytasz adch. Daj: in r21,adcl in R25, adch i po sprawie.
Wydaje mi się, że potrzebujesz dobrego filtrowania zasilacza bo chyba zasilanie w samochodzie jest dość "zanieczyszczone". Stosowanie kolejnego LM7805 jako konwersja sygnału moim zdaniem nie jest idealnym rozwiązaniem natomiast możesz zastosować taki układ jak poniżej. http://obrazki.elektroda.pl/6232985200_1... PS sory za jakość rysunku...
Dla wyjaśnienia: 48 to numer porządkowy cyfry "0" w tabeli ASCII. Kolejne cyfry mają kolejne numery, więc w ten sposób przeprowadzana jest konwersja z liczby na znak.
Możesz zmienną rozbijać na 4 bity i kolejno te 4 bity inkrementować i jeżeli przekroczy 10, to wtedy inkrementujesz kolejne 4 bity itd. Lub konwersja na 10 i tak chyba najprościej...
to rozwiązanie z czasami, rozumiem. U mnie raczej żadne przerwanie nie wcinało się podczas 1wread, ponieważ korzystam tylko z przerwania t2 generowanego raz na sekundę i na początku przerwania wykonuję 1wread potem zapuszczam kolejną konwersję i wracam w kolejnym przerwaniu po sekundzie.
Ale to już niekoniecznie. Skoro pomiar ADC będzie najczęściej co 1 ms, to spokojnie w przerwaniu timera można odczytywać ADC i rozpoczynać kolejną konwersję, której wynik odczyta się w następnym przerwaniu timera i tak w kółko.
[syntax=c] ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // czyli automatycznie po zakonczeniu wyzwala kolejna konwersje ADC_RegularChannelConfig(ADC1, ADC_Channel_4,1,ADC_SampleTime_384Cycles... //16mhz/384+kilka cykli co daje okolo 37 Khz [/syntax]
Czemu od razu cioptoki ;) To jest zabezpieczenie przed "uszkodzeniem" wyniku przez kolejną konwersję, która mogła by uaktualnić ADCL i ADCH pomiędzy odczytem młodszego i starszego bajtu (w trybie ciągłym to jest możliwe). W dokumentacji o tym pisze...
Czy można w jakiś prosty sposób skonwertować daną typy REAL (zadawaną w nie-siemensowskim panelu) na daną S5Time - nastawa timera: REAL <0.1s-9.9s>. Chodzi mi o wbudowaną funkcję, na "piechotę" przez kilka kolejnych konwersji się udało. Pozdrawiam
Chodzi o to że te dwa dodatkowe bity rozpoczną kolejną konwersję (z kolejnego kanału). I niemożliwe będzie odczytanie kolejnej próbki z pierwszego kanału, a nawet odczyt drugiego kanału, bo układ będzie czekał na brakujące takty. Chyba mamy inne datasheety. W tym co ja czytałem konwersję rozpoczyna 0 na CONVST, a odczyt kończy 1 na CS. I nic o żadnym...
To co piszesz jest niemożliwe. ADC nie może nie zwrócić wartości. No chyba że funkcja konwersji by się zawiesiła ale z Twojego opisu wynika że się nie zawiesza. I że niby funkcja przechodzi do kolejnych konwersji nie zwracają wyniku z poprzedniej. A tak nie może być. Odczyt może co najwyżej być błędny, ale jakiś musi być.
Niestety, jedyny sposób to podnieść minimalną jasność w setupie (program P5) do takiego poziomu żeby to błyskanie nie było widoczne. Te błyski spowodowane są koniecznością wyłączenia przerwań na czas obsługi Dallasa, co niestety ma wpływ na płynność multipleksowania i regulacji jasności wyświetlaczy. Mogę spróbować jeszcze knifu z odczytem dallasa tylko...
Okazało się, że konwerter, którego używałem obcinał obrazek. Ale przy kolejnej konwersji było już dobrze. Chyba przy zbyt dużym obciążeniu komputera programik się wykrzaczał, jak dałem mu na spokojnie przeliczyć bitmapę to jest OK. Darrek, dzięki za programik, ale nie chce mi się uruchomić. Trzeba go odpalać z linii komend, czy jak?
2. Nie. Odwrotnie. Piny są używalne czyli możesz ich używać. ADC nie ma tutaj nic do rzeczy. 1. Nic nie musisz sprawdzać. Jak wystąpi przerwanie to znaczy że konwersja się już zakończyła. A dwa, sprawdzanie nic nie da, bo od razu po tym rozpoczyna sie kolejna konwersja więc sprawdzanie nic Ci nie da (wyjdzie Ci że konwersja jest w trakcie).
Chyba koledzy nie zauważyli że kolega ciągle ustawia ADMUX i korzysta z pierwszego odczytu. U mnie odczyt jest stabilny i ani razu nie schodzi poniżej 1023 a mierzę te 5V co 500ms jak Ty bez cudów filtrowania. TYLKO ja pomijam/odrzucam wynik pierwszej konwersji BEZPOŚREDNIO po ustawianiu rejestru ADMUX Wystartuj konwersję jeszcze raz i napisz jak wygląda...
W trybie single conversion - kiedy wejdziesz w przerwanie i obrobisz dane uruchamiasz kolejna konwersję. Filtr dolnoprzepustowy sumujesz pierwsze N pomiarów, przy kazdym kolejnym odejmujesz od tej sumy 1/N tej sumy i dodajesz kolejny pomiar. Jak sobie to przemyslisz to zobaczysz ze szybkie zmiany zostaną "spłaszczone" - usrednione a jezeli pomiar bedzie...
W prostych projektach zasilanie załatwiałem bez silnego pull-upu w poniższy sposób: http://obrazki.elektroda.pl/6849255000_1... Kondensator jest rzędu 47uF. DQ jest podciągnięte do +5V prze opornik 2k2. Trzeba tylko pamiętać żeby po starcie zasilania i po konwersji poczekać chwilkę z kolejną konwersją na naładowanie się kondensatora.
5 post od góry Ślepy byłem chyba :) Zajmuję się wagami, ( chociaż używamy np s7-200 ) i używamy tylko komunikacji rs a nigdy analog bo z wielu powodów to problem. Wynika to chociażby z kolejnej konwersji sygnału co nanosi kolejne błędy. Pytanie czemu autor wątku nie stosuej tego łącza.
Konwersja energii? Kolejny przykład alternatywnej rzeczywistości? Podręcznik fizyki szkoła średnia, hasło "przemiany energii" bardziej pasuje. Konwersja energii to poprawne wyrażenie. https://pl.wikipedia.org/wiki/Konwersja_...
Po taby odległości pomiędzy próbkami były identyczne. Odległości pomiędzy kolejnymi rezultatami konwersji też są identyczne. Czasy wysyłania określonej porcji informacji też są identyczne. Więc albo rozwiń albo Twój post jest bezwartościowy. Albert
Zgodnie z dokumentacją, w obecnej konfiguracji, czyli jeśli wejścia CS i RD są ustawione w stan niski to pojawienie się zbocza opadającego na wejściu WR rozpoczyna konwersję. Oznacza to, że zwarcie przycisku rozpoczyna konwersję danych. Po konwersji dane są zatrzaskiwane i stan wyjść utrzymywany jest do kolejnej konwersji (naciśnięcia przycisku). http://obrazki.elektroda.pl/5709816300_1...
I na nim też straci deko mocy z silnika. Dodajmy jeszcze że musi być akumulator, a na wyjściu tego ustrojstwa nadal będzie tylko 12V. Dochodzi więc jeszcze konwersja na 230. Kolejne straty a i przetwornica 2kW z realnym sinusem tania nie jest. Jak realnie policzyć wszystkie graty do kupienia i robociznę to taniej wyjdzie kupić nowego gotowca albo nawet...
Masz skasować flagę timera OCF0A Wiem, wiem... Skasowanie flagi w przerwaniu ADC załatwia temat. Na przyszłość nauczka by słowo w słowo czytać datasheety. No i logika jakaś potrzebna. Skoro wystąpiło zdarzenie Compare Match A to stosowna flaga jest ustawiona. Występuje zdarzenie rising dla ustawionego triggera, które wyzwala konwersję ADC. Nie mamy...
Witajcie. Za pomocą AVR ATMEGA8 chcę próbkować sygnał analogowy ze stałą częstotliwością, na przykład Fs=12kHz. Interesują mnie próbki 8-mio bitowe. Wydaje mi się, że są dwie możliwości. 1. W trybie free running użyć kwarcu o częstotliwości Fs * 13 (cykli przetwarzania) * preskaler. Czy wtedy przerwania od przetwornika będę dostawał po każdym zakończeniu...
1. Jak chcesz odczytywać tylko jeden bajt, to lepiej ustawić ADLAR=1 i odczytywać ADCH zamiast ADCL, z którego będziesz mieć dosyć losowe odczyty po obcięciu dwóch najstarszych bitów 2. W obsłudze przerwania odczytujesz wartość z ADC i ... nic więcej. Nie uruchamiasz już kolejnej konwersji (ani ADC nie chodzi jako free-running) i w sumie od tego momentu...
Tak na marginesie spotkalem sie z takim zjawiskiem "przesłuchow" miedzy poszczególnymi wejsciami ADC szczególnie przy niskich napieciach (<2.7V)zasialania atmegi. Podejrzewam ze powodem jest to zbyt wolne przełączanie multipleksera wewnetrznego. Moment przełaczenia w/g noty nastepuje dopiero po wystartowaniu konwersji. Jedyną radą było to, że po...
Moim zdaniem problem nie tyle leży w ilości przesyłanych danych, co w braku weryfikacji, czy dane zostały wysłane i można wysyłać następne - nie sprawdzasz statusu, jaki zwraca sendBroadcastFixedMessage(). Nie sprawdzasz również, czy w Serial1 (do którego podłączony jest moduł LoRa) jest gotowy na przyjęcie kolejnych danych (funkcja availableForWrite())...
UPS pracujący na bateriach na pewno pomoże w poszukiwaniu rozwiązania, natomiast nie rozwiąże problemu ja tu czasem nie wyłączam zasilania po kilkadziesiąt godzin z rzędu. Sam pobór wbrew pozorom nie jest jakiś duży, pewnie komp i dwa monitory to największy odbiorca prądu, potem mikser i odsłuchy. Syntezatory mają pobór dość symboliczny. O kondycjonerach...
Niestety z telewizorami to jest na zasadzie albo pojdzie albo nie. Nie raz widzialem jak telewizor jednego dnia odtwarzal filmy poprawnie a innego dnia pokazywal ze format nieobslugiwany (takie przypadlosci telewizorow). Dlatego warto sprawdzic za pomoca programu [url=http://www.elektroda.pl/rtvforum/vi... jakie...
Problem leży najpierw w założeniach. Chcesz przesyłać wynik co 100 us, a transmisja jednego bajtu przy 19200 zajmuje ok. 500 us. Zacznij od przeliczenia wszystkich parametrów. Potem dobierz częstotliwość taktowania procesora. Zaprogramuj timer na częstotliwość próbkowania. W przerwaniu timera czytaj wynik poprzedniej konwersji,wyzwól kolejną konwersję...
Działa zawsze tak, że każda kolejna konwersja daje w wyniku kolejny kanał. Masz więc kilka opcji: 1. Konwertujesz 1 kanał jak poprzednio i po zakończeniu konwersji zapamiętujesz i konfigurujesz następny itd. TI nazywa to Single-Channel Single-Conversion Mode w swojej dokumentacji. I ten tryb jest najprostszy w zrozumieniu, niekoniecznie najefektywniejszy....
eh, to dosyć proste funkcje - można to zrobić samemu: 1. konwersja dec->bin - dzielisz sekwencyjnie przez 2 i zapisujesz kolejne reszty z dzielenia 2. konwersja bin->dec - bierzesz kolejne cyfry i sumujesz cyfra*(2^(pozycja cyfry))
Możesz użyć trybu free run, powstanie tylko problem jak rozpoznać który wynik pochodzi z którego wejścia. Trzeba robić to synchronicznie, np. z wykorzystaniem DMA. Dlatego być może prościej jest skorzystać z event system, któy wyzwala kolejne konwersje. A ograniczenie masz w rejestrze SCAN. Masz tam dwa pola - offest do kolejnego wejścia i pole count...
Przeczytałem za Ciebie drugi raz te notę katalogową :P The full 47-bit data word is latched into the device on the rising edge of the Chip Select waveform, at this time the loaded data is acted upon and the circuit configuration/settings will change. Oznacza to iż urządzenie zaczyna słuchać zaraz po opadającym zboczu CS i czeka na 47-bitów. Potem zatwierdzasz...
jest jakis "krzak" w testbench'u który blokuje symulację i za bardzo nie wiem jak to obejść. po kilku probach poddalem sie, vhdl to jednak koszmarek... [nie mam zamiaru wszczynac dyskusji o wyzszosci jednego jezyka nad drugim]; ja bym na poczatek zmienil 'failure' na 'warning' w TB i wyswietlal co jest oczekiwane, a co otrzymane; proste to nie jest,...
Panele dają prąd tzw stały (o stałej polaryzacji) i przeważnie relatywnie wysokim napięciu (200 V i wyżej ). Akumulatory to przeważnie zależnie od mocy i pojemności układy typowo o napięciu 12, 24 i 48V. W sieci energetycznej i domowej masz (lub powinno być) 230 V AC czyli przebieg napięcia jest sinusoidalnie zmienny a jego wartość skuteczna powinna...
Czemu zmieniłeś typy zmiennych na float? W tym momencie konwersja wykonywana jest tylko raz. Powinieneś ją startować w każdym przerwaniu timera, pamiętając o tym, że czas konwersji powinien być krótszy niż okres w jakim wykonuje się przerwanie. Dodatkowo powinieneś przełączać kanały po odczycie wartości, przed wystartowaniem kolejnej konwersji. Jak...
Zmieniłem, teraz dobrze ? http://obrazki.elektroda.net/54_12125885... OK. Teraz zastap R6 (* - poprawka, bylo mylnie "R1") dwiema grubymi diodami Si, np. 1N54xx, wlaczonymi "przeciwsobnie". Nie zawadza tez dwie diody 1N4448 lub tp. od (+) WO do +/- jego zasilania. R4 stanie sie Rsense. Rsense = 5kΩ dla Uo-max=+5V, 10kΩ dla Uo-max=+10V....
Bo nie zerujesz flagi przerwania. Podczas porównania ustawia Ci się flaga przerwania OCF0A w TIFR0. Normalnie w czasie obsługi przerwania taka flaga się kasuje samoistnie ale u Ciebie nie ma obsługi przerwania od Timer/Counter Compare Match A więc flaga zostaje ustawiona. Musisz w obsłudze przerwania od zakończonej konwersji ADC dołożyć ręczne kasowanie...
Poza tym w tym PORTA= powinno być 0b na początku, bo to co wpisujesz z pewnością nie jest liczbą binarną. Zamiast tyle if'ów zrób tablicę wartości indeksowaną d1 i d2. Skoro korzystasz z free running, to w przerwaniu ADC nie ustawiaj bitu ADSC, kolejna konwersja zacznie się automatycznie (właściwie w chwili wejścia w przerwanie już się zaczęła). I wywal...
/A te wyniki to przy pierwszej konwersji czy kolejnych też.
Napisałem to w punkcie 2. Odłączając akumulatory od potencjału masy za pomocą tranzystorów, nadal masz ryzyko zamknięcia obwodu przez diody w strukturach portów oraz linie pomiaru napięcia ogniw. Możesz to zredukować wprowadzając rezystory szeregowe o wartości nie pozwalającej na start uC. Z drugiej strony musisz wziąć pod uwagę wpływ takich rezystorów...
pewnie prędkość procka była inna niż w F_CPU. Delay czekał pewnie w nieskonczoność. ADC jak zostaje właczone w pomiar ciągły i jak odczytasz całe słowo z ADCx to startuje natychmiast kolejne. Nie ma innego wyjscia Dodano po 14 zmieniłem też Może mieć - szczególnie tak zapisany. Datasheet wyraznie mówi ze najpierw musisz przeczytać adcl a pozniej adch...
Moim zdaniem, w przydomowych elektrowniach wiatrowych należy się skupić nad sprawnością układ przetwarzania energii (dążyć należy do ograniczania kolejnych konwersji). Podzielam zdanie kolegi korytelski-ego, iż pozyskaną energię z elektrowni wiatrowej należy zamienić na ciepło i oczywiście gromadzenie jej w cieczy. Przetwarzanie proste o dużej sprawności....
A co byś powiedział na operator AND. Port = p3 AND &H0F (bierzemy pod uwagę tylko 4 młodsze bity) Wtedy zmienna Port będzie zwracała stan bitów P3.0-P3.3 w formie liczby z zakresu 0-16. Nie trzeba będzie robić ceregieli z przeliczaniem stanów kolejnych bitów.
Z tego co wiem pomiar metodą kolejnych przybliżeń z ADC trwa jakiś czas. Co będzie, jeśli w tym czasie nastąpi przerwanie? Konwersja ADC realizowana jest sprzętowo, to co w tym czasie robi procesor nie ma na nią wpływu. Także ew. przerwanie z pewnością nie wpłynie na wynik konwersji.
Ale jakiego przetwornika? Podpinasz zewnętrzny przetwornik ADC z równoległą magistralą danych? Czyli XMEGA ma działać tylko jako most magistrala równoległa-USB? Kup sobie w tym celu FT245R, prędziej osiągniesz to co chcesz. Tak dokładnie, 24 bitowy przetwornik ad7760. Mam obie opcje, sama xmega oraz ft232 podpięte pod piny portu D. Pytanie jak chociażby...
Oj coś koledzy krążycie wokół tematu a nie widzę nigdzie pełnej odpowiedzi. Niektóre są za to błędne albo upraszczające. F_CLK_ADC, to tak jak ktoś pisał, tylko częstotliwość taktowania ADC. A że jest to przetwornik typu SAR (z sukcesywną aproksymacją) to konwersja 1 próbki trwa n cykli zegara F_CLK_ADC. W przypadku tego ADC jest to: - 25 cykli dla...
Chyba w niczym. Zastanawiam się czy poradzi sobie z pomiarem napiecia. Wlasciwie nigdy nie uzywalem wbudowanych przetwornikow ADC. Potem musze wykonac srednio skomplikowane obliczenia. Ale chyba bedzie w sam raz :D. Nie chce tez przeplacac. 1. Nie przepłacisz 10-15 zł za TAKĄ moc obliczeniowo-peryferyjną toż to cena piasku, z którego został wyrzeźbiony....
Po resecie zwraca 85, ale już po kolejnej konwersji nie. Jeśli odpowiada na zapytanie o temperaturę, to można sądzić, że zareagował na polecenie konwersji, zresztą to łatwo sprawdzić przez pooling czujnika o którym piszesz. I to tyle. Jak pisałem możesz sobie jeszcze odczytywać resztę z licznika ADC, która powinna się zmieniać w związku z szumem przetwornika...
Audacity to nie jest LHC. 1. Uruchamiasz Audacity, rozwijasz lewe menu i wczytujesz mp3 do podzielenia. 2. Zaznaczasz interesujący kawałek za pomocą myszy. 3. W górnym menu wybierasz: kopiuj. 3. W menu wybierasz :Nowy Wyświetli się kolejne okienko ze skopiowanym kawałkiem. 4. Edytujesz ID3 czyli wykonawcę, nazwę,... 5. Zapisujesz z konwersją do mp3...
Dlaczego nie radziłbyś wchodzić z tym odczytem analogoa do przerwania od Timera (np. 1)? Czy powodem jest zbyt długi czas trwania tego przerwania? Jakie mogą być konsekwencje? Czy taki kod był by właściwy? [syntax=arduino]#define ADC_PIN A0 // przypisz ADC_PIN do pinu A0 void setup() { Serial.begin(9600); // rozpocznij transmisję szeregową z prędkością...
Masz racje, miałem błąd w założeniach. Wyjdzie nawet jeszcze wolniej bo z bitem parzystości mam 11 bitów na bajt a to da 18us Ale powiedzmy że trudno, będe wysyłać te dane co 20us. Jak do tego moge podejść bez timerów? Najpewniej, skoro mowa tu o tak wielkie szybkości działania, zrobić ile fabryka dała. Wyzwalać transfer przez dma. przerwanie od dma...
Owszem, przerwanie wyzwoli, ale najpierw należy rozpocząć konwersję. Ty robisz to tylko raz, przy inicjalizacji ADC, po pierwszym przetworzeniu już nic nie wyzwala kolejnego.
Ad 2. właśnie z uwagi na ten fakt ten _delay_ms(50), wydawało mi się, że to wystarczająco, spróbowałem też z 200ms (to jest już wieczność), niestety ten sam prrblem. Poza tym czytałem, że konwersja zajmuje 50-100 tyś taktów zegara i po to ustawiamy preskaler, czyli spodziewałbym się, że na ten czas odczyt z rejestru (ADCval = ADCW) będzie zablokowany....
Robisz kilka podstawowych błędów 1. Po resecie odpowiednie rejestry procesora mają ustalone wartości (z reguły 0x00) i nie musisz im ustawiać ponownie bitów na 0 (patrz Datasheet). 2. Używanie _delay_ms w przerwaniu to pomyłka, blokuje Ci możliwość odebrania kolejnego przerwania. 3. Jeśli już koniecznie chcesz używać przerwań do odczytu ADC, to używaj...
Ja bym obstawił że to wina zasilania pasożytniczego. Jako że one nie są selektywne to ładują się wszystkie podczas transmisji, za mocno może przysiadać napięcie a przez to źle dokonuje się konwersja temperatury.
Nie bardzo rozumiem? Ustawiałeś tak jak to przedstawiłem na zdjęciach? Ciekawe bo ja od zawsze tak robię (600dpi) i wychodzi skala 1:1. Rozdzielczość dobra i nie ma żadnych strat w kolejnych konwersjach pliku (pomniejszanie, kopiowanie, itp) Spróbuj zrobić tak jak opisałem powyżej, masz zdjęcia z ustawieniami. W eaglu File/export/image ustawiasz 600dpi,...
Witam, mam problem z ATmega128 i z ADC. Najpierw nieco danych, ATmega pracuje z zegarem 16 MHz. Przetwornik działa w taki sposób, że wywoływana jest pojedyncza konwersja, po jej zakończeniu wywoływana jest procedura obsługi przerwania, w której wykonywane są pewne obliczenia bazujące właśnie na wartościach z ADC następnie wykonywana jest kolejna konwersja...
AVE... A dlaczego zamiast zmiennej data nie użyć struktury, która składa się z dwóch kawałków: dataH i dataL? W przerwaniu wykonujemy dwie atomowe operacje odczytu rejestrów do stosownych części struktury, a w programie głównym używamy całej struktury. Ewentualnie użyć dwóch zmiennych buforowych, a całe łączenie ich w całość można wykonać w pętli głównej....
Trudno jest pokazywać błędy tam gdzie jeden błąd pogania drugi ale spróbuję. Potraktuj to proszę na wesoło :D Nie mam zamiaru nikogo dotknąć tylko mam takie poczucie humoru. Zacznijmy od tego że kalkulator nie gryzie i jest wbudowany w Windows. Jeśli zacznie się z niego korzystać to nagle okazuje się że można sobie do niego zrobić skrót na pulpicie....
Ta pętla powtarzająca przed END istnieje w moim programie, na forum zapomniałem ja dopisać, a tych 8 cykli bez odczytu zastosowałem po to aby pierwszy odczyt nie był pusty i to działa ale dalej jest ta sama sytuacja dane z konwersji odczytać mogę tylko raz, aby odczytać kolejną konwersję muszę zresetować mikroprocesor i znowu wcisnąć przycisk odczytu...
gaskoin - bzdura, poczytaj co robi volatile, bo już drugi raz wprowadzasz kogoś w błąd. Fir3man - najpierw kosmetyka - funkcja main jeśli nie masz OS, nie może się kończyć, stąd return 0 jest bez sensu. Poczytaj o atrybucie os_main. Ogólnie cały twój program jest do przeróbki. W procedurze obsługi ADC powinieneś odczytywać tylko wartość konwersji, wyświetlanie,...
Albo zrób przerwanie od timera np: co 2,5ms i np 1 przerwanie 1wreset; 2 przerwanie następny rozkaz do ds-a po start konwersji kolejne przerwania czekasz na zakończenie konwersji i dalej tak samo kolejne przerwania odczytują temperaturę; jedno przerwanie jeden rozkaz, nie zapomnij o crc. Sam niedawno tak robiłem ( w ramach walki z nuda 6 ds-ów ) i bardzo...
Dlatego mówię, że do takiego zestawu w którym nic nie będzie kręcone wystarczą nawet najtańsze GoodRamy... Różnicy w wydajności między innymi pamięciami nie będziesz widział. ale skąd wiemy co nam Rockstar Games za chwile nie wymyśli Podejrzewam, że kolejną, lipną konwersję GTA z PS3.
To ja zaproponuję, abyś zamiast: [syntax=C]lm35_1 = analogRead(lm35_1_pin); lm35_2 = analogRead(lm35_2_pin); temperatura_1 = (5.0 * lm35_1 * 100.0)/1024.0; temperatura_2 = (5.0 * lm35_2 * 100.0)/1224.0;[/syntax] napisać: [syntax=C]lm35_2 = analogRead(lm35_2_pin); lm35_1 = analogRead(lm35_1_pin); temperatura_1 = (5.0 * lm35_1 * 100.0)/1024.0; temperatura_2...
Można j/w gotową funkcję, można "na piechotę" rozdzielić na dwa bajty (czyli %256). Nie widzę sensu zapisywania tej liczby jako jej kolejnych cyfr w systemie dziesiętnym.
Nie = problemem jest długi czas ładowania pojemności pasożytniczej (w przypadku atmegi to bodajże 14p). Szczególnie jest to widoczne jak źródło sygnału ma impedancję większą niż kilka kilo. Pierwsze odczyty (przy w miarę stabilnym sygnale) muszą być odrzucone, a szybsze sygnały praktycznie są niemierzalne. Dlatego dobrze jest dać jakiś RR WO na wejściu...
po raz chyba setny na tym forum opiszę metodę konwersji bin->bcd: odejmujesz sukcesywnie kolejne potegi liczby 10 (licząć od najwyższej) i zliczasz liczbę odjęć. Kolejne liczby stanowią cyfry BCD.
Mianowicie: czy bezpośrednio za wysłaniem komend match rom, następnie adresu, rozkazu konwersji mogę przejść do wysłania podobnej sekwencji dla kolejnego czujnika czy też zanim to zrobię muszę "puścić" reset? Nieudany Match ROM wymusza wykonanie resetu: https://obrazki.elektroda.pl/3178936300_... Skoro chcesz kilka czujników zmusić...
Można też zrobić tak: obsluga_termometru: gosub Odczytaj_temperature gosub Inicjuj_termometr return Bez żadnych opóźnień odczytać i od razu zainicjować konwersję kolejnej wartości a wykonywać podprogram np. co sekundę. PC
Kolega BlueDraco ma 100% rację. Masz po prostu złe podejście do tematu. Ja bym to zrobił inaczej: W przerwaniu timera wyzwalałbym tylko pierwszą konwersje. W przerwaniu ADC: - odrzuciłbym jedna lub więcej pierwszych konwersji - po odrzuceniu zrobiłbym średnia z kilku, lub zastosował średnią bieżącą jak to pokazał kolega BlueDraco. W przerwaniu ADC nie...
Wrzuć poprawiony kod to zapewne powiemy ci dlaczego serwa nie reagują. Przerwanie masz wykorzystać jedno - ovf timera. Na początku przerwania odczytujesz ADC (który zawiera wynik konwersji, która zakończyła się wcześniej), po czym startujesz kolejną konwersję ADC i kończysz przerwanie. Wyniki uśredniasz tak jak pisze kol. BlueDraco. Czy wartość pobrana...
AVE... Ja przypuszczam, że jeśli kolega Autor nie używa bezpośredniego dostępu do rejestrów w Arduino, to raczej dużej prędkości nie uzyska, bo tam jest sporo dodatkowego kodu "w tle". Attiny85 się nie nadaje na budowanie przetwornic, bo ma za wolny ADC - tylko 15ksps. Ponadto są mikrokontrolery, które mają lepsze peryferia do budowy przetwornic. Przykładowo...
vista kolejny kolejny numer kolejny frezarka
lodówka elektrozawór obudowa pasmowo przepustowa parametr maszynowy
Migająca czerwona dioda w Vaillant atmoMAG - przyczyny Adaptacja alternatora zwrotnego w Peugeot 508 RXH Hybrid4