Wszystkie Timery układu Mega32 mogą generować sygnały PWM: Timer0 - jeden kanał: OC0 - PB.3 Timer1 - dwa kanały: OC1A, OC1B - PD.5, PD.4 Timer2 - jeden kanał OC2 - PD.7 Na wejściach T0 i T1 liczniki nie generują sygnałów PWM. Co do samej konfiguracji to problem jest prawie żaden. W przypadku Timer1 sprawa jest prosta, gdyż CONFIG TIMER1 posiada wszelkie...
Phase and Frequency Correct PWM - to najbardziej skomplikowany PWM w prostych AVR. Możesz go oczywiście zastosować do sterowania silnikami. Proponuję jednak, byś zaczął od prostego trybu Fast PWM. http://4.bp.blogspot.com/-FA3d0PZczMg/Ta... Przeczytaj o nim w Timer1 i zadaj konkretne pytania czego...
To nie ma znaczenia, i tak zostanie skonwertowane do całkowitego 23. Ale w sumie faktycznie śmiesznie wygląda [; Co do problemu, to jak masz oscyloskop, to sprawdź czy przypadkiem na samym początku na pinach nie dzieje się coś baaaaardzo dziwnego. Ewentualnie pokaż te przebiegi i porównaj je z przebiegami z kontrolera który masz. 4\/3!!
Ten mikrokontroler nie jest z rodziny AVR. Musisz mieć Bascom - 8051 pobrać ze strony: www.mcselec.com/
Metoda "wszytko na raz" nie za bardzo się sprawdza. Jest to jedyna metoda przy cargo-cult i copy-paste programowaniu. Osoby te muszą zebrać wszystke poprzebne im "kody" (w fazie copy-paste), następnie (w fazie cargo-cult) wstawiają podpatrzone gdzieś framenty róznych aplikacji bez rozumienia o co chodzi. Kolejne fazy: 1. Faza zaprzeczenia i izolacji...
...ktoś ma jakiś pomysł? Ja mam ;) Zamień miejscami linie konfigurujące timery i tuż po konfiguracji timerów dopisz linię Tcnt2=128 Piotrek
kurcze, trudne zadanie. Mógłbyś podrzucić cały katalog projektu, tzn. bez rzeczy które chciałbyś zachować tylko dla Siebie. Chodzi mi o tą często zwaną 'rozbiegówkę'( nawiasem... świetna polska nazwa) w assemblerze i o 'startup' w 'C'. sam'a tylko na płaskich przerwaniach znam( bez priorytetów przerwań). Czy procesor wchodzi w to przerwanie? tu inicjalizacja...
Hmm. Dobrze napisałeś, że Tobie się wydaje, że obydwa Timery odliczają dobrze, a tak nie jest. Wydaje mi się, że chciałeś uzyskać przerwanie co 8ms ? Więc musisz po każdym przeładowaniu timera go ładować początkowa wartością. Czyli dla timer0 to będzie 6, a dla timera1 to będzie 57536. Ale i tak nie wiem czemu musisz używać dwóch timerów by generować...
Oto fragment kodu programu. Zmienne KEY_1, KEY_2, KEY_3, KEY_4 służą do przechowywania kolejno wpisanych liczb z klawiatury. Po podaniu 4 cyfr z klawiatury, zmienna "sprawdzenie" przyjmuje wartość 1 i następuje sprawdzenie poprawności wpisanego kodu. Jezeli kod jest poprawny, to zrealizują się komendy zawarte w "if". Jest tam między innymi komenda P1OUT|=BIT6....
Wie ktos cos moze na temat prawidłowego odmierzania czasu w ATMega8L, jak skonfigurować jeden z wewnętrznych Timerów i jaki oscylator zastosować by uzyskać przerwanie dokładnie co 1s ? Gdzie w programie zadeklarować wybrany rezonator?
Pokaż log kompilacji po zrobieniu "clean".
Zaczynam zabawę z programowaniem PLC może ktoś mi pomoże. Próbuję zrobic prosty programik z timerami lecz nie mogę ich skonfigurować. Nie ma problemu z adresem timera np 001 ale z ustawieniem wartości odliczania SV. Może mnie ktos oświecić ? Z góry dziękuję
Wydaje mi się, że najłatwiej będzie rozwiązać to w obsłudze przerwania jednego z timerów. I przychodzą mi do głowy dwie możliwości: 1. Zmienianie parametrów pracy timera po każdym "trybie" przebiegu jaki ma być wygenerowany na wyjściu. Tj. przeładowywanie liczby do jakiej licznik powinien odliczyć zanim wygeneruje przerwanie. 2. Ustawienie licznika...
czesc w zalaczniku masz fajny program do obliczania czsow przerwan dla procesorow AVR w praktyce wyglada to np tak: ustawiasz timer0 tak zeby przerwanie wystepowalo co 2 ms config timer0 = timer, prescale = 64 ... ... counter0 = 6 start timer0 przy kwarcu 8MHz, timerze0 (8 bitow) i preskalerze 64, timer zwiekszany jest co 8 us 256 - 6 = 250 :) 250 *...
Skoro nie masz problemu z timerem, to po co w ogóle o nim pisać i po co testować program który ma też przerwania od timera? Niemniej jednak na początek brawa za to, że NIE używasz słynnego i popularnego badziewia (; Wg mnie (skoro chodzi o pin zerowy), powinieneś konfigurować rejestr AFIO->EXTICR[0], a nie 1. Problemem jest manual niezgrany z plikiem...
A czy jakiś dany czas przejścia jest wymagany podczas zmiany konfiguracji? Wątpię, trzeba erratę poczytać czy nie ma błędów związanych z licznikami.
Klasa TwoWire (której obiektem jest Wire) też używa przerwań. Po wejściu do ISR przerwania są blokowane. Jeżeli chcesz, aby dane ISR nie blokowało innych przerwań można użyć ISR_NOBLOCK:[syntax=c]ISR(TIMER2_OVF_vec... ISR_NOBLOCK) { ... }[/syntax]Byłbym jednak z tym bardzo ostrożny, ponieważ może przydarzyć się przepełnienie stosu. https://www.nongnu.org/avr-libc/user-man...
.Czy ktoś może wie w czym tkwi problem/spotkał się z taką sytuacją? A zmienna, której wartość kopiujesz do OCR3A/PWM3A nie jest przypadkiem zadeklarowana jako BYTE ? Jeżeli to nie to, to spróbuj zapisywać rejestry OCR3 osobno - OCR3AH, OCR3AL.
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Niech sobie kolega nawet nie żartuje. Wejść w konfigurację strefy, ustawić "Sterowana timerem" - skonfigurować dany numer timera.
Jeśli do deklaracji stałej używam dyrektywy define czy mogę zadeklarować tam stałą równą 5 * 10^5 ? No jasne, że tak. Preprocesor powinien rozwiązać sobie takie działania i wstawić jako wynik stałą. Jaką rolę pełni wyrażenie __interrupt w całym wyrażeniu __interrupt void Timer_A (void)? No to zależy do uP, generalnie __interrupt mówi kompilatorowi...
Ja używam takich kodów do odblokowania tych pinów, zaraz po instrukcji konfiguracji zegara programowego: 'odblokowanie pinów PC6 i 7 dla procesorów atmega16/32: Tccr2 = 0 Assr = 0 Timsk = 0 Tifr = 0 Oczywiście wszelkie dalsze konfiguracje innych timerów powinny znaleźć się po tym kawałku kodu.
Ja mam to tak skonfigurowane: [syntax=c] // gpio enkoder - PB4, PB5 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER |= GPIO_MODER_MODER4_1 | GPIO_MODER_MODER5_1; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4 | GPIO_OSPEEDER_OSPEEDR5; GPIOB->PUPDR |= GPIO_PUPDR_PUPDR4_0 | GPIO_PUPDR_PUPDR5_0; GPIOB->AFR[0] = 0x00220000; //init enkoder RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
BlueDraco: gratuluję ci, że masz tak wspaniałych studentów. Albo wyrozumiałego Dziekana, który ci pozwoli oblać 90% roku :) Niemniej uwagi słuszne. taramis88: To wszystko co opisałeś robi się sprzętowo. Ponieważ impulsy dla serwa generuje timer, nie ma możliwości, żeby ci coś skakało. Do tego nie trzeba nawet kwarcu. Pozostałe elementy wygenerujesz...
Witam, Spróbuj tak: [syntax=c]//Konfiguracja Timera 3 jako slave TIM3->PSC = 1; TIM3->EGR = TIM_PSCReloadMode_Immediate; // update PSC TIM3->PSC = 1; //.. reszta tak jak było [/syntax]
Zapoznaj się obowiązkowo z konfiguracją timerów! Jeśli Ci potrzeba większych przedziałów niż pozwala na to standardowa konfiguracja timerów użyj dodatkowej zmiennej licznikowej w tym przerwaniu, która zwielokrotni wynik...
Cześć, Pozwól, że przejdę do konkretów. 1. Możesz napisać program tak, żeby aktywować timer tylko wtedy, kiedy masz aktywny klawisz. 2. Dlaczego chcesz mieć klawisz na tym samym pinie co wyjście timera? 3. Jeśli chcesz liczyć, ile razy klawisz został aktywowany (naciśnięty), potrzebujesz zdefiniować zmienną, którą będziesz zwiększać o 1 przy każdym...
W sumie problem rozwiązany. Problemem była konfiguracja timerów co powodowało błędy. Mój dsm51 ma procka ADuC842 i potrzebna jest inna konfiguracja dla timerów i rejestrów odpowiedzialnych za transmisję z odpowiednią szybkością.
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
może Timer2.initialize Nie można tak, nie ma klasy Timer2. Poza tym od razu radzę zrezygnować z biblioteki TimerOne przy używaniu więcej niż jednego timera. Zamiast tego samemu można napisać konfiguracje timerów i wektory ich przerwań. Oto kod demonstrujący jak to zrobić. Powinno migać diodą i niezależnie wysyłać napis. Twoim zadaniem jest teraz dobrać...
A nie masz tam przypadkiem przed main() funkcji SystemInit() ze SPLa, która "coś" robi z zegarem? P.S. Ta deklaracja przerwania przed main() naprawdę jest zbędna... Czemu to niby miałoby służyć? P.S.2 - PSC też powinno być 499. 4\/3!!
No przydało by się spojrzeć na konfigurację tych timerów oraz wyjść.
Zajrzyj do helpa BASCOM - wszystko jest tam opisane - konfiguracja timerów i zadawanie wartości PWM.
Testowałem SIM7020E użyty na płytce deweloperskiej Waveshare. 2 lata temu T-mobile miało nieszczelność umożliwiającą korzystanie z LTE-NB ze zwykłą SIM LTE przy użyciu zwykłego APN "data". Mieli to załatać ale czy załatali to nie wiem. Możesz przetestować. Jeśli chodzi o wrażenia to... działało. Z tego co widzę w korespondencji z T-mobile jaką wtedy...
A jak to wygląda od strony programu? Masz pewność że wszystko masz napisane ok? Może coś nie tak z konfiguracją timerów?
Jak użyć timera (tzn. jak wyciągnąć z niego np zmienną dodawaną, lub resetowaną co określony czas?) Boję się jeszcze TIMERów :) Nie ma się czego bać. Oto prosty programik, który na pewno pomoże. 796182 Jednak dziwię się dlaczego nie używasz sprzętowego PWM. Attiny 2313 posiada ich cztery. Na każdym z timerów po dwa. [syntax=vbnet]Dim R As Integer Dim...
No fabrycznie nowa Mega128 wychodzi z zegarem 1MHz. Jeśli masz taką nową to przy przestawianiu na 8MHz nie zapomnij wyłączyć JTAG i koniecznie wyłącz bit M103C bo to jest bit który ją "cofa w rozwoju" ahahaha czyli robi kompatybilną ze starszą Atmegą103 i tam jest kilka zmian w rejestrach i sprzęcie przez co program na pewno dobrze działać nie będzie...
to na pewno tam coś jest - coś na pierwszy rzut oka nieoczywistego Tak dokładnie było... Babol... W projekcie używam jeszcze timera TCA0 do generowania przebiegu zasilającego buzzer (4Khz) w związku z czym w jednym z plików nagłówkowych było makro #define BEEP_OFF TCB0.CTRLA = 0.... właśnie TCB0...a powinno być TCA0. Pozostało tak, bo zmieniałem funkcje...
Samo sterowanie PWM-em i wyliczenia mogę zrobić w asm, ale wyświetlacza to już mi się nie chce, a to właśnie on zżera najwięcej zasobów. A jak ten kod z konfiguracją timerów? Może być?
będziesz miał kabel, wrzucisz screena ze zdarzeniami i z konfiguracją wyjść, timerów i stref i wtedy będzie można próbować Ci pomóc.
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Podaj jaki to uP. Ustaw noge OC1A jako wyjście, po konfiguracji timera dopisz: Start Timer1 Pozwinno zadziałać
a Tobie się 'cytuj' zablokowało ?:P Albo przykleić jakieś kursy - do przerwań takich a srakich, do timerów itd.
Witam, Czy mogłbyś podzielić się kodem źródłowym? Albo chociaż fragment dotyczący konfiguracji timerów. Ostatnio miałem problem z konfiguracją pwm na timer0 w tym AVR. Zrobiłem to więc na jednym pwm i przełączam go między diodami za pomocą tranzystorów. Natomiast timer0 wykorzystam pewnie do obsługi pilota w kodzie rc5. I drugie pytanie to czy do zmiany...
a nie moglibyście poprostu napisać początku programu z ustawioną konfiguracją timerów dla attiny 2313 tak żeby zliczał 10s no i zrobić miejsce (klamry albo coś) gdzie wprowadza się to co ma robić prgram?? prosze A może od razu napisać cały program? Po co się czepiasz tych timerów, bascom ma wbudowane jakieś gotowe funkcje do opóźnień czasowych.
Proszę. Nigdy nie używałem tej biblioteki bo nie mam tego LCD. Pisana była na Xmedze dlatego pewnie pewne niedoróbki na zwykłym AVR. Błędy są w konfiguracjach Timerów dla PWM podświetlania. Poprawiłem kilka rzeczy i zrezygnowałem z podświetlania to skompilowało się co poznasz po tym że sa pliki HEX i BIN ;) Tak więc jak by nad tym jeszcze chwilę posiedzieć,...
Witam Ponizej podalem fragment kodu i zaznaczylem miejsce w ktorym emulator JAGODA pokazuje mi caly czas blad kompilacji, czy mozna cos z tym zrobic? Przykład jest typowo książkowy.... ;---------------- KONFIGURACJA TIMERÓW------------------- ; TIMER 0 T0_GEQU0 T0_CEQU0 T0_MEQU1 TIM0EQUT0_M+T0_C*4+T0_G*8 ;TIMER 1 T1_GEQU0 T1_CEQU0 T1_MEQU1 TIM1EQUT1_M+T1_C*4+T1_G*8...
Witam. Mam takie oto zadanie: po wciśnięciu przycisku ma zacząć się odliczanie czasu, po puszczeniu przycisku koniec odliczania. Wartość na bieżąco wyświetlana na LCD Z obsługą LCD spokojnie dam sobie radę, ale z timerów i przerwań jeszcze nigdy nie korzystałem. Prosiłbym o linka jeśli ktoś widział gdzieś podobny program albo opis konfiguracji timerów...
W ATTiny timer chyba przejmuje kontrolę nad IO, więc włączenie/wyłączenie odbywa się z poziomu konfiguracji timera. CZyli robisz to tak - np. ustawiasz inny timer, aby generował przerwanie co 1s, a w obsłudze tego przerwania w zależności od potrzeby konfigurujesz timer generujący PWM. Chyba to najprostsze rozwiązanie.
Witam wszystkich Mam takie oto zadanie: po wciśnięciu przycisku ma zacząć się odliczanie czasu (od 999 do zera). Wartość na bieżąco wyświetlana na wyświetlaczu 3 seg. ze wspólną anodą . Z obsługą wyświetlacza dam sobie radę, ale z timerów jeszcze nigdy nie korzystałem. Prosiłbym o linka jeśli ktoś widział gdzieś podobny program albo opis konfiguracji...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
No kiedy że nie, podejście z attiny daje więcej możliwości bo masz bardziej rozbudowane peryferia a wolę podejście jakie kiedyś było w PIC'ach że mamy ten sam rdzeń obudowany różnymi peryferiami i wybieramy procesor do danego zastosowania. powoduje że jak projekt się rozbuduje to czegoś braknie. Poza tym nowszy rdzeń ma dwa poziomy przerwań i bardziej...
Ja do tej pory programowałem tylko AVRy Atmela ale z tego co czytałem to PICe też mają rozbudowane Timery sprzętowe. Musisz wziąć notę katalogową w ręce - zaczytać dobrze o konfiguracji timerów i odrazu ci się rozjaśni. Jeśli chodzi o C to nie pomogę ci bo ja z kolei wszystko piszę w asemblerze. Aby użyć timera sprzętowego z procka nie potrzeba żadnego...
Z tego co widze problem jest chyba w tym ze w przypadku 8 kompilator sam mi ustawial rejestr assr i bity exclk i as2 a w tym 168 tego nie robi. tylko jak na razie z racji mojej niklej wiedzy musze dojść jak to zrobić ręcznie. Widzę że problem już rozwiązany, ale dodam że dokładnie tak jest. U mnie w BASCOMie nie działa konfiguracja Timerów, Przerwań...
Ale ten program który wkleiłeś nie ma prawa działać. Coś tu kręcisz panie kolego.... Czyli tak jak pisałem wcześniej. Zacznij od prostego migania diodą. Ale w taki sposób abyś sam wiedział dlaczego ona miga. Poczytaj jak powinna wyglądać pętla główna , przerwania( to raczej sobie na dłuższy czas odpuść) , konfiguracje timerów ( i tu przyłóż się porządnie...
Kiedy w obsłudze przerwania detektorów przejścia przez 0 umieściłem licznik liczący do 600, który po każdym zliczeniu wysyłał czas po RS232 do kompa i to samo zrobiłem z timerem okazało się że timer po ok. 10 min jest opóźniony o prawie 1 s w stosunku do licznika przerwań od detektorów... Siedzę już nad tym od kilku ładnych chwil i nie mogę dojść do...
Witam! Jestem początkujący w tym temacie, od niedawna uczę się programować mikrokontrolery AVR. Po pierwszych programach typu migająca dioda przy użyciu funkcji delay oraz opanowaniu timerów na tyle aby one sterowały diodą chciałbym "oswoić" serwomechanizm : TowerPro SG90. Trochę czytając na internecie oraz oczywiście dokumentacje atmegi328p udało mi...
Nie licz na gotowe biblioteki, które najczęściej zawierają masę błędów. Napisz swoją obsługę serwa. Timerem wygeneruj impuls zależnie od tego jaki kąt chcesz uzyskać. Wiele serw nie wymaga przerwy pomiędzy impulsami ok 20ms, jeśli jednak ma ona być to też jest proste, po wygenerowaniu impulsu, wywołane zostanie przerwanie, które zmieni konfigurację...
Ok po pierwsze zdecyduj się czy używasz kanału 1 czy kanału 2 DAC bo odpalasz DMA dla kanału pierwszego DAC ale w rejestrze DAC_CR odpalasz kanał drugi. Do tego aby działał trigger inny niż software'owy musisz ustawić bit TEN1 oraz bity TSEL1[2:0] w zależności od źródła wyzwalania. Więc dla TIM6: [syntax=c]DAC->CR = DAC_CR_DMAEN1 | DAC_CR_TEN1 |...
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
Oj bałaganiarz z Ciebie... ;) Porozsiewałeś konfigurację timera gdzie się dało... Zcal to jakoś nawet jako funkcję czy makro... Sam się łatwiej połapiesz i unikniesz błędów... Jak już włączasz przerwanie od przepełnienia to wypadało dać procedurę jego obsługi... SIGNAL (TIMER_OVF_vect) { OCR1A = pwm; }
Właśnie dotarłem do tych ustawień ale okazało się, że to nie one. W każdym bądź razie ielkie dzięki za podpowiedzi. Dla potomnych jak wiadomo TIM1 i TIM8 są znacznie bardziej rozbudowane więc wykorzystując StdPeriph STM-a należy poczytać o wspomnianym rejestrze, których ustawienia znajdą się pod hasłem TIM_BDTRInitTypeDef, służy on do ustawiania konfiguracji...
Jeżeli to jest cały Twój program, to nie dziwne, że uC się zawiesza. Brakuje mu sekcji main. Co do konfiguracji timera, to skorzystaj z trybu CTC zamiast robić te dziwne operacje z TCNT0.
Jeśli myślisz, że ten czujnik zapewni ci pomiar w zakresie 2-700 cm to możesz się zdziwić. Od ściany być może tak, ale od obiektu mniejszego niż kartka A4 może do 2, góra 3m coś złapie. A i tak będzie sporo szumu. Co do czasów - jak widzisz potrzebujesz mieć możliwość określenia czasu z rozdzielczością około 1 us, to daje wymóg na taktowanie MCU równe...
Witam ponownie pomijając poprzedni problem pojawił się nowy. Potrzebuje używać przerwań od przepełnienia dwóch timerów T0 i T2. Po ich skonfigurowaniu i włączeniu pojawia kłopot gdyż żaden nie chce zliczać, jeżeli używam ich pojedynczo to wszystko jest ok. Poniżej wstawiam część programu z konfiguracją timerów. TIFR |= (1 << TOV2)|(1...
Witam. Pytania pomocnicze: 1. Mikrokontroler ma być Masterem (generuje przebieg zegara SCK oraz obsługuje transmisję), czy też ma pracować w trybie Slave (przyjmuje i wysyła dane w takt zewnętrznego zegara)? 2. Na którym zboczu zegara (narastającym czy opadającym) ma być próbkowany stan linii wejściowej - SDI? 3. Jaki jest polaryzacja sygnału zegarowego...
Z listingu programu nie mozna doszukac sie jaka metode przyjmujesz w pomiarze RPM. Ja jakoś się doszukałem. A nie, sory. Nawet doszukiwać się nie musiałem. Liczy okres pomiędzy impulsami. Ale przerwanie to powinno wyglądać tak: Przerwanie: Zmienna = Timer1 Timer1 = 0 Wynik = 7500000 / Zmienna Return Preskaler Timera ustaw na 64. A: Capture Edge...
1 obrót cylindra to 1 arkusz więc jeśli na osi umieścimy "podziałkę" z drukarki atramentowej HP (taki foliowy krążek z naswietloną podziałką) i element odczytujący (takze z tej drukarki) wtedy uzyskamy kilkaset impulsów na 1 obrót - czy wtedy bedzie łatwiej? np. 1 obrót = 500 impulsów 500 impulsów = 1 ark. 250 impulsów/sek = 0,5 ark/s =1800ark/h Zakres...
TIM1 jest tu specjalny, bo ma kilka wektorów przerwań (TIM1_BRK_IRQHandler, TIM1_UP_IRQHandler, TIM1_TRG_COM_IRQHandler, TIM1_CC_IRQHandler). Reszta timerów ma jeden. TIMx_IRQHandler, przeglądnij sobie -> 10.1.2 Interrupt and exception vectors
Postarałem się, coś jeszcze zrobić, ale niestety nadal zielona dioda nie "tętni" ( ma stopniowo świecić coraz mocniej do maksymalnej wartości i potem świecić coraz lżej aż prawie zgaśnie i tak w kółko). Uporządkowałem kod żeby był bardziej przejrzysty: #include <msp430g2231.h> #include <msp430g2553.h> int jasnosc=1; int a=1; int b=100; int...
Tablicami NVIC się nie przejmuj. Korzystaj z funkcji dostarczonych przez CMSIS, w tym przypadku nie warto stosować rejestrów wprost. Konfiguracja Timera OK, choć kolejność nie należy do poprawnych. Przyjrzyj się jeszcze rejestrowi EGR. Przerwanie? Brak kasowania flagi skutkuje ciągłym jego wywoływaniem. Flagę kasuje się na początku przerwania. I taka...
Witam. Brak konfiguracji szyny I2C kod: np: Config Sda = Portc.4 Config Scl = Portc.5
Czy jesteś pewien, że TIM3 nie generuje przerwań? Zobacz sobie konfigurację timerów, wszystko mam porozkładane po plikach typu timers.c, gpio.c, itd. i tylko konfiguruję tam te rzeczy które są w tych plikach. Mogę na PW podesłać KOD źródłowy, nie chce go udostępniać wszystkim. Bo to może być tak, że procesor jest zajęty obsługą jakiegoś przerwania...
Wlasnie o czyms takim myslalem!! A jak dobrac ten rezystor R2? Napiecie zasilania bedzie ok 12 volt a tranzystor sterujacy to TIP147(taki akurat mam. Mam nadzieje ze poradzi sobie z tak krotkim impulsem..?)
witam mam problem a mianowicie nie moge sobie poradzic z uruchomieniem timera w trybie pwm w procku tiny26. juz na roznych avr robilem ale tutaj ilosc rejestrow do konfiguracji tego jednego timera jest ogromna i sie troche gubie, moze ktos pomoze ??
No niby poprawiłem te błędy ale nie znikły. I mam jeszcze prośbę czy mógłby ktoś rzucić okiem na konfiguracje LCD, Timerów i dopasować je tak aby odmierzały czas. Wybaczcie moje być może dla was banalne błędy , bascoma się uczę dopiero od roku i miałem 2 miesięczna przerwę. Złaczam aktualny kod
LED EQU P1.7 X EQU 20h ;(zmienne w pamieci RAM) XK EQU 21h ORG 000h ;procek po resecie zaczyna od adresu 0, tak wic skacze do etykiety MAIN JMP MAIN ORG 0013h JMP PRZERWANIE MAIN: MOV X, #1 MOV XK, #1 SETB LED >>>Dalej wpisz konfiguracje timera JMP $ ;zapetlenie kodu, bo poleci dalej do przerwania i narobi bigosu PRZERWANIE:...
Tadzik daruj sobie odpowiedzi bo jak narazie żadna twoja uwaga ani nie była trafna ani pomocna. A nie wróżę lecz użyłem debuggera, w którym widać że bit odpowiadający za wybranie źródła taktowania TIM1 jest właśnie PLL. Żebyś oczywiście się nie czepiał odniosę się do RM że chodzi o Bit 8 TIM1SW Timer1 clock source selection w rejestrze RCC_CFGR3. Zmieniałem...
Czemu sterujesz OUT-em i CTL-em? Nie lepiej sterować bezpośrednio strefą wykorzystując funkcję wyjścia 8?
//--------------------------------------... void TC2Capt_Init( void ) { PMC_OpenPeriphClock( AT91C_ID_TC2 ); AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKDIS; AT91C_BASE_TC2->TC_IDR = 0xffffffff; PIO_OpenPeriph_A( AT91C_BASE_PIOB, 1 << 26 );// TIOA2 AT91C_BASE_TC2->TC_IER...
Poradnik kol. (at)szczywronek , strona 139.
Musisz odczekać odpowiednią ilość cykli pomiędzy uruchomieniem PWMów na jednym Timerze do uruchomienia PWMa na drugim Timerze. Oczekiwanie (wraz z zapisami do rejestrów Timerów) muszą być operacją atomową. Ilość cykli będzie trochę mniejsza od ilości cykli jaka przypada na jeden okres PWMa. Np. jak PWMy mają chodzić z zegarem bez preskalera i mieć rozdzielczość...
ten timer włączyłeś? W bascomie uzyles pewnie config clock=soft Więc jesli z punktu widzenia konfiguracji timera i procesora jest wszystko ok, to przyczyna moze byc jedna: kwarc nie oscyluje. Spróbuj podotykać np. pęsetą (trzymając ją mocno w ręku) pinów kwarca. Jesli zaczną przeskakiwać sekundy to błąd jest w kwarcu == wymień kwarc. Ta sytuacja tez...
Witam, Czy przy takiej rozdzielczości da radę?? Jasne że da radę pytanie jaka dokładności jest Ci potrzebna . Przy zastosowaniu szybkich liczników jak radzili koledzy będzie ok. Nawet z timerem będzie ok. Implementowałem podobną rzeczy jak Ty. Miałem enkoder, zliczałem impulsy w czasie z zastosowaniem timera a następnie wynik jeszcze uśredniałem. Miałem...
Kiedyś coś pisałem na Xmega32E5, tutaj mam funkcję do inicjalizacji timera do pomiaru okresu (zdarzenie z komparatora A). Może ci się przyda. [syntax=c]/*------------------------- Funkcja inicjująca timer do pomiaru okresu (zdarzenie z komparatora A) --------------------------------*/ void Period_Timer_Init(void) { TCC5.CTRLB = TC45_WGMODE_NORMAL_gc...
Jęśli chodzi o pytanie nr 3 to tak Dodano po 7 Bezpośrednia odpowiedź na pytanie Aby jednocześnie wyświetlać prędkość obrotową (RPM) wentylatora oraz ustawioną moc (np. w formie procentowego wypełnienia PWM) na wyświetlaczu dotykowym podłączonym do Arduino Mega, należy: - Zliczać impulsy z tachometru (pin TACH) wentylatora, przeliczać je na obr./min...
Masz jeden licznik, którego zawartość jest porównywana z 2 rejestrami. Niezależnie od tego co masz ustawione w rejestrach porównujących, licznik wykonuje jeden cykl w jednostce czasu. W jaki sposób dla statycznych wartości rejestrów porównujących mógłbyś uzyskać różną częstotliwość, czyli wielokrotne porównanie na jednym kanale i tylko pojedyncze na...
Masz racje, miałem błąd w założeniach. Wyjdzie nawet jeszcze wolniej bo z bitem parzystości mam 11 bitów na bajt a to da 18us Ale powiedzmy że trudno, będe wysyłać te dane co 20us. Jak do tego moge podejść bez timerów?
hmm?? zacznijmy od tego, że masz źle konfigurację timerów... używasz wyjścia oc0a timera0 i oc1b timera1, a potem w programie odwołujesz się do rejestrów odpowiadających oc1a i oc1b... konfiguracja powinna być: Config Timer1 = Pwm , Pwm = 8, Compare A Pwm = Clear Up, Compare B Pwm = Clear Up, Prescale = 1 dalej operujesz na liczbach z zakresu 0-1023,...
cytat z twojego przykładu: [syntax=c]__IO uint16_t CCR1_Val = 40961; __IO uint16_t CCR2_Val = 27309; __IO uint16_t CCR3_Val = 13654; __IO uint16_t CCR4_Val = 6826; uint16_t PrescalerValue = 0; [/syntax] PS. odliczyć sekundy już trudniej widzę nie można.
ad 1:Podaj F rezonatora np. 8mhz config timer1 = timer,prescale 256 'konfiguracja timera load timer1 , 31250 'załadowanie timera 1s on timer1 odliczanie 'określenie która procedura ma byc wykonana co 1s enable interrupts 'właczenie przerwań enable timer1 'właczenie timera1 dim twoja_zmienna as long ' twoja pętla do "jakis tam twój program" loop odliczanie:...
Ponieważ występował problem w momencie, gdy zatrzymywałem silnik w momencie rozruchu. tzn. po ponownym aktywowaniu timera, OCR0 przechowywało starą wartość, czyli potrafił się uruchomić z wypełnieniem, na którym zatrzymał się silnik. Nie wyłączaj timera aby zatrzymać silnik tylko ustw OCR na 0. naturalnie bedzie "piczek" 1/256. Jeśli piczek jest problemem,...
Witam, Mam problemz AtMega z tematu. Ustawiam konfigurację Timerów wg manualki: tryb CNC; prescaler; zezwolenie na przerwania CompareMatch. Po ustawieniu tego odblokowuję przerwania przez "sei();" i.. procesor się resetuje. Dodam też, że taki sam kod działa bez problemów na AtMega 16/32/64. Czy przy pisaniu kodu na te procesory (324/644/1284) trzeba...
Obiecałem zrobić sterowanie silnikiem DC z Układem sie uporałem, natomiast moje małe umiejętności nie pozwalają mi przeskoczyć napisania programu regulacji obrotów. Kompilator Bascoma pokazuje mi wciąż błędy i to w linijce konfiguracji Timera, gdzie robię błąd? Proszę pomóżcie, a może ktoś ma już gotowy modół sterowania obrotami? Układ AtMega 8 2 przyciski...
Witam. Rozpocząłem niedawno zabawy z uC atmela, jak narazie idzie nie najgorzej... Robie teraz zegarek z termometrem do samochodu (atmega8, pcf8583, ds18b20, LCD na hd4478). Jednym słowem standard... prawie każdy od tego zaczyna. Dużo materiału jest w necie, wiec do tej pory na wszystkie pytania tam znalazłem odpowiedź... Pytania mam 3... Pierwsze,...
Teraz nie ma takiej potrzeby, zostało to naprawione. Problem był z timerem, który uruchamiał quick_timer_thread. Teraz zastąpiłem go sprzętowym timerem, który również ma zwiększony rozmiar stosu. Od tego czasu nie ma problemu.
ATmega324PA jak napisałem w pierwszym poście. Schemat w załączniku. Inicjalizacja IO: [syntax=c] #define SHCPon DDRA |= _BV(0);PORTA |= _BV(0); //SCK/SRCLK pin 11 ////////////////////////////////poprawić połączenia na płytce #define SHCPoff DDRA |= _BV(0);PORTA &= ~_BV(0); #define DSon DDRA |= _BV(3);PORTA |= _BV(3);//SI/SER/DS pin14 #define DSoff...
AtTiny2313 nie ma wbudowanego przetwornika AD, więc w prosty sposób się nie da. Można zawsze używając kilku elementów zrobić prosty przetwornik, ale patrząc na ceny innych uK, np. AtMega8, który ma dużo większe możliwości, nie ma to sensu. A wystarczyłoby uruchomić PWM w rozdzielczości 10 bitowej i bezpiśrednio przypisywać mu wartość odczytaną z przetwornika,...
Generalnie należy pin pracujący jako PWM ustawić jako wyjście, powinno się też ustawić jego domyślny stan, który obowiązuje w chwili zatrzymania/resetu timera. Oprócz tego należy odblokować w timerze odpowedni kanał CCx. Co do pracy jednocześnie w trybie capture i compare to jest to możliwe, ale tylko w XMEGA E5.
atmega timerów błędy timerów bascom obsługa timerów
klimatyzacja błędy dekoder cyfrowy polsat zapłon romet chart
Agregat prądotwórczy Kraft&Dele KD120 - czy warto? Kondensatory do napędu Nice Robus 350: parametry i typy