Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Pierwszy i bardzo poważny problem zauważyłem w funkcji TIMER1_COMPA, jest nim linijka rjmp uspij. Gdy się wykona, to przerwania pozostaną zablokowane, oraz kilka bajtów na stosie zostanie uwięzionych - głównie adres powrotu z przerwania. Można temu zaradzić poprzez wstawienie pop + pop + sei przed rjmp. Drugi problem, to karygodna pętla główna - dławienie...
Moje pytanie brzmi czy mogę pogodzić precyzyjny odczyt z ADC (z uśpieniem) i dokładny timer czy muszę wybrać albo precyzyjne ADC i niedokładny timer albo standardowy odczyt z ADC i dokładny timer? Timer1 jest taktowany przez prescaler z CLK_I/O, a podczas 'ADC Noise Reduction' , ten zegar jest nieaktywny/ wyłączony. Patrz tabela14 w datasheet; w której...
No i trzeba sie liczyc z tym, ze ADC ATMegi (wlasnie, jaka to jest, czy nie czasem 8?) nie jest za super i te 10 bitow to bardziej teoria. Troche moze pomoc wylaczanie czesci cyfrowej na czas przetwarzania ADC i usypianie procesora. Jak samplujesz? Nie wlaczasz/wylaczasz czasem ciagle przetwornika? Robilem na LM35 i na ATMega8 bez zadnych cudow, acz...
tmf mnie się zdaje, że autor jeszcze o czymś innym myślał :) Temat mówi o dokładności, natomiast z opisu wynika że chodzi o precyzję. A precyzję da się poprawić przez odpowiednie podłączenie, filtrowanie, usypianie uC, uśrednianie wyniku itd.
Usypianie ma tą zaletę, że nie traci się zawrtości ram aż do wymiany akumulatora a co za tym idzie nie trzeba wykorzystywać EEPROM'u.
Mam w swoich kilku programach na ATmegach wprowadzone bloki zatrzymujące (przed pomiarem) i wznawiające (po pomiarze) przerwania. Przerwania to raczej nie mają wpływu na wynik pomiaru. Nie bardziej niż kod wykonywany poza przerwaniem. Więc nie wiem po co to. No chyba, że chodzi Ci o usypianie procka na czas pomiaru z wyłączeniem przerwań by zapobiec...
Artykuł jak najbardziej dobry, jednak wnioski wyciągasz złe..... Nie przeczę, że specyficzny przypadek Asemblera nie ma miejsca. Być może w jego przypadku tak jest. A być może tak jest bo nieoptymalnie rozwiązał swój problem. Jeżeli będzie chciał dyskutować swoim temacie i przedstawi wiarygodne pomiary, to moja reakcje będzie inna. Ale ten temat dotyczy...
Samochód 4x4 raczej nie oszczędza zasilania. Tak że w tym wypadku usypianie/budzenie procesora to niewiele oszczędzi. A dynamika jazdy się liczy. A ile razy zapomni wyłączyc zasilanie wtedy usypianie procesora zabezpieczy przed całkowitym rozładowanie, baterii. Nie rozumiem czy funkcja delay nawet 10sek w programie głównym wyłącza przerwania? Jeżeli...
Hallotron to dobra alternatywa, ale ze względu na minimalizację poboru prądu o której pisze autor sądzę, że okaże się ( choć nie sprawdzałem datasheet ) gorszym rozwiązaniem niż kontaktron wpięty bezpośrednio w port procesora. Nie wiem na jakim procesorze to robisz, ale zakładam, że jakiś AVR. Dla Ciebie specjalnie sprawdziłem ile wejście portu Atmega8...
Witam Postawiłem sobie za cel możliwość zapisania wartości pwm w zewnętrznej pamięci eeprom, w tym przypadku AT24C02 Procesor to Atmega 8, wewnętrzne taktowanie zegara 1MHz W załączeniu wkleiłem uproszczony program zapisu i odczytu wartości pwm. Za pomocą pwm steruję jasnością podświetlenia wyświetlacza LCD. Wiem, że można zapisywać te ustawienia w...
timer2 jest w stanie obudzić procka ale mam wątpliwości czy może zrobić to timer1. Próbowałem i timer1 nie chce budzić. Dodano po 12 Hmm chyba najlepszym rozwiązaniem będzie tryb power-save i budzenie przez timer2. Usypianie będzie odbywać się w pętli tak aby uzyskać czas 1s. Jak znacie lepsze rozwiązanie piszcie proszę. Dzięki za pomoc. Użycie watchdoga...
Chciałbym zbudować regulator obrotów dwukierunkowy który byłby sterowany szerokością impulsu z odbiornika RC ale nie wiem jak zacząć bo mam już zrobioną płytkę pod atmega8. W Arduino deklaracje pinów są dla mnie niejasne.
Witam Widzę że pisanie programu jest wyuczone z książek z przykładami. Jak chcesz aby procesor migał diodką albo wypisał coś na LCD po naciśnięciu przycisku to taki poziom pisania w asemblerze wystarczy. Do wykorzystania procesora w szerszym zakresie potrzebny jest następny krok i stworzenie własnego systemu, który będzie odpowiednio zarządzał zasobami...
Witam, mam układ sterowania halogenami, którym kieruje atmega. Wszystko zasilane jest z trafo dla halogenów. W układ wpięte jest złącze ISP do programowania. Odczyt pamięci, fusebitów, sygnatury, itp. zawsze przebiega pomyślnie. Problem pojawia się podczas programowania układu. Udaję się to raz na mniej więcej 10 prób. Przy braku sukcesu pojawia się...
Cze wszystkim Zacząłem programować Atmega 8 w układzie z potencjometrem cyfrowym ad5259 na magistrali i2c. Chcę programować w asemblerze ale nigdy wcześniej tego nie robiłem czytałem książkęBaranowskiego i noty mojego potencjometru, ale nie wiem jak zacząć. Proszę o pomoc. Jakieś wskazówki. pozdrawiam
Witam Ostatnio wykonałem mały projekt kostki do gry. Z uwagi, że mam bardzo małe doświadczenie z uC, proszę o uwagi dotyczące programu itp.. http://obrazki.elektroda.pl/8201032000_1... http://obrazki.elektroda.pl/4496302200_1...
Witam. Ostatnio zainteresowałem się komunikacją uP z innymi urządzeniami i napisałem prosty program do obsługi Atmega 8 - PC( Labview). Problem polega na tym ,że potrafię przesłać ramkę danych ale w jaki sposób zaadresować ją do konkretnego urządzenia ? Myślałem o tym by każdemu urządzeniu nadać jakiś unikatowy adres i przesyłać kolejno ramkę adresu...
Koledzy jestem początkujący jeśli chodzi o programowanie uP. Dzisiaj pierwszy raz zaprogramowałem Atmege8 i na samym początku napotkałem problem. Posiadam zakupiony programator na allegro "PROGRAMATOR ISP SI PROG 2.2 + ADAPTER EEPROM" programowałem z poziomu PonyProg2000 i niestety dwa AVRy martwe :cry: (działały przez jakiś czas a po którymś wgraniu...
Witam. Wiem ze problem jest poruszany wielokrotnie, jednak nigdzie nie mogę znaleźć odpowiedzi. Nie mogę nawiązać komunikacji z uC, wgrać programu ani sczytać sygnatury(losowa sygnatura 00ffff, 0000ff itp). Poniżej zamieszczam informacje o parametrach układu oraz schemat. Za każdą pomoc będę wdzięczny. Dane: VCC = 4,98 V AVCC = 4,98 V Kwarc zewnętrzny...
Witam, Zbudowałem taki układ: http://obrazki.elektroda.pl/9541154400_1... Czy zasilanie mikrokontrolera jest prawidłowe oraz czy nie za mało dałem kondensatorów ceramicznych bo mam pewne problemy z uC. Program się co prawda wgrywa ale moim zdaniem nie funkcjonuje poprawnie. Np. ustawiam wszystkie porty C na wyjścia oraz w stan wysoki...
Witam, mam drobny problem z programem na ATMEGA8. RXD i TXD podłączone są pod kostke SN75176 która wysyła na szyne RS485, pinem PD4 przełączam tryb pracy kostki (1- nadawanie, 0 - odbieranie). Kwarc 4MHz Program ma wysyłać wartość 97 na szynę przez USART. Kod programu poniżej: Kod programu poniżej: .include "m8def.inc" .cseg .org 0x00 ;###...
Czy ruszałeś fusebit RSTDISBL. może wykorzystujesz PC6 (RESET) i dlatego nie możesz zaprogramować.
Witam! Usypiam procesor Atmega8 poleceniem POWERDOWN w BascomAVR. Jak go obudzić przerwaniem zew. INT0 lub INT1? Nie wychodzi mi to. Pozdrawiam.
A. No to sens jak najbardziej jest. Ale niestety w ATMega8 nie da rady. Co najwyżej to można usypiać procesor z wypełnieniem około 1/8.
Mikrokontrolery to także jak najmniejsze zużycie prądu. Gdzie tylko to możliwe należy je usypiać. W Twoim przypadku możesz wykorzystać co najwyżej uśpienie 'cpu', ponieważ potrzebujesz działających 'timer'ów( przydatna tabela znajduje się w notach przy 'Power Management and Sleep Modes', np. 'atmega8' str.33) Zalecana przez twórców 'avr-libc' sekwencja...
Witaj. Na początek uporządkuj sprawy dot. trybu usypiania, ponieważ wykonujesz niepotrzebnie w pętli głównej część czynności w tym zakresie. Poza tym skoro już używasz nagłówka sleep.h, to używaj go w pełni, a nie osobno ustawiasz np. [syntax=c]MCUCR |=(1<<SE)|(1<<SM1);[/syntax] Zobacz przykład funkcji main tutaj: [syntax=c]int main(void)...
A po co go ciągle testować? Ustawić jedno przerwanie co np. sekundę i wtedy sprawdzać stan ADC. Własnie o tym mówię. Odpalanie przerwaniem czy pętla busy wait - zasada jest identyczna. A to nie ma buzzerów z generatorem? Gdzieś pewnie są, ale czy akurat w tym projekcie? Kilka mA w stanie standby nie powinno być problemem W takim wypadku nie ma co się...
Jak na pierwszy projekt, to bardzo ładny schemat :) 1. R19 zbędny bo wystarczy włączyć programowo rezystor pull-up. 2. Zamiast kontaktronu zastosowałbym transoptor szczelinowy lub fototranzystor i diodę LED. 3. ATmega8 - pewnie że "nadąży", to wbrew pozorom bardzo wydajny mikrokontroler do tak prostych zadań jak Twoje :) 4. C1 i C3 umieścisz jak najbliżej...
Dlatego też postanowiłem usypiać scalaka kiedy tylko się da i jak najgłębiej jak w danej chwili można. Dlatego też rozwiązanie TWI na przerwaniach jest dla mnie ważniejsze niż czas jaki poświęcę na opracowanie kodu w stosunku do metody czekania w pętli na kończenie poszczególnych rozkazów TWI. Czy o to Ci chodziło? Tak o to chodziło, i tak tylko podpowiadam...
Jeśli chcesz uzyskać stabilny pomiar napięcia to usypiaj procesor na czas pomiaru, na wejściu ADC zastosuj też filtr dolnoprzepustowy.
Witaj. Porty ustawiasz jako wejścia, bez podciągania - to bardzo źle (upływność jest losowa i zależna np od zbliżanej ręki) i sprzeczne z komentarzem w kodzie :) Porównaj z moim przykładem dla ATmega8A dla zasilania 4,85V uzyskałem 0,8µA : http://mikrokontrolery.blogspot.com/2011...
Albert: dość mocno mijasz się z prawdą. Niektóre uC z rdzeniami Cortex mają sprzętowy mechanizm gwarantujący czas odpowiedzi na przerwanie, który umożliwia redukcję drżenia (jitter) przerwania o najwyższym priotrytecie do zera również wtedy, kiedy mamy w systemie inne przerwania. Jeśli użyjesz tego mechanizmu, to sam decydujesz jawnie o czasie od przerwaia...
Ale Kolega lubi sobie życie komplikować... W programie głównym programujemy dowolny timer na zgłaszanie przerwań z częstotliwością coś pomiędzy 30 i 300 Hz, a następnie usypiamy procesor w pustej pętli. Definiujemy stałą określającą czas włączenia w okresach timera: [syntax=c]#define CZAS_WLACZENIA xxxxx <- wpisz liczbę okresów timera[/syntax] przerwanie...
Uzupełniając to co napisał kol. niveasoft dodam, że zastosowanie kwarcu 32,769kHz ma sens w wielu przypadkach, jednakże nie jest lekiem na całe zło :) Można bowiem do taktowania mikrokontrolera zastosować kwarce, których podstawą (jak w przypadku kwarcu 32,768kHz) jest liczba dwa np. 1,8432MHz, 3,2768MHz ... 8,192MHz, ... 16,384MHz itd. Wtedy nie ma...
a ja mam inny pomysł dajesz na płytce duży kondensator podtrzymujący, za pomocom ADC badasz stan zasilana, jeśli zasilanie zaniknie to układ pracuje na kondensatorze i: 1. rozumiem, że brak prądu = brak impulsów więc 2. zapisujesz dane do eepromu 3. usypiasz układ i czekasz na powrót zasilania
1. ACD nie wyłącza ADC, tylko komparator, który domyślnie jest włączony. Przetwornik ADC wyłącza się bitem ADEN. 2. Zastosuj ATmega8A - bardziej oszczędna. Pytania: P1. Jaka częstotliwość zegara i (uprzedzając odpowiedź) w jakim celu tak duża? P2. Czy jesteś świadomy jaki prąd spoczynkowy ma L298? P3. Podobnie z LCD? P4. Do jakiego trybu usypiasz mikrokontroler...
Zacznij od przerwania timera i wszystko rób w obsłudze tego przerwania. żadnych "delay" i żadnych czynności w pętli głównej (ma być pusta, tylko z usypianiem procesora). Na dobry początek masz coś o przyciskach: http://mikrokontrolery.blogspot.com/2011...
Także ew. przerwanie z pewnością nie wpłynie na wynik konwersji. W niekorzystnych warunkach może wpłynąć na najmłodsze bity to, że w czasie konwersji wykonywane są inne zadania. W niektórych aplikacjach wskazane jest wręcz usypianie procesora do specjalnego trybu(ACD Noise Reduction Mode).
Witam. W układzie licznik timer2 pracuje asynchronicznie - taktowany jest z kwarca zegarkowego. W Bascomie używam instrukcji RTC programowego. Czy mogę przy używaniu RTC usypiać procesor - uruchamiać tryb Powerdown?
Zamiast źle użytej konstrukcji switch mamy jescze gorzej użyte if. Jak już sprawdziliśmy, że licznik jest równy 1, to jeszcze na wszelki wypadek sprawdzamy, czy jest równy 2, a może jeszcze przypadkiem jest równy i 1, i 2, i 3 równocześnie. switch (if zresztą też) służy do rozejścia na różne akcje, w zależności od wartości danych. U Ciebie akcje są...
Zamiast 8xBC548C >> ULN2804 Zamiast 8xBC558C >> UDN2981 Wyświetlanie wyniku podczas gry jest... denerwujące, więc dodaj dwa wyświetlacze siedmiosegmentowe (po dwie cyfry, 2x Anoda) po lewej i prawej stronie wyświetlacza matrycowego. Manetki powinny być typu analogowego >> potencjometry; wykorzystać przetworniki Atmegi8 Nie wiem po co są stosowane dwa...
Marek_Skalski To co napisałeś wydaje się sensowne, ale niestety problem występuje nadal gdy nawet wyświetlacza nie ma w obwodzie. Wlaczylem uklad bez wyświetlacza, przerwałem zasilanie, a nastepnie wpiąłem wyświetlacz I ponownie uruchomiłem układ. Wyświetlacz niestety nie pokazał znianę pamięci eeprom. Już brakuje mi pomysłów. Spróbowałem na innym...
Ale po co ci ta informacja? W moim projekcie zależy mi na oszczędzaniu energii gdzie się tylko da, dlatego też piszę własną obsługę TWI (100kHz) na przerwaniach (patrz inny mój temat). W trakcie komunikacji po TWI właśnie Atmega będzie usypiana w IDLE mode ponieważ POWER DOWN lub SAVE będzie zbyt długo wstawał. To chyba dobre rozwiązanie?
Gdzie jest ten tum, któremu usypia się ADC ? Też korzystam z Atmega8 ADC i nic złego się nie dzieje do zaniku zasilania. Może nie miałem problemów dlatego, że zawsze piszę w C, do tego zgodnie ze standardem MISRA. Jako, że nie jesteś od dziś na elektrodzie, to powinieneś doskonale wiedzieć, że nie można pomóc tylko tym, którzy tego nie chcą np: dając...
W stanie rozwartych przycisków układ nie posiada połączenia z masą czyli prąd nie popłynie przez kontroler czyli kontroler nie działa. Przy wciśniętym przycisku diody również skutecznie zapobiegną umownemu przepływowi prądu w kierunku masy czyli kontroler również nie działa. Zaiste skąd taki pomysł, że to zadziała? Może lepszym rozwiązaniem byłoby normalne...
Diody podłączyłeś dobrze, nawet jak na diody Zenera, ale przydało by się żeby miały napięcie z 10V, a nie 5,1V. I przydały by sie jakieś rezystory od przycisków do pinów procesora, bo inaczej tak jak Mirekk36 napisał napięcie na pinach procesora będzie o wiele niższe niż na GND i piny mogą się uszkodzić. Inne układy scalone w pilotach podłączało sie...
Co to jest L i jakiego jest typu bo w kodzie nie jest to zdefiniowane. Na mojej skromnej stronie 100% i sprawdzony wielokrotnie kod do usypiania procesora i wybudzania jednym przyciskiem. [url=http://bart-projects.cba.pl/rozne.h...
Przyzwoity uC w głębokim uśpieniu pobiera prąd mniejszy niż prąd samorozładowania baterii. Usypiasz uC głęboko, a przycisk podłączasz do wejścia budzenia. Można oczywiście kombinować z zewnętrznym włączaniem przez przerzutnik zrobiony z tranzystora MOS, ale po co?
Poradzilem sobie z tym stanem wysokim zerując TCCR1A. Zaczne od tego, że programje pilot 6 przyciskowy z usypianiem, wybudzaniem i przełączaniem miedzy podprogramami - zapalniem Led-ów. Ma 4 przyciski do wysyłania kodów i 2 do przełączania podprogramów. Do tych czterech przycisków podpięte są diody które podają też niski stan na INT0. Wyjscie OC1a podpięte...
Weź pod uwagę, że w trakcie wchodzenia w usypianie wykonywana jest jeszcze kolejna instrukcja, w twoim przypadku cli(). Jak się domyślasz cli w połączeniu z sleep tworzy śmiertelną pułapkę z której procesor może wybudzić tylko reset. Swoją drogą, piszesz o oszczędności energii, a używasz staruszka procesora, który bierze energii kilka razy więcej niż...
Dokładnie, 1. Śpi i czeka na INT0 2. Otwarcie drzwi wywołuje przerwanie i odpala timer 3. Dip-switchami na płytce ustawiamy czas jaki ma czekać zanim zacznie piszczec (powiedzmy 5s, 10s, 20s, 30s i 60s) w zależności od potrzeby 4. Piszy tak długo dopóki ktos nie zamknie drzwi 5. Gdy ktoś zamknie drzwi przed upływem określonego czasu to usypia i nic...
Witaj. Bo musisz jeszcze wyłączyć domyślnie włączone układy. NA przykład w ATmega8 domyślnie jest włączony komparator. Wyłączyć go można w rejestrze ACSR. Dodatkowo należy pozbyć się antenek, czyli pinów bez ustalonych stanów. Przeczytaj te 2 artykuły: http://mikrokontrolery.blogspot.com/2011... Tutaj masz...
Mam projekt transmisji radiowej i jeden ze scenariuszy dotyczy wysłania bajtu informacji po czym usypia procesor i po jakimś czasie (np 1 minucie) budzi się i ponownie wysyła bajt danych. Korzystam z modułów RFM12 oraz RFM01 i RFM02. Procesor to atmega8 a fabryczny kwarc (zamontowany na płytkach) to 7,3728MHz(dla RFM12) oraz 11.0592MHz dla RFM 01 i...
Jednak źle mi się wydawało. Opis znaczenia bitu ADSC jest jednoznaczny: "The first conversion afterADSC has been written after the ADC has been enabled, or if ADSC is written at the same time as the ADC is enabled, will take 25 ADC clock cycles instead of the normal 13. This first conversion performs initialization of the ADC." Czyli nie ma bata, pierwszy...
3 paluszki + LDO to nawet mi odpowiada. Używam atmega8A z tego co wiadomo nie należy ona do najoszczędniejszych. Będę usypiał mikro-kontroler i wybudzał przerwaniem zewnętrznym (przyciskiem) praca tego pilota to około 10 min na tydzień. tmf może poleciłbyś jakąś bardziej oszczędną atmegę ? Na razie miałem do czynienia tylko z 8A.
Tak byłoby najlepiej ale układ już polutowany i muszę się ograniczyc do czasowego usypiania na sztywno np. tak: czeka 10s na dane przychodzace z IR jesli nic nie ma to idzie spac na 20s i tak w kółko. Jak zrealizować takie odmierzanie czasu skoro kiedy jest w trybie power-down timery nie działają?
Nawet prosty projekt przynosi dużo satysfakcji :) Drobna uwaga: ATmega8 wykorzystuje wewnętrzny oscylator RC pracujący na częstotliwości ok. 8 MHz. Wiadomo, że oscylator RC nie nadaje się do bycia wzorcem czasu. W projekcie wzorcem jest kwarc 32 kHz podłączony do układu RTC DS1307. Układ ten zapewnia również ciągłe odmierzanie czasu w przypadku utraty...
Czy można by było zrobić coś takiego aby po dokonanym pomiarze procek wchodził w stan uśpienia i po 1 minucie budził sie robił pomiar i znów usypiał, potrzebuję coś małego i oszczędnego w pobór prądu ( zasilanie bateriami pastylkowymi ) Nie wiem czy pastylki dadzą radę, atmega8 pod smd jest bardzo mały, nrf905 też malutki, atmega8 pobór prądu: Power...
Zasadniczy błąd to usypianie w przerwaniu. Wyłączone są przerwania, a ty usypiasz i procesor się nie wybudzi. Ja nigdy nie usypiam w przerwaniu. Ustaw sobie pomocniczą flagę, którą w pętli głównej odczytaj i wtedy uśpij. Jak chcesz zaoszczędzić na bateriach to dołącz cli() i sei() w przerwaniu jak ty masz jest nie potrzebne, bo to jest już robione z...
atmega8 usypianie wybudzanie bascom usypianie usypianie instalacji
stefanelli reduktor kamera czyścić kwarc 40mhz
sprząc silnik elektryczny sprząc silnik elektryczny
WFF10N65 zamiennik – STF13N65M2, FCPF11N65, IRFI10N65A, TK10A65D/W, parametry, obudowa TO-220F KBP08 zamiennik – mostki prostownicze KBP08G, KBP208, DB208, DF08S – parametry i dobór