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...
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...
Ad 1. LD(IX+01),#23 - rozkaz 4-bajtowy: - 1 bajt - wartość DD (prefiks mówiący o tym że rozkaz dotyczy rejestru IX), - 2 bajt - wartość 36 (rodzaj operacji), - 3 bajt - wartość 01 (przesunięcie względem wartości z rejestru IX), - 4 bajt - wartość 23 (ta wartość będzie zapisana w komórce pamięci o adresie (IX+01). Rozkaz wykonywany jest w czasie 5 cykli...
W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący liczbę milisekund. W programie należy korzystać...
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Kolega niech raczy zauważyć że kontraktron ma coś takiego jak drżenie styków. Może być tak że przerwanie jedno twoje załaczenie potraktuje jak wiele zboczy je wzywalających i cały pomiar weźmie w łeb bo się wykona po prostu wielokrotnie. Musisz użyć więc kolejnego sprawdzania stanu styku juz po wykonaniu przerwania tak aby się upewnić ze jest to "trzymanie"...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
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...
Jak przykładam sondę oscyloskopu do linii adresowych, szczególnie A0 i A1, to jest stała wartość 5V zarówno przy procesorze Z80, jak w pamięci ROM osadzonej w U9. Jak wyjmę pamięć zupełnie, to jest tak samo, bo wtedy procesor wykonuje przypadkowe rozkazy, czyli na liniach A0 i A1 nie ma żadnych zmian. Prawdopodobnie masz procesor, który albo nie ma...
Pod jakim systemem operacyjnym. W DOS'ie w prosty sposób możesz oprogramować przerwania zegarowe (poszukaj informacji o przerwaniach 0x1c, 0x1a, 0x4a)
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...
Płytkę już polutowałem, silnik zamontowałem tymczasowo w podstawce zrobionej z pudełka na płyty cd a góra służy jako ochrona. Wszystko ładnie się już kręci :). Napisałem też szkielet programu w Bascomie (świetny trening bo dopiero zaczynam) i właściwie działa ale algorytm jest trochę do bani. Bo timer1 (16bit) zlicza cykle zegarowe od przerwania INT0...
Witam w programatorze z możliwością ustawienia sie załączenia o okreslonej godzinie i dniu zegar wskazujący aktualną godzine dokładnie cyferki sekundy godziny i minuty stają w miejscu i nie chcą odliczać dalej co jest tego przyczyną nie wiem pomocy
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...
Mam pytanie odnosnie przerwan zegara czasu rzeczywistego 6818. Kiedy generuje on przerwania?? Wiem ze ma 3 przerwania: od alarmu, od przepisywania i periodyczne. Tylko wiem kiedy wystepuje pierwsze. Co do pozostalych to nie mam pojecia. Jest jeszcze jedno pytanie: czy 6818 zawsze poprawnie mierzy czas?? Kiedy nie??
Czy Ktoś robił zegar z EdW 5/2001. Program na ich stronie. Pytam dlatego że ja się pokusiłem i zrobiłem to. Wszystko jest ładnie dopóki się nie zacznie ustawiać tego zegara. Po wejściu do trybu pracy zegar "wisi" a na wyświetlaczu pokazuje 12:00:00 i dopiero reset przywraca pracę lecz po próbie ustawienia znów się zawiesza. Proszę o swoje uwagi na ten...
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ń...
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 -...
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...
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...
Fakt, temat dziwaczny. Przykład - zliczanie zbocz w przerwaniu. Kod obsługi przerwania wygenerowany w C vs najprostsza obsługa asemblerowa. Policzyć cykle zegarowe w jednymi drugim przypadku i przeliczyć na dopuszczalną częstotliwość zmian na linii wejściowej przerwania.
Większość powyższych porad jest kompletnie błędna. Przede wszystkim, jak już zauważyłeś, podejrzenie, że problem wynika z jednoczesnego złoszenia dwóch przerwań można między bajki włożyć. Każde przerwanie ma swoją flagę i przy jednoczesnym zgłoszeniu dwóch przerwań, jedno (o wyższym priorytecie) jest obsługiwane, a obsługa drugiego jest odwlekana do...
Błędy są wszędzie. Pierwszy - to użycie przerwania zmiany portu zamiast sprawdzania stanu przycisków w przerwaniu timera. Drugi - to użycie delay w przerwaniu. Trzeci - to źle napisane if else w przerwaniu timera. Czwarty - użycie własnego bool zamiast standardowego _Bool. To tak na początek.
pracował synchronicznie z zegarem komputera Funkcje zegarowe (w zasadzie nie tylko zegarowe) powinno realizować się niezależnie od reszty kodu. Niezależne są peryferia, w tym liczniki. A wygodną formą ich obsługi są przerwania które one generują. Ja w arduino nie pisze, ale w zasadzie z tego co się orientuje funkcja millis() działa na przerwaniach....
Nie jestem specjalistą od Bascomu i tych mikrokontrolerów, ale podpowiem taki test: być może Twoja procedura przerwania nie mieści się w 1ms czasu procesora i po prostu gubisz kolejne przerwania. Aby to sprawdzić ustaw przerwania na np. 10 lub więcej ms., zmodyfikuj odpowiednio obliczenia i sprawdź czas mrugania. Jeśli będzie ok. to masz ewidentny dowód...
Zamawiam Nucleo z analogicznym prockiem, zobaczymy:) Zamów sobie F091RC - 32kB RAMU i 256kB FLASHu. W dokumentacji masz przykłady jak uruchomić dane peryferium. Snipety na stronie ST też są do tej serii. Drzewo zegarowe jest łatwiejsze do ogarnięcia w F0. Nie rozumiem, dlaczego ludzie wciąż kupują cos z serii F1xx, gdy chcą zacząć z STM32. Moim zdaniem...
Nie wiem czy obie zmienne są zaniżane bo nie mam możliwości zadania układowi dokładnej ilości impulsów, natomiast zawsze impulsy zliczone na przerwaniu INT0 są zaniżone w stosunku do tych zliczanych na przerwaniu INT1. Owszem, masz taką możliwość - skorzystaj z symulatora dostępnego w Atmel Studio i wygeneruj mu potrzebny plik stymulacji, dzięki czemu...
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.
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)
skoro pin wisi w powietrzu to rozumiem ze przerwanie nie jest wykorzystywane....wiec moze je wylacz :), a po drugie to to jest wejscie przerwania a nie wyjscie wydaje mi sie ze powodem wlanczania przerwania jest to, ze wejscia cmos sa bardzo czule na rozne rzeczy (np palce :), fale elktromagnetyczne), kiedys pamietam robilem cos na liczniku cmos i jedno...
Dziekuje, ale nie o to mi chodziło. Być może bezwładnośc wału serwa jest duża, ale elektronika serwa może przyjąć zakłucenie i przynajmniej po pewnym czasie zmienic jego ustawienie. Ale i nie o to mi chodziło :P Chodziło mi o to że jak procek akurat przejdzie do wysyłania impulsu do serwa a wtedy właśnie wystąpi przerwanie, to obsługa tego przerwania...
Na stole wszystko było OK, ale po zamontowaniu na samochodach zaczynały się cyrki. Modemy się po prostu nagminnie zawieszały! Woziliśmy się z tym problemem przez długi czas; trwał ping-pong z operatorami sieci. W końcu daliśmy za wygraną i zastosowaliśmy reset raz na dobę. Problemy z łącznością poprzez GSM prawie zniknęły. Hmm... A może winne temu...
W standardowej konfiguracji avr-gcc skok do przerwania zajmuje 4+2 cykle, ew. więcej gdy przerwanie nadchodzi "w środku" instrukcji trwającej więcej niż 1 cykl. Powrót z przerwania to 4 cykle. To prawda, możesz w pętli testować bit INT0 w rejestrze GIFR, daje to test co 3 cykle zegarowe (sbis + rjmp). Ale równie dobrze możesz testować stan na pinie...
Pozwolę sobie odświeżyć temat dopiero teraz gdyż wcześniej nie miałem czasu:( Oprócz przerwania od przechwycenia licznika dodałem jeszcze przerwanie od przepełnienia: Do funkcji licznik dodałem: TIMSK |= (1<<TOIE1); oraz procedura obsługi przerwania: cykl1 i cykl2 ktore sa przekazane do powyższej funkcji jako argument Oto całość: cykl przekazując...
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...
Przerwania w '51 są proste jak budowa cepa, poza tym przerwanie nie oznacza zajęcia timer'a. możesz również wykorzystać jedno z dwóch przerwań sprzętowych (zdaje się opadające zbocze na pinie 6 {int0/ P3.2 lub na pinie 7 {int1/ P3.3}). Do obsługi przerwania potrzebujesz koniecznie: -ustawić bit EA (czyli komenda SETB EA) - zezwolenie ogólne ne przerwanie...
Poprawiłem. Ale nic się nie zmieniło. Poza tym program jest poprawny? Moje wyliczenia w komentarzach też? Dodano po 28 Jezeli do warunku zapodam if((licznik_end - licznik_start)>0 ) to wszystko dziala. Prawdopodobnie przy przeliczaniu na dystans przy dzieleniu przez 1000 * 1000 * 58 uzyskuje tak ogromna liczbe w mianowniku że dystans w wyniku obcięcia...
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....
Też się zastanawiałem nad użyciem GPS ale te z którymi miałem doczynienia transferowały czas w określonych przerwach czasowych i jakoś do tego nie mam zaufania jeżeli chodzi o dokładność. Do tego wymuszenie pracy na zewnątrz jest trochę dla mnie kłopotliwe. Na ten moment udało mi się uzyskać za pomocą dwóch STM ów odchylenie pracy RTC w przeciągu godziny...
A można tak zrobić że sygnał z impulsami podawać na wejście zegarowe Timera i taktować go tymi impulsami? Chce tak zastosować, gdyż musze mieć w swoim układzie trzy takie pomiary prędkości obrotowej, a w ATmega128 dostępne są dwa wejścia zliczające impulsy zewnętrzne. Nie chce korzystać z nóżki zewnętrznego przerwania żeby nie obciążać strasznie procesora.
LCD multipleksowo? nie bardzo rozumiem ponieważ multipleksowo sterowana jest sama matryca a za to odpowiada sterownik wyswietlacza(take czarne coś na płytce wyświetacza:)) a co do przepełniania licznika to możesz sobie policzyć częstotliwość występowania przerwania ze wzoru: częstotliwość= crystal/prescaler/x gdzie crystal to częstotliwość oscylatora,...
Ja rozumię jak działa watchdog. Hmm. Konstruktorzy wychodząc naprzeciw najnowszym trendom w konstruowaniu mikrokontrolerów, wbudowali do procesorów AVR układ Watchdog. Jest to specjalny licznik, zliczający impulsy zegarowe 1MHz. Gdy nastąpi przepełnienie tego licznika, generowany jest sygnał RESET by wyzerować procesor. Do programisty zatem należy...
w bascomie jak się nie przesadzi z czasem obsługi przerwania to przy config timer1=timer,prescale=1024 on timer1 inter dim licz_inter as byte enable interrupts enable timer1 timer1=736 'co 6 sekund(można coś dodac) do if licz_inter=10 then licz_inter=0 cośt am coś tam end if loop end inter: timer1=736 incr licz_inter return ale ja byłbym za zewnętrznym...
Eh dużo pytań a na wszystkie sa odpowiedzi w datasheecie... ale mam dobry nastrój to wyjaśnię po kolei: VCC - napięcię stałe, dobrzy wystabilizowane z zakresu 1,9-3,6V (typowo 3,3V) PWR_UP, TRX_CE, TX_EN - ustawiasz nimi tryby pracy UPCLK - wyjście zegarowe za preskalerem; przy kwarcu 16MHz maksymalna częstotliwość do ustawienia to 4MHz (może służyć...
Witam wszystkich. Mam problem odnośnie synchronizacji dwóch atmega8 za pomocą jednej linii. Mam do wykorzystania jeden przewód, którymi płyną dane w obu kierunkach (po 3 bajty). Nie ma możliwości dodania kolejnego z sygnałem zegarowym. Tak więc sygnały zegarowe muszą być generowane przez oba mikroprocesory oddzielnie za pomocą timer'ów. I wszystko byłoby...
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, potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Górna częstotliwość wynosi 150kHz, dolna 10kHz. W programie wykorzystuję dwa kanały adc (tj. adc1, adc2) oraz jedno wyjście dla wspomnianej fali (tj. PC5). Atmega8 pracuje z zewnętrznym kwarcem 16MHz. Górna częstotliwość wymaga 106 cykli zegarowych, dolna natomiast...
Łopatologicznie: 1. zgłasza się przerwanie ze zbocza opadającego. wywołana jest procedura jego obsługi. jesteśmy teraz w niej. 2. włączasz licznik by zliczał impulsy zegarowe przez prescaler. 3. czekasz tak długo aź stan na INT0 się zmieni na przeciwny - koniec impulsu. 4. zatrzymujesz licznik. odczytujesz zawartosc licznika i zapamiętujesz w zmiennej....
To zrobiłem tak jak mówisz: [syntax=c] void USART1_IRQHandler(void) { /* Sprawdzamy czy jest cos w buforze RX */ if (USART_GetITStatus(USART1, USART_IT_RXNE)) { byte = USART_ReceiveData(USART1); //przypisanie wartoci z RX //sprawdzenie czy wystąpił pierwszy bajt tj. adres slave if (byte == ramka[0]) { bitstart = 1; bitstop = 0; licznik = 0; } //inkrementowanie...
Witam serdecznie forumowiczów! Od pewnego czasu dysponuje zestawem uruchomieniowym ZL2MCS51 z mikrokontrolerem AT89C51RD2. Muszę zrobić transmisje za pomocą interfejsu SPI. Mikrokontroler jedynie odbiera dane od przetwornika AC (ADS7886). Ale wydaje mi się, że nie wiem jak fizycznie działa interfejs SPI na mikro... Na przetworniku to prosta sprawa....
Witam Od niedawna bawię się uC STM32 i krok po kroku próbuję nauczyć się ich obsługi. Słowem wstępu: Mam płytkę ZL31ARM, pewne doświadczenie z programowaniem w C/C++ i zupełny brak doświadczenia z mikrokontrolerami. Mam już za sobą mruganie diodami i proste pętle opóźniające; obecnie chcę nauczyć się obsługi przerwać przy wykorzystaniu EXTI i IO. Korzystam...
Witam panowie. Zagadka jest taka. Jest sobie arduino uno, ale programuję je bez bootloadera, bezpośrednio w c w avr studio wersja 4. W pewnym momencie w programie startuję timer 2 w trybie CTC i używam go jako wyjście zegarowe dla bufora. Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7, co daje ze wzoru przy częstotliwości uC 16Mhz,...
[syntax=basic4gl] Dim Przerwa As Byte 'licznik czasu przerwy Dim Pomoc1 As Byte , Pomoc2 As Byte , Wysw As Byte 'zmienne pomocnicze Dim Random As Byte 'zmienna do uzyskania przypadkowości Dim Zliczaj As Bit '1 - zezwolenie zliczania czasu Dim Setne As Byte 'licznik setnych części sekundy Dim Dzies As Byte 'licznik dziesiątych części sekundy Dim Wygasz...
assembler przerwania zegarowe sterowanie zegarowe wejścia zegarowe
astra wtryskiwacze padło turbina moduł honda
Różnica ciśnień mierzona przez presostat w piecu z zamkniętą komorą spalania Kontrolka „drzwi otwarte” w pralkach Whirlpool, Indesit, Amica, LG – diagnostyka i naprawa