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...
Można np. zadeklarować funkcje inline włączające i wyłączające diodę w jakimś headerze i potem je wywoływać. Tak jak proponujesz, to się generalnie nie da zrobić, chyba, że np. masz w okresowym przerwaniu zegarowym kod, który będzie takie zmienne przepisywał na wymagane porty. (oczywiście, powyższe dotyczy tego, co napisał autor, nie excray)
o okresie 14 ms i współczynniku wypełnienia 24% Oblicz czas trwania jedynki i czas trwania zera. W przerwaniu zegarowym: - jeżeli jest 1 to ustaw czas trwania 0 i ustaw 0 - jeżeli jest 0 to ustaw czas trwania 1 i ustaw 1 Myślę, że możesz spróbować tak dobrać częstotliwość, żeby przeładowywać tylko rejestr "high" zegara.
Klawiszy (poza wyjątkowymi sytuacjami typu wybudzanie uC) nie robi się na przerwaniach INT. Delaye w przerwaniu to nieporozumienie. Twoje przerwanie realizuje się tylko po wciśnięciu przycisku, więc trudno by było, aby zwróciło informację o jego zwolnieniu. Zrób przerwanie zegarowe co 25-50ms i cyklicznie sprawdzaj stan klawiatury. Opanujesz w ten sposób...
Może skorzystać z przerwania, które UART zgłosi, kiedy odbierze znak. Wtedy kod może wyglądac tak: ISR (SIG_OVERFLOW2) { //obliczanie wartosci ktore maja byc wyswietlone na wyswietlaczu } ISR (USART_RX_vect) { //operacje na odebranych danych } main(){ //wlaczenie przerwan itp while(1){ //wyswietlanie...
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...
Robisz przerwanie zegarowe co np. 2800Hz i w przerwaniu sprawdzasz stan każdego wejścia do którego masz podpięty czujnik i liczysz im odpowiednio czasy.
Witam, Używam FSMC do obsługi wyświetlacza, a timera do generowania przebiegu który steruje serwomechanizmami. Zauważyłem taką przypadłość, że jak coś zmieniam na ekranie to serwa lekko drgają, co zapewne jest spowodowane jakimś opóźnieniem w wysterowaniu wyjścia przez zegar i/lub uruchomieniu przerwania które ładuje następna wartość do rejestru (jeden...
Witam, przerwania dosowe, a dokładnie przerwanie zegarowe 0x1C, nie chce mi działać w Borlandzie 6, ani w Visualu 6.0. problem polega na tym że mamy do zrobienia projekty w jezyku c coś w rodzaju zbiorniczki i przelewające się ciecze plus sterowanie za pomocą kilku klawiszy(w szczegóły nie będę się wdawał ) program ma się wykonywać z cyklem 0.1s i ma...
Pod czystym DOS-em twoja aplikacja jest jedynym uruchomionym procesem (nie licząc przerwań, ale te można wyłączyć). Czysty DOS oznacza też prace wtrybie real procesora (żadnej wirtualizacji). W zasadzie masz do dyspozycji procesor w stanie "czystym". Prawie uzysksz spodziewane rezultat. Na ich dokładność wpłynie jedynie instruction pipelining i ew....
No niestety szybkość będzie największym kłopotem...ale można zamiast rysować wykres od nowa tylko zmieniać zakres danych... Przerwania zegarowe w excelu występują...oto przykład: Private mNextTime As Double Sub OnTimer() mNextTime = Now + (TimeSerial(0, 0, 1)) Application.OnTime mNextTime, "aktualizuj" End Sub Sub StopTimer() If mNextTime Then Application.OnTime...
(at)jta można wzbogacić o kondka, jak najbardziej. Można prościej, bez oporników Jak zwykle proszę o schemacik. zastąp sobie oporniki kreską... i sam narysuj schemacik oczywiście trzeba obrobić programowo impulsy co 20ms. Możesz to opisać bardziej szczegółowo jak byś to zrobił. Ja do takich rzeczy odpalam sobie licznik (timer) który robi mi przerwanie...
gmp wrote: Procek obsluguje poprawnie 4xmnijesze czestotliwosci od zegara. Dziwne, ale z dokumentacji wynika coś zupełnie innego. Mikrokontroler poprawnie rozpoznaje zmianę stanu (przy reakcji na zbocze) o ile stan ten trwa dłużej niż jeden cykl zegarowy. Przy czasach krótszych może wykryć albo nie. Pan Arkadiusz Krysiak w swojej książce o AT90S2313...
Bardzo przepraszam ale z głupia frant zapytam: czy nie lepiej zrobić to wszystko zgodnie z zasadami sztuki ? Mam na myśli "macanie" wszystkich mechanicznych elementów w przerwaniu zegarowym, maskowaniu drgań, itp, itd.
USART na przerwaniu od odbioru, a przycisk na przerwaniu zegarowym co 1/10s.
Zegar komputera typu PC jest taktowany przerwaniem zegarowym. Aby uzyskać dokładniejszy pomiar czasu należy przejąć przerwanie zegarowe, oraz zwiększyć częstotliwość jego generowania. Jeżeli przerwanie zegarowe będzie sprawdzało stan portu równoległego, to zliczając ilość przerwań pomiędzy kolejnymi impulsami z czujnika można będzie dość dokładnie określić...
Serwo po zmianie wypełnienia błyskawicznie ustawia się na nowej pozycji więc jeśli chcesz płynnie zmieniać pozycję serwa to musisz sam powoli zmieniać zmienną "pozycja". Najlepiej w jakimś przerwaniu zegarowym. Proponuję tak: - robisz zmienną "pozycja" i zmienną "zadana" i nadajesz im odpowiednie wartości początkowe W pętli głównej: - inicjalizujesz...
Pod jakim systemem operacyjnym. W DOS'ie w prosty sposób możesz oprogramować przerwania zegarowe (poszukaj informacji o przerwaniach 0x1c, 0x1a, 0x4a)
Producent może wykonać oscylator o dowolnej częstotliwości (w pewnym zakresie - trudno zrobić rezonator kwarcowy np. na 1kHz, ale widziałem i takie; górna granica to może około 100Mhz) - a robi takie, na jakie jest zapotrzebowanie. 1,8432 MHz przydaje się do portów szeregowych (po podzieleniu przez 16 daje 115200 Hz - taki był najszybszy baud rate w...
Ustawienie własnego programu obslugi przerwania zegarowego - ale to nie ten poziom programowania Smile Tego sie obawiam !
Wystarczy że czytasz stan klawiatury w przerwaniu zegarowym co 0,1s i masz spokój.
Ok rozumiem. Pobawie sie troche najpierw rozkazem RDTSC a potem zegarem RTC :). Obsługe przerwania zegarowego juz przejrzałem:) Dzieki za poświęcony czas:)
Ja bym chciał schemat że noga x procka jest połączona tymże drutem z nogą y wyświetlacza, a nie przekopywać się przez kilka kolejnych definicji. Sprawdzenie tego będzie też dla ciebie weryfikacją czy coś nie sp... Widzę że masz uruchomienie SPI w przerwaniu zegarowym, to się wykonuje cyklicznie? Czy to jakiś jednorazowy delay? When configured as a Master,...
W kwestii formalnej, ten kod się nazywa kodem Gray'a (od nazwiska Franka Gray'a 1887-1969, pracownika laboratoriów Bella, który go opracował) Co do samego problemu, to - prędkość obrotową wyliczysz z jednego kanału mierząc ilość impulsów w jednostce czasu lub mierząc czas trwania jednego okresu i przeliczając to na obroty (wiadomo ile masz impulsów...
To zależy jak napiszesz program ale ja nie widzę tutaj żadnego problemu czy kolizji. Przerzucenie obsługi klawiatury i wyświetlacza do przerwania zegarowego powoduje to że w programie głównym masz bardzo dużo czasu na zajęcie się czymkolwiek chcesz.
Używanie przerwania od zmiany stanu do obsługi przycisku jest ze względu na drgania styków niezbyt praktyczne. Na każde jedno wciśnięcie i puszczenie przycisku będziesz miał wiele zgłoszonych przerwań. Moim zdaniem, lepiej czytać stan przycisku w cyklicznym przerwaniu zegarowym, np. co 0.05-0,1s.
Moim zdaiem najlepiej robić to programowo, w sposób wyżej podany, ja używam do tego celu przeważnie przerwania zegarowego, żeby nie zajmować procesora odliczeniem opóźnień. Z doświadczenia to w zupełności wystarcza 10ms na wytłumienie drgań. Co do autopowtarzania to wszystko można zrobić odpowiednio pisząc program;-).
Mój enkoder wysyła 4 impulsy i wynik dziele przez 4. Impulsy nie skaczą i zliczają się poprawnie. Funkcja jest wyzwalana przerwaniem zegarowym a nie zewnętrznym. Tak więc nie będę robił deboucingu. Pozdrawiam i dziękuję za odpowiedź.
(at)Chivo Zamiast przerwań wykorzystaj możliwość podania sygnału zegarowego na licznik - licznik w M16 ma możliwość zliczania impulsów podanych na wejście T procesora. To nie jest kwestia dokładności, lecz wygody i wykorzystania zasobów procesora. BTW, ściągnij sobie darmowe przykłady do książek z mojej stopki - masz tam pokazany właśnie przykład licznika...
Witam Załóżmy że chcemy mieć 50Hz. Teraz trzy wyświetlacze to wychodzi przerwanie 150Hz czyli okres co 0,00666 itd sec. Teraz policz ile cykli przypada przy Twoim zegarku na taki czas. Teraz wystarczy podstawić dane do liczników Timera (pamiętaj że liczą one w górę). Wydaje mi się że ładniej jest przeładować liczniki Timerów przy wejściu do przerwania...
Najprościej to zrobić w przerwaniu zegarowym, sprawdzasz stan klawiszy i po powiedzmy 10 ms sprawdzasz ponownie, jeżeli taki sam to zaczy, że drgań nie ma... Albo tak samo, tyle że czas odliczać pętlą, ale tu trzeba mieć wystarczająco dużo czasu na takie marnotrastwo cykli maszynowych.... PS. Podobna dyskusja się już toczy...
Sprawdź priorytet przerwań ! Jeżeli RS ma wyższy to przy długim ciągu wstrzymuje ci pomiar w przerwaniu zegarowym. Lepiej mierzyć okres albo nawet mierzyć średnią z kilku pomiarów podzieloną przez ilość okresów (zwiększa to N krotnie dokładność kosztem wydłużenia pomiaru). Zatrzymać pomiar, wysłać dane i znów mierzyć !
Komparator w AVR może być przełączany również na wejścia ADC a więc można podać różne sygnały przez różne dzielniki na poszczególne wejścia ADC i ewentualnie w przerwaniu zegarowym się między nimi cyklicznie przełączać bądź za każdym razem sprawdzać wszystkie po kolei. Będzie to szybsze aniżeli pomiar za pomocą ADC.
Tak jak w tytule, testuję program JTAG-iem i niestety fakt ten wpływa negatywnie na pracę przerwania zegarowego. Timer cyklicznie zmienia pewną wartość (rodzaj znacznika) od jego wartości zależy jak się prgram zachowuje w innym miejscu. Problem w tym że zależałoby mi na tym aby przerwanie pracowało swoim tempem niezależnie od debugowania. Póki co licznik...
Witam, udało mi się zrobić przerwanie zegarowe. Teraz potrzebuję przerwania takiego, żeby zadziałało, gdy napicie na pinie analogowym osiągnie odpowiednią wartość. A ta wartość będzie wpisana w arduino i porównywana z tą z pinu wejściowego.
1. Jaki jest cel użycia linijki: __enable_interrupt(); taki sam jak _EINT(), i _BIS_SR(GIE) Te trzy zapisy powinny robić to samo czyli zezwalać globalnie na przerwania. Gdybyś tą liniję usunoł to program nigdy by nie wszedł w żadne przerwanie. Czy wyzwolenie przerwania dla TimerA przez TAIE " nie zmusi" programu do wejścia w przerwanie? Nie....
Wpisz a googlach - Arduino Frequency Counter , znajdziesz całe kompletne opracowania. Co do obsługi timerów: https://majsterkowo.pl/zegar-cyfrowy-led... http://100-x-arduino.blogspot.com/2016/0... http://atmega32.republika.pl/17.htm Niestety najlepsze teksty o timerach są w...
No tak przeczytałem to jeszcze raz i faktycznie nic tam nie pisze o zatrzymaniu licznika: czytałem z tego źródła: http://sti.net.pl/~zealot/SKiM/Lab/8253.... Mam jeszcze jedno pytanie. Bo w całym tym artykule, nie pisze nic o przerwaniu zegarowym. Piszą tylko o stanach OUT, GATE, CLK. Wiem tylko z innych źródeł ze wyjscie OUT wywołuje to przerwanie....
posłuchaj rady radka (:(: ( -fajne) ale jak chcesz na przerwaniu zegarowym to zawsze można skalibrować kwarc ?? wpisując do timerów wartości nie wynikające z obliczeń a z pomiarów dokładności chodzenia. Dodano po 7 nawet tego nie czytajcie, nie zauważyłem to są trzy strony postów. Nic nowego do dodania.
Witam, sprzętowe maskowanie drgań styków wymaga zastosowania odpowiednio dobranego dolnoprzepustowego filtru RC. Wskazane jest również użycie bramki z histerezą dla uniknięcia niezdefiniowanych poziomów logicznych na wejściu procesora. Znacznie łatwiej oraz bez żadnych dodatkowych kosztów można zrobić to programowo. Najbardziej elegancko można zrobić...
uzupełniłem sobie piny i chciał bym na początek zrealizować jednym klawiszem tak: jedno kliknięcie- miganie diody przetrzymanie klawisza- zaświecenie się diody Tak jak Ty to robisz to jest nie bardzo poprawnie. Zauważ że kiedy robisz te delay to program tkwi tam jakiś czas i nie podgląda sygnałów wejściowych. Również tym sposobem możesz robić tylko...
Bez kwarcu ATMega8 odmierzajac czas popelnia blad ok +/- 2-3 min na dobe w zaleznosci od temperatury otoczenia. Kwarc zapewnia niewatpliwie wyzsza dokladnosc. Zamiast stosowac "wait" lub inne cudaczne procedury, ktore nie wiadomo, jak dzialaja, lepiej o razu zrobic to na przerwaniu zegarowym. W jezykach typu 'c' najprymitywniesze rozwiazania sprawdzaja...
Potrzebuje pomocy przy przerwaniach czasowych/zegarowych, nie wiem jak to się dokładnie nazywa. Chodzi o to, że co np.20ms wykonywało się dane przerwanie. Proszę o kod i wytłumaczenie jak to działa.
Chodzi o programowanie SIMATIC s7-300 Bardzo bym prosil kogos o pomoc. POtrzebuje w swojej pracy podać PRZYKŁADY konkretnych OB - np. OB1 to program główny, OB35 to blok uruchamiany przerwaniem zegarowym, itp., Wiem tylko tyle. Moze ktos mi pomoze gdzie to znalesc (najlepiej w jezyku polskim badz od razu jakby sie dalo to moze by mi ktos napsial)
na początku też myślałem o asm ale przestraszyła mnie perspektywa obliczeń na 16bitach ze znakiem potem okazało się że bascom choć powolny 20x na sekunde wyciągnie a to wystarczy program działa dla pasma niskiego idealnia a dla wtsokiego tylko do 8kHz a potem się cofa ale to chyba od zawolnego próbkowania (tak myśle ) muszę zrobić to próbkowanie w przerwaniu...
jeśli chcesz sprawdzać program w wielu miejscach to zastosuje flagi ustawiane w punktach kontrolnych a ustawienie tych flag sprawdzaj w procedurze obsługi Watchdoga. Możesz wtedy sprawdzić obecność w wielu punktach i wyzerować (lub nie) timer, z wyzerować wszystkie fagi. Wtedy procedura nawet dobrze jak byłaby obsługiwana w przerwaniach zegarowych (nawet...
A sprzętowo sprowadza się to do licznika, który jest taktowany niezależnym generatorem. W prawidłowo działającym programie trzeba co jakiś czas lasować ten licznik. Jeżli program pójdzie w liście to i nie będzie wykonywał instrukcji zerowania licznika, który się w takim wypadku przepełni i spowoduje reset uP. Nie jest to jednak zabezpieczenie skuteczne...
Starannie wykonana konstrukcja, bardzo dobry opis i świetna tabela z wyszczególnieniem kosztu elementów. Praktycznie cały program wykonywany jest w cyklicznym przerwaniu zegarowym. Co do samego programu, to podstawowa zasada jest taka by przerwanie trwało jak najkrócej. W przerwaniu powinieneś tylko zapisywać wynik pomiaru i przetwarzać go w pętli głównej,...
Witam, Chciałbym wywoływać instrukcję DPLSY (generowanie określonej liczby impulsów na wyjściu szybkim Y0) w przerwaniu zegarowym (co 10ms, 4 impulsy-10kHz) Problem: Na tą chwilę mogę wygenerować bez problemu 4 impulsy, ale co 20ms. Problemem jest reinicjalizacja bloku DPLSY. Czy ktoś może wie jak można (i czy w ogóle można) zrealizować takie zadanie...
Trudno, żebym pokazał kod, którego nie ma. Nie licz więc, że go zobaczysz. No chciałem widzieć ten LOW POWER z RTOSEM, skoro bez niego się nie da. Gdybyś chociaż spróbował może doszedłbyś do wniosku, że puste przerwanie zegarowe może w wielu wypadkach rozwiązać nierozwiązalny dla Ciebie problem. Albert
Styki są mechaniczne i pewnie przy ruchu tarczy są szczególnie narażone na dodatkowe drgania. Jak je najlepiej wyeliminować? Wystarczy zwykły kondensator, czy lepiej coś bardziej wyszukanego i co? I czy ktoś robił eksperymenty jakie parametry kondensatorka lub innych elementów najlepiej pasują do takiej klasycznej tarczy? Programowy debouncing. Czy...
Nieznam dokładnie rozkazów 51' ale jesli piszesz to w bascomie to skorzystaj z polecenia "DTMFOUT" :) byc moze pojdzie ( na 90s2313 to dziala) Natomiast cos takiego osiągnoć przez polecernie sound - odpada decydowanie poniewaz niejestes w stanie wygenerowac tonu dtmf który jest wypadkową dwóch sinusoidek ( a jedno polecenie sound blokuje nam procek...
System: kod: Baza=7e00h, Limit=0FFFFFh, flagi=11000000b, TYP=1010b, P=1, S=1, DPL=0 dane: Baza=7e00h, Limit=0FFFFFh, flagi=11000000b, TYP=0010b, P=1, S=1, DPL=0 Aplikacje: kod: Baza=30D40h, Limit=0FFFFFh, flagi=11000000b, TYP=1010b, P=1, S=0, DPL=3 dane: Baza=30D40h, Limit=0FFFFFh, flagi=11000000b, TYP=0010b, P=1, S=0, DPL=3 TSS Aplikacji na DPL=3....
Już prawie mam obmyślone skuteczne rozwiązanie. Po co ID? Jeśli przed nadejściem statusu transmisji rozpocznę inna transmisję to nie będę miał pewności do której transmisji należy status, który później nadejdzie. Jeśli ustawie je jednak w kolejkę i przekażę całe sterowanie wysyłaniem do przerwania zegarowego to jestem w stanie to ogarnąć. To samo przerwanie,...
A może coś takiego (w załączniku)? I przykładowy programik mrugania dwiema diodami... [syntax=c] #include "stm32f10x_io.h" #define LED GPIOA__ODR void TIM1_UP_IRQHandler(void) { if (TIM__UIF(TIM1)) // przerwanie 'update'? { TIM__UIF(TIM1) = 0; // zerowanie flagi LED[0] = LED[1]; // zmiana stanu LED0 LED[1] = ~LED[1]; // zmiana stanu LED1 na przeciwny...
a kiedy te wyjścia mają się wyłączyć ? Do załączenia możesz wykorzystać przerwanie zegarowe OB35. I w tym OB35 załączyć wyjścia. Drugim sposobem jest wykorzystanie timera opóźniającego.
Witam Stos, jest to obszar pamięci do którego zapisuje się kolejkę przerwań i stan rejestrów po zgłoszeniu przerwania. Procesor coś robi, zgłasza się przerwanie, odkłada sobie na stos to co robił, wykonuje przerwanie, zdejmuje ze stosu to co robił przed zgłoszeniem przerwania i dalej to wykonuje. To tak na prędce. Polecam tą stronkę http://www.edw.com.pl/ea/asm_avr.html...
Aha, a więc będzie podtrzymanie bateryjne ? No, no, projekt wygląda mi coraz lepiej, naprawdę. Nie zorientowałem sam się bo nie ma schematu. Tak, jest detektor braku zasilania sieciowego - wyłączy wszelkie bajery pozostawiając tylko przerwania zegarowe i krótki błysk czasu aktualnego co ok. sekundę - da to redukcję z kilkudziesięciu do kilku mA. Oczywiście...
Tak, pod warunkiem oczywiście że program jest napisany w taki sposób że uC się wyrabia i nie gubisz przykładowo części przerwań. Dokładność źródła zegarowego też oczywiście ma znaczenie. Umieszczanie części obsługi wyświetlacza w przerwaniu w takim środowisku jak bascom nie jest zbyt dobrym posunięciem.
No jeśli dysk pracuje ostron to znaczy że może się nie wyrabiać, ja bym to zrealizował na zasadzie, producet-konsument. Są dwa procesy, jeden wrzuca dane do bufora, a drugi odbiera. Problem jest taki że msdos nie zapewnia wielowątkowości. Trzeba by to zrealizować tak aby producent (ten co odbiera dane) działał na przerwaniu zegarowym, a konsument działał...
Ten program robi chyba coś innego, niż Ci się wydaje ;) Licznik nr 1 generuje PWM o współczynniku wypełnienia zależnym od OCR1B. Licznik nr 0 generuje przerwania zegarowe (TIMER0_OVF_vect). Program nie jest kompletny - brakuje definicji zmiennej "kierunek". Załóżmy że na starcie kierunek=1: - OCR1B ma wartość 800 - pojawia się przerwanie od TIMER0 -...
Potrzebuje dobrze ustawić Timer w trybie up. Szczególnie interesuje mnie jak skonfigurować wektor przerwania.
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)...
Jak przerwanie pierwsze jest wykonywane i w tym czasie wystapi drugie, to flaga drugiego bedzie ustawiona dopoki nie skonczy sie pierwsze, czyli jak sie pierwsze skonczy to zacznie sie drugie. A w AVRach jest wektor przerwan, ale ustala on kolejnosc tylko wtedy, jak wystapia przerwania w jednym cyklu zegarowym.
Podłącz przebieg zegarowy pod XTAL1 i powinno dać się ją przeprogramować.
Pod względem peryferiów nic specjalnego nie oferuje A co specjalnego oferują CM0? Natomiast nie specjalnie przyglądałeś się temu co jest. A warto, zwłaszcza właśnie pod kątem niskiego poboru prądu. Zwłaszcza przerwania, układ zegarowy i timery. wiele mikrokontrolerów ma mały pobór prądu Tak, DeepSleep Microchipa i tym podobne. A próbowałeś zrobić na...
Jeśli w asemblerze, to musisz napisać procedurkę do przerwania zegarowego odliczającą odpowiednie czasu w licznikach, w programie głównym zainicjować zegar i odpracować logikę (w sumie kilka instrukcji). Najprościej zrobić to w BASCOMIE - taki program to kilka instrukcji na krzyż, więc nie ma mowy o jakiejś strukturalizacji programu. Nie robię w BASCOmie,...
A ktorych portow i jak uzywac 8051 jako licznik(jak go wykorzystac jako zwykly 14bitowy licznik). Układy licznikowe w trybie 1 liczą jako 16 bitowe liczniki/timery, po ustawieniu źródła impulsów na zewnętrzne będą Ci zliczać impulsy na wejściu T0 lub T1. W przypadku wolniejszych sekwencji możesz wykorzystać wejścia przerwania zewnętrznego, albo dowolny...
Opis Zbigniewa Gibka: Instrukcja LOAD Przeznaczenie: Powoduje wpisanie wartości do rejestru licznika. Składnia: LOAD licznik , wartość gdzie liczniknazwa licznika; może być: TIMER0, TIMER1 lub TIMER2, wartośćliczba potrzebnych impulsów. Opis: Instrukcja powoduje wpisanie do licznika określonej liczby zliczanych impulsów. Przed załadowaniem wartości...
chyba zrobię tak: załaduję timer (mode 1 - 16bit) aby po 50000 cykli generował przerwanie. wtedy co 4 przerwanie mam 100ms dla kwarcu 24MHz. teraz w trakcie zaistnienia opadającego zbocza na którymś INT od impulsu prędkości zabezpieczam naliczone cykle zegarowe od ostatniego przerwania i startuję timer ponownie. dodatkowo zabezpieczam ilość przerwań...
Czyli nadal jest za malo cykli zegarowych pomiedzy przerwaniami? Moge zmienic czas pomiedzy przerwaniami na 20 ms, myslisz ze to cos da? Pozdrawiam
Witam. Według mnie zasadniczy problem (poza ciekawym zastosowaniem funkcji Subnumber ;) leży w umieszczeniu wyświetlania z delayami w przerwaniu. Wyświetlanie trwa dłużej niż czas pomiędzy kolejnymi przerwaniami. Najprostszą opcją byłoby przeniesienie wyświetlania do programu głównego na przykład tak: /*wyświetlacz LED dołączony do P0, stan aktywny...
1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
OK. Pomysł polega na zmianie stanu początkowego wpisywanego do licznika procesora;-), przy czym jeden okres Twojego sygnału będzie zawierał dwa przerwania zegarowe, w jednym wstawiasz do TH0 i TL0 (tajmer 0) czas trwania stanu 0, a za drugim razem czas trwania stanu 1 na końcówce i odpowiednio ustawasz końcówkę. Cała sztuczka polega natym, żeby te wartości...
A, to zmienia postać rzeczy zupełnie. Powiem tak - w DOSie taką rzecz będzie kłopotliwe osiągnąć. Zdecydowanie bym tutaj wolał skorzystać z systemu Windows, gdzie faktycznie osobny wątek by generował z określoną częstotliwością jakieś zdarzenie. Pod DOSem to jedyne co mi przychodzi to przerwanie zegarowe generowane coś około 18 razy na sekundę z tego...
jak nie TTimery to nie wiem co. generalnie do liczenia czasu mozesz wykorzystywac cokolwiek co ten czas odmierza bez wzgledu na to w jakiej skali to robi. najwyzej bedziesz sobie skalowal. mozesz uzyc timerow z nastawnym interwalem, mozesz uzyc przerwania zegarowego (~18,2 raza na sekunde), mozesz uzyc nawet zegara taktujacego porty i/o (programowalny...
PWM można zrealizować programowo np wg poniższego schematu. Do tego trzeba dołączyć np. klucz MOSFET na odpowiednie prąd/napięcie (stosowne rozwiązania sterowania MOSFETA znajdziesz na elektroda.pl). Poniższe rozwiązanie z powodzeniem hula mi w układzie od lat ośmiu: T0INT EQU0BH ;T0 interrupt start address FLAGS EQU28H OUTPRTEQUP2 ;Output port AB0...
Może sprawdź (przeanalizuj) coś takiego. Twój kod jest trochę taki "rozklekotany" i na pewno nie będzie działał zgodnie z założeniem (np. nigdzie nie załączasz p1.0 w pętli). Zmieniłem tylko część przełączającą dzwonek ON/OFF. Nie wnikałem w konfigurację przerwania zegarowego, więc jeśli coś tam jest źle, to na pewno moje poprawki jeszcze nie pomogą....
Wiem, ze sie czepiam, ale jaka jest roznica miedzy podaniem impulsu na diode optotriaka gdy przebieg jest w zerze, a zasileniu diody na stale? w koncu przebieg i tak przechodzi przez zero? Ano czepiasz sie, ale odpowiedz Cie nie zaskoczy. Z punktu widzenia obciazenia efekt bedzie taki sam w obu przypadkach. Triak bedzie wlaczony przez caly polokres,...
Czy ktoś z Was sie orientuje czy w każdym cyklu zegarowym sprawdzana jest flaga przerwania INT0? Szukałem po specyfikacjach i nigdzie nie podają. Sygnał na INT0 ma okres 64us, Attinego taktuje kwarcem 16MHz (bez div8) i widze że okres pomiędzy obsłużeniem przerwań wacha się około 63,5us - 64,5us
Nie pamiętam dokładnie ale specyfikacja IBM AT przewidywała przerwanie zegarowe co kilkanaście milisekund o ile się nie mylę. Nie wiem jak to wygląda dzisiaj, bo sporo rzeczy się zmieniło. Zresztą kiedyś możnabyło sobie dowolnie zaprogramować układ czasowy... Co do uniwersalności basica - to nie wiem skąd założenie, że ma być uniwersalny?!? Ja uważam,...
Mam problem i nie mogę znaleźć odpowiedzi w dokumentacji technicznej uC a mianowicie potrzebuję odmierzać czas przerwaniami po przepełnieniu licznika a do tego ciągle wykonywać pomiar na ADC (przez określony czas). W związku z tym mam kilka pytań: 1. Ile cykli zegarowych trwa przerwanie? Jeżeli 1 proste polecenie wykonywane jest w 1 cyklu zegarowym...
Rozumiem, że czas nie pozwala na ręczne przepychanie bitów, choć każdy slave toleruje zmienną częstotliwość zegara, czyli przerwanie zegarowe magistrali i2c może mieć niski priorytet. pomocą może być zewnętrzny kontroler I2C, 8 bitów danych, kilka sterujących, czyli spora część tego co mamy, ale coś za coś, typu kości nie pamiętam, jakiś PCF, szukał...
Kurcze chyba po raz kolejny wrócę do notepada. Po umieszczeniu includów w plikach .h nie działą nic. Te if nic nie zmieniają. Tablice ładowane są wielokrotnie. W sumie przejście na AVR studio potrzebne jest mi do emulatora, bo upierdliwe jest skakanie między programami. Jedyną opcją jaka teraz daje rozsądną wielkość kodu i dostępność wszystkich zmiennych...
Wielokrotnie wałkowane. W przerwaniu wrzuciłeś transmisje I2C, CLS, obsługę LCD i inne bzdety. Wydłub to i wstaw do pętli głównej programu. W przerwaniu ustaw tylko sobie jakiś bajt/flagę że coś się stało. Teraz obsługa przerwania zajmuje dłużej niż czas pomiędzy przerwaniami. To się musi sypać. Z PCFa możesz też wyciągnąć sygnał zegarowy (skonfiguruj...
skoro stosujesz rs485 ,to po co Ci programowe UART'y ? skoro na szynie rs485 może pracować wiele urządzeń ,w zależności od typu full /hall duplex ,to już kwestja programowa rozróżniania urządzeń po adresacji Poza problemami natury elektrycznej, może być jeszcze problem "spotkania protokołów", czy jak kto woli synchronizacji. W przypadku danych napływajacych...
Odnośnie przerwania. Procedury wykonywane w przerwaniach należy pisać jak najkrutsze aby zajmowały minimalną ilość cykli zegarowych. Dzięki temu można obsługiwać inne przerwania bez obawy że procek się nie wyrobi.
Witam. Zrobiłem sobie prosty układzik który reaguje na sygnał z modelarskiego odbiornika RC i w zależności od długości impulsu zapala diodę lub ją gasi. Układ jest programowany przyciskiem podłączonym między PD2 a masę. Wywołuje przerwanie które zapisuje czas trwania stanu wysokiego. Bez zapisu tego czasu do EEPROM można go wielokrotnie programować...
Jeśli mamy doczynienia z transmisją synchroniczną ( a taką zazwyczaj wykorzystują wszelkie układy scalone typu PLL,DAC itp - czyli szyna danych i szyna zegarowa,czasami jeszcze strobowania) to procedura jest bardzo prosta ,żadnych przerwań,timerów.Generujemy dowolny przebieg zegarowy i tym przebiegiem są synchronizowane wszelkiej maści urzadzenia podrzędne)...
900 ' czuli od lewej skrajnej do prawej skrajnej tak jak w normalnym samochodzie. Mam taką kierownicę logitech'a na USB gdzieś się kurzy w piwnicy. Kiedyś kosztowała prawie 1.5 tyś. A kolega pewnie potrzebuje do symulatora ciężarówki bo do wyścigów raczej się nie nadaje bo kto by tyle kręcił na zakrętach i przy drifcie. Nawet komputer by zwariował :-)...
Witam, A zegar atmegi? Czas potrzebny na wykonanie 32768 przerwań to 1 sekunda co daje czas na jedno przerwanie 30.5 mikrosekundy. Sprawdź w dokumentacji ile at8 zużywa taktów zegarowych na wykonanie jednego przerwania. Należy pamiętać że przy pisaniu w C nie masz kontroli na tym co robi kompilator. Zapisanie rejestrów na stosie przy wejściu w przerwanie...
Hello! Załóżmy że mój procesor (2051) z czytuje dane z przetwornika A/C (ADC 0809) i wysyła je po RSie. RS pracuje na przerwaniu (badana jest flaga Ti) „non stop” wysyłając dane z prędkością 250kb (tak przy okazji: wysłanie jednego bajtu trwa 32us?). I teraz tak, z racji że UART pracuje w trybie 1 (asynchronizcnym, 8 bitów danych, jeden...
Piszesz, że jest to transmisja synchroniczna. Używasz innych przerwań? Jak generujesz sygnał zegarowy - programowo czy za pomocą T/C1? Jaka jest odległość wyświetlacza od uC, bo może jakieś śmieci zakłócają transmisję? Bascom nie nadpisze Tobie zmiennych zadeklarowanych.
Zatem widzę to tak (w skrócie): Najpierw wystawiasz bit MSB na linii danych (szary obszar), potem aktywacja REG_DATA i RxTx oraz włączenie przerwań ze zboczem narastającym. Układ zaczyna generować sygnał zegarowy (zielony obszar). Na linii danych w dalszym ciągu bit MSB. Narastające zbocze generuje przerwanie, układ czyta stan linii danych (niebieski...
Nie wiem skąd wziąłeś 18 Hz, to jest standardowa częstotliwość zegara systemowego, ale przecież nikt nie każe czekać na następne przerwanie zegarowe - wystarczy transmisja z handshake'iem - czeka się wtedy na potwierdzenie odbioru danych przez urządzenie i zaraz wysyła następny bajt. Na linuksie w trybie EPP miałem szybkość ok. 180 KB/s. Oczywiście...
Brak schematu (inicjowanie portów), brak kodu, brak wróżki na forum. Za to jest Kamyczek, co chce przyciski w przerwaniu portu obsługiwać... Kamyczku, sto razy pisaliśmy, że tego NIE należy robić. Wszystko kolego zależy od aplikacji i tego co jest ważniejsze . Twoim zdaniem lepiej skanować porty i zajmować czas mikrokontrolera na bezsensowne sprawdzanie...
v1_9. Str.221 "Swoją drogą w dokumentacji jest informacja, że nie łączy się memory to memory z direct mode. Tryb bezpośredni jest domyślnie włączony, ja go nie wyłączyłem... a i tak jakoś to działa. " RM0090 w opisie rejestru FIFO - Bit 2 DMDIS: Direct mode disable jest napisane: "This bit is set by hardware if the memory-to-memory mode is selected...
Przerwanie masz co 10ms, czas opóźnienia x musi być z tego zakresu (i krótszy tym jaśniej), funkcja waitms da ci tylko 10 poziomów regulacji. Gdzie w programie ustawiasz X ? Poza tym w tym programie bardzo szybko kasujesz Lamp (pętla obiega bardzo krótko) Przerwanie: Waitms x Lamp=1 Waitus=100 Lamp=0 Return choć to też nie jest dobre rozwiązanie....
Podam ci magiczny, kodersko-krakerski sposob. Znam troche bardziej hakerski sposob: Wylaczasz numlocka, wpisujesz echo [ALT-205] [ALT-025] > reset.com (cyfry na numerycznej) i gotowe - mozna jeszcze np. w nortonie skasowac enter z konca. Co do resetu o okreslonej godzinie - tu juz trzebaby napisac program rezydentny (TSR) ktory przejmnie...
T1_HEQU0DCh T1_LEQU000h INIT:MOVSP,#STACK-1 ; zaladowanie wskaznika stosu MEM:MOVR0,#127 MEM1:MOV(at)R0,#0 DJNZR0,MEM1 MOVIE,#0 ; wylacz uklad przerwan MOVIE,#10001010B ; wlacz uklad przerwan i przerwanie T0 i T1 MOVTMOD,#00010001B ; T0 w trybie 1, T1 w trybie 1 MOVTH0,#T0_H ; zaladowanie wartosci MOVTL0,#T0_L ; pocz dla licznika MOVTH1,#T1_H MOVTL1,#T1_L...
assembler przerwania zegarowe sterowanie zegarowe wejścia zegarowe
z18xe wymiana silnika philips niebieskiego koloru pasek rozrząd citroen
Najlepszy router LTE do Ryni – Huawei B535, ZTE MF286D, TP-Link MR600, antena MIMO Gigaset A120 – brak wyświetlania, martwy ekran, diagnoza i naprawa słuchawki DECT