Ja dorzucę jeszcze jedno - jakby nie napisał ISR to odmierzanie przerw przez delay w pętli głównej już nigdy nie będzie działało prawidłowo - odliczany czas powiększy się o czas realizacji wszystkich przerwań. To można ominąć w prosty sposób wywalając te delaye i robiąc opóźnienia na timerze.
ne555 odpada bo zmieniając czas przerwy zmienia się czas pracy lukg20 podałem Ci stronę na której masz wszystko o 555 , również proponowany przez Elektrooonika układ z diodami wystarczy tylko przeglądnąć tą stronę i bez problemów możliwa jest regulacja czasu trwania stanu H i L na wyjściu , innym rozwiązaniem jest budowa układu na 2 generatorach pierwszy...
A możesz to jaśniej opisać - co po kolei ma się dziać? Czy kontaktron na początku jest zwarty, potem się rozwiera i wtedy układ ma działać, odmierzyć czas, i na koniec się wyłączyć? Układy CMOS 4000 mają (poza niektórymi wyjątkami) typowy pobór prądu grubo poniżej 1µA, więc ich zasilanie niewiele zużyje baterię. Ale nie mam pomysłu na wykrywanie,...
Tej marki nie miałem nigdy z taką usterką ale kiedyś w Panasonicu była przerwa na kwarcu zegara i nie chciał odmierzać czasu i tu może to będzie.
O ile dobrze rozumiem wymagania, to nie jest takie proste: stan wyjścia ma się zmienić, jeśli przez 30 sekund stan wejścia będzie stale przeciwny do stanu wyjścia; "stale" oznacza, że nawet krótka przerwa wymaga, by odmierzać ten czas od nowa; jeśli do odmierzania tych 30 sekund użyje się kondensatora, który będzie ładowany, to w tej przerwie (która...
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
Wszystko co napisałem powyżej pozostaje w mocy. Tryby normalny i CTC działają przy odmierzaniu czasu podobnie: obydwa tryby odliczaja ileś tam tyknięć rejestru TCNT i generują przerwanie. W przypadku trybu normalnego to liczenie następuje od wartości ustawianej w TCNT do wartości 0 (256), a w trybie CTC od wartości 0 do OCR (lub ICR). Zacznijmy od tego,...
dzień dobry Zbudowałem timer cykliczny w oparciu o prezentowany schemat https://obrazki.elektroda.pl/6438717100_... Timer działa prawidłowo ; cyklicznie odmierza zadane czasy. Jednak jedną rzecz chcę zmienić. Po podaniu zasilania następuje załączenie przekaźnika na określony czas, a później przerwa na określony czas i.t.d. Ja chcę,...
Podczas odbioru danych z pinu PD2 ( funkcja zgłoszenie ) występuje błąd tylko wtedy gdy przerwanie z timera 0 jest aktywne. Gdy na czas odbioru danych zablokuję to przerwanie procesor ładnie odbiera wysyłane do niego dane. I moje pytanie brzmi: Co jest nie tak z przerwaniem? Konkretnie to, co wskazał albertb: ... jeśli masz włączone przerwanie to jego...
U mnie widać ten przekaźnik jak na dłoni po zdjęciu pokrywki (jak do wymiany żarówek) maskującej tylną lewą lampę. Napisałem "najczęściej w okolicy tylnego lewego światła" ponieważ mam inny samochód, jednak w kilku różnych tam go właśnie widywałem. Nawiasem mówiąc, to nie jest tylko przekaźnik. Jest tam też elektronika, która odmierza czas przerw miedzy...
Ale nie obsługa tylko co ile są wywoływane. No obsługa powinna być krótsza. Ale niektórzy potrafią w przerwanie wstawić waitms 500- nie wiem po co ale demoluje to cały program.
Hej, o jak udało się uruchomić zegar? Nie ukrywam, że chciałbym skorzystać z projektu, ponieważ nauczyciel męczy mnie już od zeszłego roku czy zrobię zegar, który będzie odmierzał czas do przerwy i do lekcji.
Z grafiką pod DOS to raczej nie maiłem do czynienia na poziomie driverów. Kiedyś robiłem kawałek kodu który wykrywał czy Herkules jest w trybie tekstowym czy graficznym - rejestry kart CGA i Herkules bywały RO i WO, czasem RW więc nie zawsze dało się wyczytać jak są ustawione, dodatkowo Herkules adresami i podstawowym trybem tekstowym udawał kartę MGA...
Lepiej zainwestujesz swój czas przepisując program tak, żeby 90% pracy wykonywał w main, później "szedł spać", a budziły go tylko odpowiednie przerwania. W różnych ISR ustawiasz odpowiednie zmienne globalne, a w main() je odczytujesz i reagujesz odpowiednio. I nagle się okaże, że nie potrzeba zagnieżdżania przerwań, system jest prostszy i da się ładnie...
... ale wtedy musisz mieć pewność, że obsłużysz to przed pojawieniem się kolejnej sytuacji ustawienia flagi przerwania. Oczywiście TIFR to tylko przykład, bo flagi są także w innych rejestrach, np. TXC w UCSRA.
WITAM temat obserwuję od dawna ale dopiero teraz się przyłaczam do dyskuscji :) otóż kupiłem piec 23 kW i chcę go przerobić co nieco dokupiłem sterownik FOCUS z allegro i wszystko ładnie powinno działac ale chcę dołożyć podajnik ze zrobieniem go nie będzie problemu ale problem jest w sterowaniu nie jestem elektronikiem i nie chce budować sam sterownika...
...Proszę o jakieś podpowiedzi bądź kawałek kodu co ma być dalej, żeby generować te nieszczęsne 40kHz ... To już wszystko :) Na pinie PB1 masz przecudne 40kHz , jeśli faktycznie procek jest popędzany 8MHz. W ramach testu , możesz w pętli głównej napisać: Do Set Tccr1a.com1a0 'dołącz oc1a do pinu Wait 5 'przez 5 sekund fala 40kHz Reset Tccr1a.com1a0...
Jeśli możesz użyć biblioteki to polecam http://homepage.hispeed.ch/peterfleury/a... jeśli nie to możesz się na niej wzorować. Ma bufor kołowy, odbiór/nadawanie w przerwaniach, przykład z parsowaniem danych też znajdziesz w google. Wyświetlając komunikat zachęty powinieneś ustalić ściśle akceptowalny format, np. Time:RR-MM-DD-GG-MM-SS,...
Witam. Otrzymałem diody i czekam nadal na zamówione tranzystory. Sterownik działa bez timera. Witam. Po długim oczekiwaniu dostałem zamówione tranzystory. Po założeniu timer działa, tzn. wyświetla się czas ale nie mogę go zmienić. Nie działają przyciski- nie można też zaprogramować piekarnika. Pytanie czy uszkodził się sterownik? (ale działa zegar-...
A co jest złego w odmierzaniu czasu i obsłudze wyświetlaczy w jednym przerwaniu? O ile nie masz typowego zegara RTC (na kwarcu 32768Hz), to właśnie ten sposób jest najlepszy. Zmiany wymaga natomiast Twoje podejście do tej kwestii. Program powyżej jest lekko chaotyczny. Nie rozumiem dlaczego sekundy potrafisz liczyć w 1 zmiennej, a do minut już potrzebujesz...
Instrukcja WAIT Przeznaczenie: Przerywa działanie programu na określony czas. Składnia: WAIT il_sekund Opis: Instrukcja wstrzymuje działanie programu na podaną ilość sekund. Odmierzany czas jest wartością przybliżoną, więc nie należy stosować tej instrukcji do dokładnego odmierzania czasu. Używanie przerwań, może znacznie wydłużyć działanie instrukcji....
Źle myślisz. Jeśli przerwanie wystąpi akurat w trakcie funkcji atomic block jego obsługa troszeńkę się opóźni. I objaw będzie podobny to faktu obsługiwania wielu przerwań. Dlatego też jak wielokrotnie powtarzano, obsługo przerwania jak najkrótsza. atomic block również. W sumie powinien składać się wyłącznie z odczytu zmiennej typu volatile do zmiennej...
Próbowałeś już może podłączać więcej niż jedną diodę ( chodzi mi konkretnie o to czy np podłączyłeś lewa i prawą stronę ?). Dobrze rozumiem, że gdybym chciał tak zrobić to sygnał z kompa podłączam po prostu do trzech układów w którym w każdym mikroprocesorze jest nieco inny program?? Tak własnie trzeba zrobić. Jest to sposób prosty i niezbyt wyszukany...
To jest rozbudowana wersja zegara z MC1206 z podtrzymaniem pracy zegara przy zaniku zasilania sieciowego. Transformator wygląda na przerabiany - dowinięte drugie uzwojenie wtórne. Te 3,3v służy do zasilania wyświetlacza, 7v do zasilania samego zegara, a jednocześnie ładowanie tych 5 akumulatorków "buforowych" - i jeśli nastąpi przerwa w zasilaniu sieciowym,...
Na nie możesz policzyć? Chyba że nie wiesz jak :D Masz 8MHz. A przerwanie przychodzi z częstotliwością 125Hz (dlatego trzeba 125 razy odliczyć aby wyszła 1 sekunda). Preskaler Timera 256. 8000000/256/125 = 250. I dlatego jest Load Timer0 = 250 Teraz chcesz kwarca 7372800. Więc musisz tak kombinować aby uzyskać jakąś sensowną liczbę przerwań i sensowny...
Samo wejście i wyjście z przerwania nie kasuje sprzętowo flagi w typie Ex. Skasuj flagę przerwania "ręcznie" w przerwaniu i daj znać jak taka akcja się skończyła :D
Sprecyzuj wymagania: czy te dwie diody mają świecić na zmianę (zawsze jedna świeci), z różnymi czasami? Czy np. mają być przerwy? NE555 może odmierzać 2 czasy, ale jak ma być więcej diod, to już nie da rady, każdy czas trzeba odmierzyć osobnym układem opóźniającym (może to się sprowadzi do tego, że od każdego wyjścia CD4017 dasz osobny opornik z szeregową...
To wygląda na to (i tego można się spodziewać po prostym układzie z NE555), że po włączeniu zasilania ładuje się kondensator, i kiedy naładuje się wystarczająco (pewnie do 2/3 napięcia zasilania), układ załącza przekaźnik, i taki stan już pozostaje do wyłączenia zasilania. Po wyłączeniu kondensator rozładowuje się w ciągu paru sekund - jeśli ponowne...
Trzecia czasówka wyzwalana co drugi cykl z dwóch pierwszych? To chyba tak: najpierw odcinek czasu z pierwszej czasówki bez włączania silnika, trzecia czasówka włącza się razem z pierwszą; potem pierwsza kończy odmierzanie czasu, włącza się druga i uruchamia silnik, trzecia nadal włączona określa kierunek obrotów; wyłącza się druga (silnik się wyłącza)...
Wydaję mi się, że sprawę można zrealizować na dwóch przekaźnikach czasowych z firmy F&F PCA512 i PCA520 (funkcja B). Po podaniu zasilenia na układ przez wspomniany przez Ciebie przekaźnik oczyszczalni (KG), PCA 512 od razu przełącza styki na zadany czas i wysterowuje stycznik pierwszej pompy. Jego styk NC odcina na ten czas zasilanie drugiego przekaźnika....
Chyba o to chodziło. Faktycznie tak to ma działać (instrukcja). Wielkie dziękuję. A co do wyglądu, hmm.. trochę poprawiłem, ale tamto było bardziej czytelne (dla mnie) :), nieistotne, już sobie radzę pomału w treści [syntax=c] #define F_CPU 12000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main()...
Nie wiem czy dobrze zrozumiałeś ideę wykożystania przepełnienia od licznika w tego typu wyświetlaniu, więc po kolei: - napewno wiesz że przy wyświetlaniu multipleksowym w danej chwili świeci tylko jedna cyfra, aby uzyskac efekt świecenia wszystkich trzeba kilkadziesiąt razy na sekundę zapalac kolejne cyfry. Częstotliwośc przerwań od licznika dobierasz...
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
Zrób to w konwencji automatu - zmienna określające stan i duży switch (stan) w obsłudze przerwania z odpowiednim zachowaniem w każdym stanie. Na ogół wygodnie jest to zrobić przy stałej częstotliwości przerwań timera, odpowiadającej najkrótszemu odcinkowi czasu, który trzeba odmierzać lub takiemu, który jest podwielokrotnością wszystkich odmierzanych...
Przy schemacie skopiowałem tylko z katalogu działanie PCU 510 w pozycji A i B. Sposób działania układu spróbuję tu wytłumaczyć: Po włączeniu wyłącznika W, poprzez zamknięte styki 7,8 przekaźnika P1 zostanie zasilony przekaźnik P2, który zacznie odmierzać czas przerwy ( 5min.). Po upływie tego czasu jego styki zostaną przełączone. Przez zamknięty styk...
1. 11059200 - jestem pełen podziwu. To jest przykład jak źle napisany program można uratować dobierając częstotliwość kwarcu. Oczywiście normalnie dla przebiegów okresowych trzeba wykorzystać tryb autoprzeładowania, który zapewnia w pełni synchroniczne odmierzanie czasu. W przypadku klasycznej '51 na 12MHz można dać dzielnik 250, a 250 mikrosekund to...
Uruchomi się - tak jak pisał kol. (at)dondu na wejściu masz układy Schmitta, czyli po przekroczeniu poziomu progowego nastąpi zmiana stanu. Problem w tym, że dla różnych egzemplarzy ATMega, czy różnych warunków, ten próg będzie nieco dryfował. Więc średnio to się nadaje np. do tego, aby odmierzać czas stałej RC.
Witam :) Dzięki za kolejne koncepcje. Ale nie uśmiecha mi się dokładać kolejne kostki liczników, tym bardziej jak ma ich być "bateria". Zależy mi raczej na małych gabarytach układu. Liczniki też wolał bym zarezerwować dla innych celów - choć by odliczania czasu całej sekwencji i PWM,u Jak pisałem powyżej komenda Waitms wystarcza tu w zupełności gdyż...
http://obrazki.elektroda.pl/8305155600_1... Witam! Jest to moja pierwsza konstrukcja na forum, więc może się przedstawię. Mam na imię Sebastian, jestem uczniem 2 klasy LO w Kielcach. Projekt, który dziś prezentuję to minutnik pracujący w dwóch trybach (o tym za chwilę). Powstał z potrzeby odmierzania i sygnalizowania danego czasu na...
A ja zacznę od początku. Co autor miał na myśli? Czy uzyskanie precyzyjnego przebiegu na wyjściu o częstotliwości 1kHz czy precyzyjne generowanie Przerwania? I teraz poprawcie mnie jeśli się mylę. Jeżeli mam precyzyjnie generowane przerwanie i softwarowo generuję przebieg na wyjściu to i tak otrzymam przebieg tak dokładny jak dokładne przerwanie generuje....
Podziel półokres na 10 odcinków i po wykryciu 0 najlepiej przez przerwanie odmierzaj kolejne odciniki, dla 10% mocy do 9 ms jest przerwa i w 9ms włączasz triak.
I oczywiście po każdej przerwie zasilania ustawianie na nowo. I nie wiem, jak z dokładnością odmierzania czasu... tam jest generator z kwarcem? Gdyby to mogło dobrze odmierzać czas bez modułu RTC, to nie byłyby one produkowane - są, bo są rzeczywiście potrzebne.
Twoje obliczenia są (z grubsza) OK, jednak w mikrokontrolerze ATmega328 rejestr TCCR0A nie posiada bitów CS00 oraz CS02. Bity te znajdują się w rejestrze TCCR0B. Notabene, bitów WGM0n nie musisz zerować. W trakcie Power on Reset zostają one ustawione na wartość 0. Zerowanie może być konieczne tylko wtedy, kiedy wcześniej sam ustawisz je na wartość...
Kilka pytań i spraw, ktore być mogą okazać się pomocne: Z wartości przeładowania T0 (D8EF) i faktu że przerwanie chodzi 100 razy/sek domyślam sie ze używasz kwarcu 12MHz . Jednak jesli ma to byc równo 100Hz to zauważ że podana u ciebie wartosć początkowa jest za mała o 1, bo powinno byc: T0pocz = FFFFh - (Fxtal / 12 / Fto) + 1 = D8F0h (a nie D8EFh)...
Twoje procedury obsługi przerwań są stosunkowo długie. Np. ISR(TIMER1_COMPA_vect) trwa ok. 670 taktów zegara. Z kolei odstęp między kolejnymi przerwaniami przy zmiennej okres1=127, jak sam napisałeś, wynosi 8*128=1024 taktów. Jeżeli zmienną okres1 zmniejszysz np. do 80 taktów, to przerwania będą częściej niż trwa ich obsługa, więc niektóre zostaną po...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Błądzisz. 0. Dlaczego wybrałeś muzealny mikrokontroler, dla którego informacji trzeba szukać w skanowanych artykułach z gazet wydawanych w latach 80-tych i 90-tych zeszłego wieku? 1. Dlaczego nie chcesz korzystać z timera? To jest najlepszy i najpewniejszy sposób odmierzania czasu. 2. Czy program w którym potrzebujesz opóźnienie 5ms nie robi nic innego...
Jeśli procesora nie wprowadzasz w tryb uśpienia, to zmiana poboru prądu przez procesor jest porównywalna jak by cały czas wpisywał te dane, jak i co jakiś czas.. jak chcesz, to możesz wykorzystać timer do odmierzania jakiś odcinków czasu np 200ms (w przerwaniu ustawiać jedną flagę, nic więcej) a w pętli głównej jeśli ta flaga jest ustawiona, to aktualizacja...
Jeśli to ma być rejestracja z przerwami, to można i oscyloskopem: co te 30 sekund złapać przebieg trwający np. 60 ms, przesłać do komputera (albo i Raspberry Pi, jeśli jest program obsługujący ten oscyloskop, który pójdzie na Pi), wyliczyć, co jest potrzebne, zapisać; można użyć jakiejś funkcji odmierzania czasu (np. setitimer() w Linuksie), żeby odmierzać...
Program ma działać następująco: 1. Wyświetl stałą wartość początkową - jakieś 4 cyfry bez znaczenia jakie np 1234 2. Zacznij odliczać czas - to ma być realizowane za pomocą timera T0, który ma zgłaszać przerwania 3. Wyświetlaj sekundy na dwóch cyfrach z prawej i minuty na dwóch cyfrach z lewej W punkcie 2 napisano, że T0 powinien odliczać czas, czyli...
Witam serdecznie. Piszę z prośbą o pomoc przy zaprogramowaniu w/w sterownika PLC. Mam do wykonania most umożliwiający wpięcie w sieć ProfiBus starszego typu urządzenia przygotowanego do pracy w sieci ModBus. Problem pojawia się w momencie wysyłania ramki ModBus ze sterownika do urządzenia poprzez port rs232 (wykorzystany moduł to wago 750-650). Standard...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
poza tym dlaczego nie używasz sprzętowych timerów jako timerów tylko do generowania przerwań? Kolego może źle mnie zrozumiałeś ale do ustawiania flagi używam Timer0 i właśnie mnie dziwi dlaczego mi się te czasy nie zgadzają Jak do wyznaczenia czasu używam tego samego timera. Tak wygląda obsługa przerwania u mnie : Timer może zliczać czas wprost i w...
Pin 6 to MR (Master Reset), aktywny wysoki (musi być w stanie niskim, by 4541 odmierzał czas). I trzeba jakoś ten stan niski na czas włączenia kierunkowskazów zapewnić - na cały czas, nie tylko na te odcinki czasu, w których żarówki świecą. Czyli od pinu 6 do masy kondensator, opornik do +12V, i dioda do sygnału, na którym 0V pojawia się w tych odcinkach...
Chodziło mnie oto, by po doliczeniu 1s i porownaniu z rejestrem OCR0A wygenerował przerwanie. Do reejstru trzeba wpisać odpowiednia wartośc. Wyliczyłeś, że jest to 146. Mniemma, że musze wpisać tam fizycznie to w Hexie, czyli 0x92, tak? Fizycznie to jest binarnie,a czy wpiszesz dziesietnie, szesnastkowo czy binarnie to nie ma znaczenia, asembler wszystko...
Zadaniem programu ma być odmierzenie 1 sekundy (zmiana stanu na wy). Przerwanie od timera 2 przychodzi co 1ms. Kwarc zewnętrzny ~11MHz. Czy ktoś mógłby napisać dlaczego program nie działa? #include<avr/io.h> #include <avr/interrupt.h> int i=0; int main(void) { DDRC = 0b00001000; TCCR2=_BV(CS22); TIMSK = _BV(TOIE2);...
Zacznie odmierzać od początku, tzn od razu załączy silnik i znów 10 minut pracy i odpoczynek...
AVE... Przy kwarcu 20Mhz: Ustawiasz preskaler timera Timer2 na 1:16. Wartość rejestru PR2 ustalasz na 99. Postskaler ustawiasz na 1:5. Następnie zliczasz przerwania z flagą TMR2IF podnosząc wartość jakiejś zmiennej o jeden. Gdy zmienna będzie równa 625, to będziesz miał swoją sekundę... Przy kwarcu 4Mhz: Preskaler na 1:16, PR2 = 24, postskaler na 1:5,...
Odmierzanie czasu 1,5 znaku (max przerwa między znakami wewnątrz ramki) i 3,5 znaku (minimalna przerwa między ramkami) musi działać niezależnie od obciążenia Slave. Czytaj: przerwania, lub sprzętowy timer, lub jedno i drugie. Slave zawsze musi wiedzieć, co się dzieje na magistrali - kiedy jest początek ramki, kiedy ramka się skończyła, kiedy była zbyt...
Teraz spróbuję ustawić RTC na zewnętrznym kwarcu. Zanim zamknę temat może ktoś zechciałby podpowiedzieć na co tutaj zwrócić uwagę? (Myślę że to nie odbiega od tytułu tematu) A konkretnie - jaki kwarc? przy okazji jeszcze ten link: Czas - odmierzanie
Czyli w skrócie: 1. Naciskamy przycisk 2. Otwiera się pierwszy zawór na czas 22 ms do 70 ms (czas ma być regulowany) 3. Zawór 1 się zamyka, odmierzane jest od 400 ms do 1000 ms przerwy 4. Otwiera się zawór 2 na czas ???? (stały) 5. Koniec cyklu czekamy na wciśnięcie przycisku ???
A jakie są priorytety przerwań? Do odmierzania czasu musi być przerwanie o wyższym priorytecie, inaczej zostanie zaburzone przez inne przerwanie.
No to widzisz. Jednak masz przerwania. Czyli odmierzanie czasu w pętli (a więc za pomocą Wait(xx)) będzie zaburzone) Masz Przerwa jako zmienną, a tak nie może być tak jak wcześniej napisał Mirekk36. Trzeba było posłuchać. Jeżeli nie chcesz tego zmieniać w 100 linijkach kodu to po prostu zrób z tego stałą (const Przerwa = 1000). Dodano po 7 Acha. Masz...
Koledzy mówię Wam, że odpowiedni moment wywołania danej funkcji nie stanowi problemu. Od długiego czasu stosuję taką metodę. Jest sobie jeden timer, który służy tylko od odmierzania wszelkich stałych czasowych itp: [syntax=c] ISR(TIMER1_COMPA_vect) { /* ... */ liczba_setek++; // pełne sekundy: if(liczba_setek >= TICKS_PER_SEC) { liczba_setek = 0; if(timChlodzenia)...
Dziękuję Boski Dialer za mega wypasioną odpowiedź. Używam AVRów. Podoba mi się ta pierwsza metoda co mi zaproponowałeś, ale mam pytanie czy mogę to zrobić także tak: [syntax=c]#include <stdint.h> volatile uint16_t cnt_val; volatile uint8_t cnt_busy; ISR(TIMER...) { if(cnt_busy) { cnt_val--; if(!( cnt_val )) cnt_busy = 0; } } int main(void) { //...
Nie do końca zrozumiale napisałeś. Odmierzanie czasu oczywiście da się zrobić w przerwaniach i jest to najczęściej stosowany sposób. Dobrze jest wywoływać przerwanie co stały okres, który będzie wspólnym dzielnikiem obydwu czasów, które chcesz odmierzać. Np. 250us. Wtedy w przerwaniu inkrementujesz jakiś rejestr i sprawdzasz czy osiągnął wartość 5....
Wzór na czas pomiędzy przerwaniami na podstawie datasheeta uwzględnia jeszcze jedną małą rzecz - wartość 1. Po przekształceniu otrzymujemy: t = \frac{t \cdot F_{CPU}}{N} - 1 Przy założeniu że t = \frac{\pi 20}{3} Wartość do timera powinna wynosić 6143. Inna sprawa jest taka, że zacytyhę kolegę BoskiDialer: W trybie CTC wartość timera jest zerowana,...
Witam, piszę całkiem spory (w moim mniemaniu) program do sterowania silnikiem i paroma jeszcze innymi rzeczami (aktualnie na ATmega32L i 8MHz wewnętrznego oscylatora) i mam niezrozumiały dla mnie problem z obsługą przerwania od timera, kod obsługi przerwania wygląda mniej więcej tak: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16,...
' Trzy przyciski kolejno .... (TSA ;) ' wersja bez przerwań i Timera czas_a as integer ' zmienna czasowa A czas_b as integer czas_c as integer we_a alias pinx.1 ' wejście A we_b alias pinx.2 we_c alias pinx.3 wy_a alias Py.1 ' wyjście A wy_b alias Py.2 wy_c alias Py.3 stan_a as bit ' stan układu monostabilnego A: 0 - czeka, 1- liczy stan_b...
Cześć Wykonałem układ z książki tyrystory i ich zastosowania co polecił kolega zworys. Układ robi tak tryyy ... przerwa i po chwili tryyy i tak w kółko;] kondensator C1 naładuje się i odcina ładowanie, a gdy na nim spadnie napięcie to przepuszcza kilka pełnych "połówek". Szału nie ma :D :P Czy istnieje jakiś prosty układ scalony do precyzyjnego odmierzania...
Mam jeszcze pytanie, czy jest mozliwosc manipulowania przyciskiem reset? Tzn, mam wgrany prorgam stoper i po wcisnieciu przycisku reset np 2krotnie lub przytrzymaniu, chciałbym aby zmienil mi sie na program zegara. Jest taka mozliwosc? Przcisk 'Reset' na Arduino nie ma takiej możliwości, ani nie jest taka jego funkcja. Jego funcją jest uruchomienie...
Jakiś pomysł na 1-Wire poza USART? Tak - UART. :-) Pomysł z przerwaniami od timera jest zły? Timer generowałby przerwania co 15us. To pozwala uzyskać wymagane czasy, 15, 45, 60us (zdaje się powinno być 64). Moge też ustawiać timer na ile potrzebuję, np: 1W = L timer = 15 (liczy w dół) void przerwanie od timer=0: 1W = H kolejne działania....
Witam serdecznie, szukam projektu który pomógłby mi w zbudowaniu urządzenia które odmierzałoby czas pracy pracownika, po kliknięciu przycisku. Gdy będzie chciał iśc na przerwę klika odpowiedni przycisk i czas przerwy się nalicza nie resetując czasu z przed przerwy. Podobne urządzenie jest ukazane pod adresem : https://www.youtube.com/watch?v=4xhqHwpZ...
Pamiętaj że sama transmisja też swoje trwa :) a poza tym nie pokazałeś funkcji printf (może ona bawi się w _delay_ms() ?) Zauważ również że przerwanie występuje niezależnie od transmisji, może dochodzić do takiej sytuacji ze raz przerwanie zmienić Ci wartość zmiennej tuż przed transmisją a raz tuż po niej i to spowoduje Twoje opóźnienia. Spróbuj blokować...
Witam! Ja też robiłem podobny układ. Mam pytania: Po włączeniu układ ma robić przerwę czy się załączyć? Jak dokładnie ma być odmierzany czas? Ten mój układ nie jest dokładny i był robiony doświadczalnie na inne wartości czasów, ale po drobnych zmianach powinien działać 10 min/5 sek. Układ jest prosty - dwa tranzystory i przekaźnik (no jeszcze rezystory,...
Mam ustawiony timer w Input Capture Ustawienie timera z przepełnieniem licznika IC_Timers 40000 (po prostu potrzebowałem równy czas też dla odmierzania zegarka i innych bajerów do odmierzania czasu ) przerwanie co 20ms. https://obrazki.elektroda.pl/6280175200_... Od lewej okres, czas stanu wysokiego, aktualny timer ICR1, poprzedni timer...
Witam ponownie, wiedz tak na początek ile chcemy na takie zabezpieczenie przeznaczyć gotówki, ale do rzeczy na początek jakiś czujnik przepływu cieczy znalazłem jeden na allegro wstawiam link. http://www.allegro...czujnik_przeplywu_s... Do tego jakaś czasówka która od mierzy czas przepływu wody, jakieś 200zł. Ostatnia rzecz to zawór elektromagnetyczny...
Napisz coś podobnego jak poniżej: [syntax=c] // zmienne globalne dostepne rowniez w przerwaniu volatile uint32_t PulseWidth; volatile uint8_t zakonczono_pomiar = 0; // obsluga przerwania TMR32B0 void TIMER32_0_IRQHandler(void) { static uint32_t LastCapture = 0; if ( LPC_TMR32B0->IR & (0x1<<4) ) // sprawdzenie czy przerwanie od kanalu zliczajacego...
Przyznam, że 99,99% moich programów zaczyna się od napisania przerwań od timera, najczęściej 1ms (w 8051 było to 10ms bo był koszmarnie wolny i rozbudowane przerwania wywyływane co 1ms zużywały 50% czasu procka). Do tej wypowiedzi. Nie uzależniasz przerwania od specjalnego pinu procesora, który bezwzględnie wymusza wykonanie konkretnych akcji. Tworzysz...
Tak jeszcze powrócę do tematu bo mam taki zapis jak usypiam [syntax=csharp] if(Sleep_ON){ //////////////////// wylacz WDT wdt_disable(); //////////////////// uspij mikrokontroler set_sleep_mode(SLEEP_MODE_PWR_DOWN); power_all_disable(); // wylacz wszystkie peryferia cli(); // wylacz przerywania sleep_enable(); CLKPR = bit (CLKPCE); // zmniejsz zegar...
https://obrazki.elektroda.pl/2568884200_... Witajcie moi drodzy Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części zademonstruję jak używać wyświetlacza 7-segmentowego z PIC18F2550 . Kod obsługi wyświetlacza będzie oczywiście napisany w oparciu o przerwania i timery . Cały proces powstawania układu...
te 40 kHz to procesor ma przerwać swoje działanie czy tez ma w dalszym ciągu przetwarzać przerwania? A co do 1s, to najłatwiej będzie wykorzystać przerwanie z zewnętrznego zegara i dać kwarc 32,768 kHz i dać dzielnik Timer'a na 32768 co da przerwanie raz na sekundę :)
Potrzebuje taki sygnał do płytki z arduino, bo nie wiem jak to programowo zrobić o ile w ogóle się da. Sprzętowo, czy programowo, robi sie to tak samo, gdy zaniknie napiecie trzeba poczekać dłużej niż czas przerwy w miganiu i ponownie sprawdzic, sprzętowo uzywa sie przerzutnika monostabilnego, programowo odmierza czas timerem. W realizacji programowej...
Wybaczcie początkującemu, bo pytam zapewne o jakąś strasznie trywialną sprawę, ale póki co nie mogę sobie z nią poradzić, więc szukam pomocy. Piszę sobie cośtam. Cośtam ma multipleksowo obsługiwany wyświetlacz LED, multipleksowanie jest załatwiane podprogramem uruchamianym z przerwania od T0. Tyle napisałem i tu wszystko działa pięknie. Dalej, przed...
Podłącze się do tematu. Piszę funkcję zapisu na LCD godziny, daty z PCFa. Mój sprzęt: Atmega128, sprzętowy TWI, przerwanie z PCFa, LCD 240x128, AVR studio 4 + WinAVR I zastanawiam się czy co przerwanie (1s) mam napisać funkcję odczytującą całego PCFa (wszystkie potrzebne rejestry) i zapisanie tego na LCD, czy może inaczej. Właśnie tak zrobiłem, ale...
Ja bym to zrobił tak. Jeśli czasy będą w sekundach. Ustawić CTC na 1 sekundę. W pętli głównej, lub przerwaniu ADC w zależności od wartości ADC ustawiamy zmienną x. Jeśli x > 0 to led świeci. A w przerwaniu od CTC deinkrementujemy x, x--;
jesli przerwanie zakloca ci transmisje i2c to masz cos nie tak bo to transmisja synchorniczna i nawet jesli dana przestanie się wysylac na kilka minut a potem się wznowi to bedzie ok. może przybliżę problem ponieważ wiem że coś jest nie tak :D tylko co ? 1)przerwanie timera w okreslonym interwale czasowym sprawdza stan klawiatury i jesli jakis klawisz...
Witam. Urządzenie powstało z potrzeby "bronienia" upraw przed "najazdem" ogromnej ilości kruków, które ponoć są pod ochroną... http://obrazki.elektroda.pl/2425866000_1... Budowa trwała rok, z wielkimi przerwami. Zasada działania dość prosta. W komorze spalania zrobionej z litrowej butli po butanie miesza się w odpowiednich proporcjach...
witam. Mam pytanie-czy i jak można "zablokować" dalsze odmierzanie czasu na zwykłym zegarku elektronicznym (takim z wyświetlaczem LCD lub LED) chodzi o to że kiedy zrobię przerwę na obwodzie (pytanie czy jest jakieś uniwersalne miejsce w każdym zegarze np.: kwarc) to czas na wyświetlaczu nie zniknie tylko zatrzyma się na momencie zrobienia przerwy?
Witam, z powodzeniem wiele razy wykorzystywałem kwarc 12MHz do odmierzania czasu w '51. Używałem wtedy trybu '0' timera, w którym cykl zliczania młodszej połówki TL licznika jest skrócony do modulo 32, natomiast TH przeładowywany był stałą 256-50=206. W ten sposób przerwanie od timera nadchodziło z częstotliwością: 12000000Hz ÷12 ÷32 ÷50 = 625Hz Dalsze...
Szanowni koledzy czy ktoś z was może mi powiedzieć jaką mogę osiągnąć precyzję przy odmierzaniu czasu przy wykorzystaniu układu ATmega16 z zewnętrznym zegarem 8.000 MHZ(rezonator kwarcowy)? Morduje to już drugi dzień i nie mogę zrobić tego w sposób precyzyjny - na każde odmierzone 10 minut atmege spieszy o ok 20s - taka zwłoka jest dla mnie niedopuszczalna...
Proszę tu jest działający program z częstotliwością pracy timera 8kHz. $regfile = "m16def.dat" $crystal = 16000000 Config Timer2 = Timer , Prescale = 1 On Timer2 przerwanie Enable interrupts Enable Timer2 Load Timer2 , 250 Do Loop End przerwanie: Load Timer2 , 250 Return Musisz odpowiednio załadować wartość reload by uzyskać pożądany efekt.
Kolego dondu: deklaracja zmiennej licznik: unsigned long int licznik=0;//zmienna globalna licznik Fuse bity ustawione prawidłowo (temat wałkowany setki razy).Zegar definiowałem początkowo w ustawieniach konfiguracyjnych AVR Studio, później gdy zaczęły się problemy przez #define F_CPU. Do mirekk36: Timer sprzętowy działa bardzo dobrze i precyzyjnie....
To jest projekt teoretyczny...(na kartkę) nic zewnętrznego nie podepnę bo mam już wszystkie porty zajęte...więc to odpada. W avr pisząc programy mogłem ustawiać w przerwaniu od nowa wartości początkową licznika. ZS 8051 mam pierwsze do czynienia...przede wszystkim ujawnił się brak preskalerów w 51. Obecnie moja wizja wygląda tak: Mam do odliczenia godzinę...
Przepraszam za takie proste i dla niektórych oczywiste pytania ale pierwszy raz uczę się obsługiwać Timer'y Obsługa jest bardzo skomplikowana. Timer0 posiada tylko konfigurację preskalera + ewentualne włączenie przerwania od przepełnienia. Cała reszta nie ma nic z nim wspólnego. Aby odliczyć 1s to trzeba naliczyć 18432000 taktów zegara (przy preskalerze...
Load Timer 250 pojawił się 2 razy bo pierwszy jest wykonyawny przed wejściem do pętli a następny w pętli. W tym programie jest dodatkowa zmienna Licz_8ms bo Timer0 nie może odmierzyć całej sekundy w jednym przebiegu. Przy użyciu Timer1 i odpowiedniego kwarcu można osiągnąć przerwania co 1 s. Jest to korzystne bo odmierzanie czasu jest nieco dokładniejsze....
Config Timer0 = Timer , Prescale = 64 On Timer0 Odmierz_1s 'podprogram wykonywany podczas wystapienia przerwania Dim Licz_8ms As Byte 'deklaracja zmiennej Enable Interrupts 'aktywacja globalnego systemu przerwan Enable Timer0 'aktywacja timera0 Counter0 = 131 'wpisanie wartosci początkowej do timera0 Dim Sek As Byte 'deklaracja zmienna zawierajaca...
to post Programowanie a nie Humor!!!!chodziło mi o użycie przerwania do odliczania czasu, dokładnego odliczania czasu!!!
Wybacz ale nie znam dokładnie twojego mikrokontrolera, ale w Atmega zdecydowanie lepiej jest ustawić taki preskaler aby czasy jak w one-wire po prostu do niego ładować i stan nóżki z termometrem zmieniać programowo w przerwaniu - w końcu po co robić programowo licznik skoro masz sprzętowy, który nie zajmuje procesora z tak błahego powodu jak inkrementacja...
Jutro jeszcze sprawdzę jak będzie działać Attiny 45. Może coś uda się osiągnąć. Zrobiłem trochę testów na attiny13 i po nich jestem bardzo sceptyczny co do użyteczności funkcji micros() w takim zastosowaniu jak metoda użyta w twoim szkicu. Mam obawy że na attiny45 problem może być ten sam, tylko nieco mniejszy, z powodu możliwości wyższego taktowania....
zegar odmierza bascom odmierza odmierza atmega
sterowanie wycieraczek astra pamięć eeprom radio wieża technics wyłączać
traktorek silnik briggs traktorek silnik briggs
Bosch 2300 iW 15P – zmiana mocy maksymalnej kotła, ustawienia serwisowe, gwarancja Manta LED4202, CV9202H-A39 – brak 12V na J14, obecne 12V na J16 – diagnostyka zasilania