Witam, Niedawno zrobiłem programik, który generuje 3przebiegi przesunięte w fazie. Triggerem dla pierwszego przebiegu jest detektor zera sieci na INT0. Chciałem całą obsługę generowania sygnałów zrobić na przerwaniu Timera. Ale mój ból jak wywołać przerwanie Timera natychmiast po otrzymaniu sygnału na INT0 Wykombinowałem sobie takie o to rzeczy tuż...
Ustawiasz timer0 a oczekujesz przerwania z timera 1 Interesujace.
Jakoś nie mogę sobie tego wyobrazić. Żeby ISR od Timera zakłócał ISR od UARTA musiałby trwać dłużej niż interwał. Podejrzewam, że raczej program główny nie wyrabia się ze skonsumowaniem zawartości bufora UARTa. Tak czy inaczej pokaż program, a co najmniej procedurę obsługi przerwania timera.
Przepraszam za długi czas mojej odpowiedzi. Użycie 1 timera jest oczywiście tylko propozycją, ale w mojej opinii upraszcza program. Tak chodzi o osobne zmienne które inkrementujesz (w mojej propozycji było odliczanie do 0, ale to nie zmienia istoty). Oczywiście musisz też uwzględnić czas wykonywania się procedur przerwania obu Timerów przez co faktyczny...
Tzn, wiesz - sam pwm możesz wygenerować w zasadzie na dowolnym pinie przy użyciu biblioteki SoftPWM czy chociażby generując przerwania od timera i w obsłudze przerwań zmieniać stany danego pinu, ale to nie o to chyba chodzi. Ten sygnał 38kHz musi być chyba odpowiednio zmodulowany, nie? W sensie, on ma nieść jakąś konkretną informację czy tylko "jest/nie...
Czekaj, czekaj. Jeden czujnik odpali przerwanie INT0 a w tym przerwaniu sie uruchomi timer. Drugi czujnik po INT1 ma go wyłączyć. Raczej o tym myślałem. Lepiej tak: czy ktoś by mi dokładnie wytłumaczył jak wywoływać timery, zbierać z nich czas, do czego służą poszczególne rejestry. Noty katalogowej tego procka po polsku nie znalazłem, a dobrego poradnika...
Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń...
Czy RTC (zegar czasu rzeczywistego) używający Timera 2 w trybie asunchronicznym , działa nawet wtedy gdy wyłączone sa przerwania globalne ? ... kwarc, preskaler oraz Timer2 nie potrzebuje przerwań ale to nie wystarcza do zrobienia całego RTC to wystarcza do zrobienia przerwania co 1 sekundę a reszta zegara musisz zrobić programowo i to właśnie na przerwaniu...
Nie podoba mi się twoje rozwiązanie. Ja bym to zrobił tak - timer odmierzający takty w rytm podstawowego okresu PWM (czyli przerwania np. 1kHz). Teraz zamiast tych porównań z licznikami, wrzuć wartość licznika do rejestru compare register. Dzięki temu masz przerwanie po przepełnieniu timera (nowy okres) - w tym przerwaniu inicjujesz wysyłkę danych po...
\ 1. Rozumiem, że ustawienie odpowiedniej częstotliwości da mi czas, który jest mi potrzebny? Tak, program z tego postu demonstruje rejestry i bity których odpowiednie ustawienie spowoduje daną częstotliwość przerwać timerów, a w konsekwencji odpowiednią częstotliwość wysyłania tekstu / migania diodą, jednak obecny ustawiony czas jest przykładowy, nawet...
Z tego co napisałeś to problem jest banalny, tylko chyba źle się za to zabrałeś. Nie bardzo rozumiem to: ...wyświetla je na diodach bit po bicie. Czy mam to rozumieć tak, że diod jest 8 i każda odpowiada jednemu bitowi bajtu? Czy jak już bit został ustawiony na porcie, to ma tam pozostać do zakończenia wyświetlenia całego bajtu? Czy przez te 50ms pomiędzy...
Jako ze nie przepadam za pisaniem na maile, to odpowiem tutaj... Musisz skonfigurowac odpowiedni timer i przy przerwaniu, jakie generuje int czas=0; int timer0=131; SIGNAL (SIG_OVERFLOW0) { czas++; if (czas==5000) BUUM(); //jezeli czas osiagnal 5000ms, to wywolaj funkcje BUUM(); TCNT0 = timer0; // zaladowanie do...
Zaleca sie uzywanie ISR() zamiast SIGNAL(). Makro SIGNAL() będzie w przyszłości usunięte, ISR() robi dokładnie to samo. W zasadzie jako argumentów tych makr powinno się używać SIG_OVERFLOW2 zamiast TIMER2_OVF_vect, ale to akurat nie powinno być przyczyną niedziałania, bo obie te konstrukcje znaczą dokładnie to samo. TIMSK =((1<<TOIE2));...
http://obrazki.elektroda.pl/9079980500_1... Na wstępie chciałbym przybliżyć, skąd taka a nie inna nazwa nadana przeze mnie temu projektowi. Prace rozpoczęły się w momencie zapotrzebowania na minimum dwa zsynchronizowane generatory małej częstotliwości. Ponieważ zakres przestrajania jaki mnie zadowalał ograniczał się do 100Hz przy rozdzielczości...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
Witam. Chcę przedstawić szopkę Bożonarodzeniową. http://obrazki.elektroda.pl/9749389200_1... Całość wykonana własnoręcznie z pomocą kochanej żonki. Opiszę co i jak. Szopka ma ruchomy żłobek, dwie pochodnie i ognisko, na filmikach wszystko widać. Opiszę konstrukcję, do sterowania wszystkim użyłem Atmegi8. Trzy sprzętowe kanały PWM posłużyły...
Dobry wieczór, mam luźne pytanie do kolegów fachowców. Programuje mikrokontrolery od 4 lat. Hobbystycznie. Problem jaki mam jest dość osobliwy. Padają mi ATMegi co jakiś czas. Na oknie leży mi ok. 5ciu padniętych ATMeg o łącznej wartości ponad 100zł. I taką mam nadzieję, że może ktoś doradzi, jeśli nie co do ich odratowania (ależ bym się ucieszył) to...
Ogólnie widziałem że używasz real-time do domierzania opźnień. nie, do opóźnień jest przerwanie timera 1 co 50ms. KEYBOARD_KEY_TIMEOV z przerwania obsługi klawiatury, jak po 15 sekundach nic nie naciśnięto, wystawiany jest kod klawisza : KEYBOARD_KEY_TIMEOV. natomiast propozycja milis() niestety nie przyniesie oczekiwanego rezultatu. najlepiej jest...
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,...
Witam! Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry: TCCR1A |= (1<<WGM12); //tryb ctc , timer1 TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 / OCR1A = 7813; // 8MHz/1024 TIMSK |= (1<<OCIE1A);...
Ślepy zaułek. Obejrzyj kod, który podlinkowałem - dwie linie kodu w przerwaniu timera załatwiają sprawę.
Witam Zacząłem sprawdzać przerwanie TIMER1 w trybie przepełnienia. Na symulatorze program normalnie działa jednak w rzeczywistości inaczej. .include "m8def.inc" .equ przyciski = portc .equ in_przyciski = ddrc .equ wyjscie1 = portb .equ out_wyjscie1 = ddrb .equ wyjscie2 = portd .equ out_wyjscie2 = ddrd .equ wys0 = portd0 .equ wys1 = portd1...
Witam, Napisałem program do odpytywania stanu klawiszy na Atmega16, kwarc-16MHz. Według wyliczeń przerwanie powinno sie pojawiać co 2,5ms, jednak tak nie jest, jest o wiele wolniej (ponad 1s). Analizowałem program i sam juz nie wiem co może być źle. Pomóżcie Preskaler clk/1024=16000000/1024=15625 1/15624=0,064ms 40*0,064ms=2,5ms #include <avr/io.h>...
Witam, W programie przedstawionym poniżej nie zostaje wywołana obsługa przerwania. Próbowałem na innych timerach tez bez skutku. AvrStudio 6, Atmega8a, optymalizacja O2. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include "utils.h" #include "display.h" int main(void) { LEDInit( ); Display(0); //Init Timer 0 TCNT0 = 6; TCCR0...
Witam, mam problem z ustawieniem przerwania od timera0 na atmega8, jestem początkujący jeśli chodzi o assembler... Problem leży w tym że, uP jest taktowany z wewnętrznego zegara 1MHz, i jeśli mam ustawiony prescaler na 8 czyli rejestr TCCR0 na 2 to powinienem otrzymać obsługę przerwania co 8us a na oscyloskopie otrzymałem igiełkę co 2ms;/ nie wiem co...
Przekopałem już niejedno forum i na każdym z nich robią to na inną modłe... Ale co bym nie tworzył to i tak nie działa... Uprościłem program do min i nic... Prosze niech ktoś mnie oświeci co jest nie tak... Aha do portu PB1 podłączona dioda żeby było wiadomo, że coś się dzieje... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h>...
Cześć, mam napisać "prosty" program dla ATmegi2560. Po wciśnięciu przycisku na porcie A, ma on zapalić odpowiadającą mu diodę na porcie B. Dioda ma się świecić 1 sekundę a potem ma zgasnąć. Za podtrzymanie świecenia mają odpowiadać przerwania timera1, a program ma się zaczynać od ustawienia flagi przerwania int0. Int0 działa, po wciśnięciu przycisku...
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);...
Witam Problem jest nastepujacy uzywam timer0 do multiplexowania. co 4ms wywoluje mi sie przerwanie od przepelnienia timera wyswietlajac cyfre na kolejnym wyswietlaczu. Dane do wyswietlenia sa globalne. w petli while co pewien czas(0,5 s ) wywoluje funkcje ktora zczytuje dane z czujnika ds1820 po 1wire. Na wyswietlaczu LED pojawia sie co jakis czas 'zaklocenia'....
"Nowe" czyli od Xmega i nowsze AVR mają mozliwość priorytetu przerwania. Poprzednie miały ustalony. Nie wiem jaki to AVR, ale jeśli ustawisz Timer i przerwanie od niego to jak będzie w przerwaniu to oczywiście zauważy potem flagę przerwania z USART, ale może być za późno, dlatego jeśli nie trzeba, to się przerwań od wszystkiego nie uruchamia. Rzadko...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
Witam wszystkich kolegów Mam prawdopodobnie dość trywialny problem. Chce zliczać impulsy na jednym z pinów uC (częstotliwość 100-200kHz) w czasie kiedy na innym pinie uC jest stan wysoki. Mój pomysł wygląda tak: Ustawiam timer w 16 bitowy tryb prosty Przerwanie wyzwalane zboczem narastającym zeruje 0 16 bitowy timer Przerwaniem zboczem opadającym przepisuje...
Witam.... Dostałem polecenie napisania programu, który po wciśnięciu SWITCH'A zapala diodę LED na dokładnie 4 sekundy. Następnie dioda ma zgasnąć, a my w obojętnie którym momencie możemy znów ją załączyć na ten czas. ATmega8 tyka wg. zegara zewnętrznego 14,7456 MHz Napisałem kod... (duża liczba komentarzy pomoże zrozumieć), ale są 2 problemy: 1) Czas...
Coś nie bardzo wychodzi mi wywołanie przerwania INT0 po przepełnieniu Timera0. Poniżej kod (usunąłem zbędną funkcję wyświetlającą, która działa poprawnie). Program powinien: - po restarcie wyświetlić korpkę (robi to poprawnie) - po każdym przerwaniu wyświetlać kursor (i to nie działa bo nie ma przerwania). Nie istotne jest że każde przerwanie ponownie...
Cześć Mam program, ktory w czasie 3 sekund (liczone przez Timer1) powinien liczyc impulsy podawane na licznik Timer0 i odpowiednio do tego tyle razy zaswiecic diode. $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_3s Dim Licz As...
Od kilku dni męczę się z ustawieniem timera (działającego równolegle z programem) na moim uC atmega8535. Jestem początkującym elektronikiem. Przeszukałem już naprawdę wiele tematów, pisałem do wujka google na wszystkie możliwe sposoby jakie tylko wymyśliłem. Nadal problemowo. Otóż po przeszperaniu internetu dokopałem się do następującego kodu: [syntax=c]...
Pod koniec obsługi przerwania timera startuj ADC, a wynik odbieraj na początku procedury obsługi przerwania timera, czyli w następnym przerwaniu. No i przypadkiem nie używaj równocześnie przerwania timera i ADC - pożytku żadnego, a kłopoty mogą być.
Witam, Mam problem z obsluga przerwan od przepelnienia licznikow. W projekcie wykorzystuje 3 liczniki w atmega8, timer2 wykorzystuje do generacji sygnalu 40kHz natomiast pozostale dwa maja zliczac czas od nadania sygnalu do otrzymania echa. Narazie napisalem osobną obsluge kazdego z timerow i dzialalo. Po wrzuceniu wszystkiego do jednego projektu dziala...
Witam Mam problem Wszystko działało na portach PA PC i PD4-7 ale jak podpiąłem cały PD PB do drugiej części matrycy diodowej to przestało działać chyba przez przerwania. Zmieniłem rodzaj przerwania na czasomierz z uwagi ze chyba piny INT0 zmieniały stany. Wszystkie porty mam jako wyjścia a w części matrycy mam błędy zawsze w tym samym miejscu. Jaki...
tadzik85 dziękuję za błyskawiczna odpowiedź. Próbowałem tego rozwiązania i niestety gdy w przerwaniu od SPI umieszczę flagę i bez względu gdzie realizuję odbiór czy w przerwaniu od timera czy w pętli głównej drugi bajt wraca do mastera czyli wydaje mi się, że ATmega nie nadąża z odczytem.
Fusebity nie ruszane. Atmega taktowana wewnętrznym oscylatorem. I ponoć do tego zastosowania, do którego ja używam zewnętrznego oscylatora, fusebitów ruszać nie trzeba.
Chwila. Timer bez preskalera, częstotliwość procesora nieznana, załóżmy, że 1 MHz (nieistotne). Timer zgłasza przerwanie co 21 cykli zegara, czyli ATmega zajmuje się na okrągło obsługą przerwań timera, nie mając szans obsłużyć żadnych przerwań o niższym priorytecie (ADC). Tak, timer był ustawiony na 1 MHz (było to wpisane w komentarzu prescalera dla...
Witam, nie znam Bascom i dość słabo Atmega. Podejrzewam jednak, że problemem jest realizowane w przerwaniu ładowanie timera nową wartością. Przyjęcie przerwania wymaga jakiegoś czasu, a timer cały czas "cyka". Kiedy ładujesz go obliczoną wartością (250) zdążył już coś naliczyć, w związku z tym Twój zegar się późni. W efekcie dobierasz eksperymentalnie...
ATmega (ani prawie żaden inny uC) nie obsłuży przerwania generowanego z częstotliwością 1 MHz. Użyj jednego timera tyko do generowania przebiegu, a innego do zgłaszania przerwań, w ktśrych masz robić to, co robisz raz na jakiś czas.
Wektorów przerwań szuka sie nie tyle w dokumentacji winavr co w dokumentacji kontrolera, który się programuje. Nazwa wektora to nazwa przerwania ze spacjami zastąpionymi podkreślnikiem i dodanym przyrostkiem _vect np przerwanie od przepełnienia timera 1 w atmega 32: w dokumetnacji sekcja Interrupts (str. 42) 10 $012 TIMER1 OVF Timer/Counter1 Overflow...
Używam Timera1 z Atmega164P w trybie CTC, Atmega ma kwarc 16MHz, interesujący kawałek programu wygląda tak: Konfiguracja Timera: void Timer1_Init(void) { DDRD |= (1<<PD7); // PD7 wyjście PORTD |= (1<<PD7); // PD7 <= 1 TCCR1B = (1<<WGM12)|(1<<C...
Ile bitów wystawia atmega na adc? Czy potencjometrem chcesz ustawiać ilość kroków do wykonania? Jest to możliwe, kiedyś pisałem sterowanie ofsetem(Planeta 6 głowic po 32 silniki na głowicy), z potencjometru brałem od 0 do 1024 i wysyłałem odpowiednią ilość impulsów. Tak ja radzili - sterowanie timerem. Ja zrobiłem tak, że impulsy do drivera wysyłam...
Popatrz tu: http://mikrokontrolery.blogspot.com/... -ostatni przykład. No i oczywiście nie używaj przerwań od przycisków, a przerwania timera - tak, jak w tym przykładzie.
Ad1. Proponuje użyć funkcji locate y, x. Jeśli nie pomaga to za pomocą timera i przerwania wyczyść co jakiś czas lcd.
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Wielkie dzięki za tak szybką odpowiedź. Czy mógł bym spytać co rozumiesz przez skopane sparsowanie? Jeśli chodzi o return 0 w funkcji uart_getc() - to w książce, z której korzystałem autor z tego skorzystał, tłumacząc, że 0 przy łańcuchach tekstowych oznacza koniec tekstu. Czy w takim razie lepiej było by zrobić np. coś takiego? [syntax=c] char uart_getc(void)...
Sprawa jest następująca, zaprojektowałem na ATMega mały system który używa kliku przerwań sprzętowych a mianowice INT0,INT1, oraz przerwania timera Timer0,Timer1. Dodatkowo program (w C) obsługuje przetworniki ADC oraz DAC podłączone pod magistralę SPI. Generalnie wszystko działa OK ale czasem pojawiają się nieprawidłowe wartości napięć na wyjściu przetworników...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Kurdę no przerwanie jest wywoływane co 310us a to jest bardzoooo wiele cykli zegara na to by mogła się wykonać cała pętla while, cały czas nie rozumiem czemu na atmega 16 działa a na atmega128 nie chce działać :/ sprawdzałem bity ustawiające timer i przerwanie, są one takie same dla mega 16 i 128 więc nie wiem w czym jest problem :( Ten program działa...
Pewnie trza wyłączyć bit M103C w fuse. zapis: [syntax=basic4gl]Load Timer0 = 250[/syntax] jest błędny. prawidłowo: [syntax=basic4gl]Load Timer0 , 250[/syntax] Poza tym przy tych ustawieniach timera w stosunku do prędkości kwarcu nie uzyskasz przerwania co 8ms.
Witam Mam pytanie dotyczace ustawienia Timera 16bitowego w atmega 128. Kwarc 8Mhz. Chce odmierzyc 1ms. Czy moj sposob postepowania jest sluszny? (1/8Mhz)*40000=5ms wiec ustawiam (timer1) TCCR1B=(0<<CS12 | 0<<CS11 | 1<<CS10); (no prescaling) oraz TCNT1H=0x63; TCNT1L=0xBF; Moim celem jest odczytywanie ADC co 5 ms i chce zebrac 2000 pomiarow,...
Sprawę komplikuje fakt, że stan licznika powinien pozostać, aż do jego zmiany spowodowanej nową paczką impulsów. A dlaczego komplikuje? jeden dodatkowy warunek - jezeli czas od ostaniego impulsu wiekszy od załozoniego i impuls to zerujesz licznik Czy to jest do zrobienia bez wykorzystywania przerwań, timerów, wyzwalania zboczem, o których trochę czytałem,...
wlasnie chodzi o to, ze w przerwaniu ustawiam tylko flage. I nie wiem co mu pochlania tyle czasu. W sumie po wujsciu z przerwania w głownej petli jest jescze warunek if , wlaczenie timera i odczyt rejestru, ale to chyba nie pochlania 50 instrukcji
tak jak napisał gaskoin , do tego się właśnie sprowadza programowy PWM i to jest właśnie odpowiedź na twoje pytanie a ty piszesz, że nie dostałeś odpowiedzi. Przy czym programowy PWM jeszcze raz podkreślę nie ma nic wspólnego ze sprzętowym więc daruj sobie wtedy rozważania o nodze OCn. Ty możesz zrobić te zmiany stanu na dowolnej nodze jak pisałem....
Wykorzystaj zewnętrze przerwanie a programie przerwania odpal timer potem następne przerwanie i timer stop i wynik timera do zmiennej. i tak w koło. Fototranzytor np możesz wykorzystać w momencie zaniku/przerwanie wiązki światła tranzystor przestaje przewodzić a przy pomocy rezystora podajesz w tedy logiczne zero na wejscie przerwania.
Witam. Przeczytałem cały temat od początku do końca i nie znalazłem dużo informacji na temat PIC. Kilka osób (m.in. McRancor) pisało że woli PIC od AVR. A ja mam pytanie czemu?? Weźmy np popularnego ATmega8 i PIC16F84a. Porównując te dwa procki, PIC (wg mnie) wypada słabo. Po pierwsze cena, brana z jednego sklepu: ATmega 5zł, PIC 9zł. Po drugie ten...
Witam! Jestem osobą początkującą i chciałabym prosic o pomoc przy zmianie fragmetu kodu, ponieważ nie bardzo wiem gdzie tego szukać w datasheet. Obecnie mam coś takiego: [syntax=c] void Init_Timer() // Inicjalizacja przerwania Timera (co pół sekundy dla 8MHz wewnętrznego) { TCCR1B |= (1<<WGM12)|(1<<CS11)|(1<&... // set prescaler...
Auto napisał: satanistik napisał: Program w przerwaniu od timera mierzy wartość z ADC Rozwiązanie dość kiepskie. Wchodzi w przerwanie, wyzwala pomiar, czeka na wynik W PRZERWANIU!, Nie twierdze że to jest rewelacja, ale samo w sobie nie powinno prowadzić do błędu w stylu "brak kolejnych pomiarów ADC". Co najwyżej do błędów czasowych i tylko wtedy kiedy...
Wykonalne i niespacjalnie wymagajce ;) Ja bym do tego wykorzsytal timer1, poczytaj w datasheecie tam o timerach i sprzetowych pwmach. Wykorzystujac dwa kanaly jednego timera mozesz ustawic przesuniecie w fazie, tylko jak przesuniecie bedziesz mial polowe okresu to wypelnienie bedzie moglo byc maks 50%. Ale to tak na szybko co mi do glowy przychodzi....
Potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością ok. 300 * liczba_poziomow_jasnosci Hz. Poszukaj u Atmela noty aplikacyjnej nt. programowego PWM - jest to tam b. dobrze wyjaśnione. Po angielsku niestety noty są objaśnione ale nie w prosty sposób tylko zawile Niestety mało jest stron gdzie objaśniono sposób używania PWM w procesorze...
Na wspólne anody podajesz dodatni biegun przez tranzystory PMOS, którymi sterujesz z portu lub z dekodera, np. HC138 albo 154. Prąd drivera LED jest specyfikowany na kanał. Do wspólnych anod tego drivera nie użyjesz - on ma źródła prądowe do sterowania katod, o ile dobrze pamiętam. Prąd anod nie może być stabilizowany, bo będzie zależał od tego, ile...
Pomysł wydaje się być dobry, ale nie do końca. Teraz reakcja na kręcenie potencjometrem jest widoczna na oscyloskopie w postaci zmiany częstotliwości, także podczas przytrzymywania przycisku, ale obecnie nie da się sterować klawiszami. Tzn, teoretycznie się da, ale czas reakcji od naciśnięcia przycisku sw na wykonanie instrukcji wewnątrz pętli trwa...
Witam !! Napisałem program na sterowanie pilotem. Nie działa mi set Led_2. Przycisk 2 z pilota wykonuje warunek ale nie setuje portb.2 ? Co jest [syntax=c] $regfile = "m8def.dat" 'rejestry mikrokontrolera atmega8 $crystal = 8000000 'częstotliwość taktowania mikrokontrolera $baud = 9600 Config Portb = &B11111111 : Portb = &B00000000 'cały portB jako...
obsługa przerwania timera stm32 przerwania timera arduino obsługa przerwania timera
ładowania akumulatorów żelowych agent odzyskiwania prototypowy płytka
Toyota Verso – moment dokręcania koła zamachowego 1ZR-FAE, 2ZR-FAE, 1AD-FTV, 2AD-FTV, 1CD-FTV Samsung DA41-0002A – identyfikacja płyty sterującej, zamienniki, typowe usterki lodówek