Rozważyłbym coś takiego: timer 8bit do przerwań, które zliczasz dla odmierzania czasu; timer 16bit do sprawdzania, czy nie zgubiłeś przerwania - chyba nie zgubisz 256 przerwań?
Ta biblioteka nie używa sprzętowego PWM. Według opisu używa jednego 16Bit Timera na każde 12 serv. Tak wiec Timer 16Bit jest już zajęty, PWM sprżętowy tego timera również jest niedostępny, ale możesz sobie te serva podłączyć pod dowolne piny a do odmierzania czasu zamiast Delay musisz/możesz użyć innego Timera :D
Nie wystarczy zmienić wartość zmiennej "pwm". Musisz przede wszystkim zmienić zawartość rejestru OCRxx aby zmienił Ci się współczynnik wypełnienia: [syntax=c] if(pwm<1000) { _delay_ms(100); pwm++; OCR1A = pwm; //<==== }[/syntax]
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 -...
ATmwga 8 ma 3 timery... 2x 8-bit i 1x 16bit... Timer2 może pracować z kwarcem zegarkowym... Timer1 jako PWM... A timer0 jako licznik...
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
Cześć W załączniku podsyłam Ci formułę obliczeń z której korzystałem oraz arkusze Open Office w którym to wyliczałem. Z jakiegoś powodu (już nie pamiętam) użyłem wtedy Open Office zamiast Excela. Ten arkusz nie otwiera się poprawnie w excelu. Obliczenia wykonane dla 250 kroków, timer 16bit (procek PIC taktowany kwarcem 8MHz). Teraz nie mam Open Offica...
//timer 1 16bit konfiguracja (ICP1) TCNT1=0; //ustawienie poczatkowej wartosci timera 1 TCCR1B |= (1<<ICES1); //pomiar na narastajacym zboczu TIMSK |= (1<<TICIE1) | (1<<TOIE1); //zezwolenie na przerwanie od ICP i od overflow TCCR1B |= (1<<CS12) | (1<<CS10) ; //prescaler 1024...
Nom. Atmega162 nie ma nawet ADC, ale ma jedną ciekawą cechę - drugi 16Bit Timer czego Atmegi164/644 nie mają. Przydało mi się raz kiedy migrowałem gotowy projekt do innego zadania a potrzebowałem drugiego Timera 16Bit. Zależy co kto potrzebuje.
Jak możesz to zastosuj kwarc 4194304Hz na timerze 16bit przy preskalerze 64. Timer nie niepokojony niczym zgłosi ci przerwanie równo po 1 s.
Rozwiązaniem jest śledzenie pełnej transmisji, przy wykorzystaniu Mode=Background, co niestety wymaga mikrokontrolera z timerem 16bit. Takie są wymagania Bascoma, a w przykładowo czystym C można zrobić tylko na timerze 8-bit.
Witam To poszukaj sobie na polskim google - informacji na temat tej rodziny tam nie brakuję. Jaki język programowania? Do obsługi timerów: TMOD=0x11; T0 i T1 jako 16bit timery ET1=1; odblokowanie przerywania T1 EA=1; globalne przerywania TR1=1; włączenie T1 void przerywanie_T1 () interrupt 3 { TH1=jakaś wartoś; TL1=jakaś wartoś; jakaś wartość...
Witam, zacząłem sobie dziś robić mały projekcik, są to 2 płytki z procesorami atmega32, jedna ma za zadanie naśladować silnik(prowizorycznie) jest generatorem impulsów prostokąt. z wykorzystaniem timera 16bit CTC, jeden kanał to częstotliwość a drugi to szerokość impulsu. Do przeliczania obrotów na minutę wykorzystałem wzorek: x=(F_CPU/(T1_PRESCALER*((float)obroty)/6...
Stop timer nie zeruje automatycznie zawartości timera. Nie wiem jak jest z Start timer. A jaki prescale byś proponował ? dla timera 16bit i 8000000Hz, żeby mierzyć dość dokładnie w całym zakresie ? Z moich obliczeń wychodzi 8, wtedy przerwanie będzie co około 65ms. Jeszcze tak się zastanawiam w helpie jest napisane, że "Uwaga! Użycie parametru PRESCALE...
100Hz wziąłem z - Ocr1a = 2857 (1,4kHz), a w Ocr1b = 3333(1,2kHz) to układ generuje tylko pierwszą częstotliwość z OCR1A, no bo 2957 taktów przychodzi szybciej i TIMER1 się zeruje, a wiec nigdy nie ma przerwania z OCR1B,przez co nigdy nie zmiana się stan końcówki PB.2 - Ocr1a = 3333(1,2kHz), a w Ocr1b = 2857(1,4kHz), to oba układy generują mniejszą...
Witam. Wyłączenie zgodności z mega103 nie jest przyczyną braku komunikacji z programatorem. W trybie zgodności wyłączone są tylko dodatkowe układy, którymi różnią się te uC. Np. drugi UART, jeden z timerów 16bit, TWI, itp. Być może ustawiłeś fusebity na zawnętrzny zegar, bądź układ RC a nie kwarc? Wydaje się to być jedyną możliwą przyczyną.
Widzę, że moje programy znajdują uznanie i dobrze. Co do podawania impulsów na uC to nie można zmieniać dowolnie końcówek bo timery mają wejścia przypisane do konkretnych wyprowadzeń. Dla M8 są to T1 - 11, T0 - 6. Trzeba to brać pod uwagę przy projektowaniu układu. Dotyczy to końcówek używanych jako alternatywne. Po przeróbce czas odmierza T0 (8bit)...
Masz źle skonfigurowany timer. W trybie jaki wybrałeś TOP jest określany przez ICR1 - jeśli ładujesz tam 200, a do OCR 400 to przecież masz 100% wypełnienie jeśli OCR>=200. Dobrze, że zauważyłeś. Dzięki, chodź przy tym silniczku to niewiele dało. Prz 25% ledwo dycha, przy 50% wypełnienia może się da użyć do jakiegoś wolnego pojazdu z małym obciążeniem....
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
Witam. Na wstępie chciałbym napisać iż szukałem informacji na ten tematu na tym forum a także na google ale nie znalazłem jednoznacznej odpowiedzi. Otóż czy używając sprzętowego PWM w uC blokuje jego timery? tj. o co mi chodzi. Otóż atmega 168 posiada: 6 kanałów PWM 2 timery 8bit 1 timer 16bit z noty katalogowej widzę iż 6 kanałów PWM OC0A - wykorzystuje...
Opiszę szczegółowo jak wyliczyłem czas, może ktoś jeszcze będzie potrzebował, proszę o sprawdzenie czy dobrze :). Znalazłem coś takiego -> core CLK = 2.098 MHz. Więc liczę w ten sposób: 1/2.098MHz=0,46*10^-6 czyli około 5us trwa jeden cykl. 2084*0,48*10^-6=1,00032*10^-3 czyli około 1ms 10415*0,48*10^-6=4,9992*10^-3 czyli około 5ms ponieważ timer...
Testy można przeprowadzić w niektórych symulatorach np. [url=http://www.edsim51.com/]edsim51. Przykładowy kod poniżej. [syntax=asm] sekundy EQU 07Eh ;zmienna sekund jedna_dwudziestaEQU 07Fh ;licznik jednej dwudziestej sekundy resetowanie EQU 19456 ;ustawienie zliczania co 0,05sek setkiEQU 07Bh dziesiatkiEQU 07Ch jednostkiEQU 07Dh flagiEQU 020h org 0000h...
witam! czy wszystkie wbudowane kanaly PWM dla danego procesora mozna uzywac jednoczesnie czy jest to uzaleznione od ilosci timerow? np ATMega64 ma 8 PWM ale tylko po 2 timery 8/16bit. chcialbym sterowac moca 8 diod LED jednoczesnie uzywajac wlasnie PWM. czy to wykonalne czy musze uzyc kilku prockow?
Witam. Potrzebuję mikrokontrolera który spełni następujące warunki - Taktowanie conajmniej 60MHZ - 4 wejścia z przerwaniami przy zmianie stanu - Minimum 4 timery (z czego 2 16bit) - UART, I²C
Przepraszam, niefortunnie zasugerowałem się AVRStudio w wersji 5 oraz jego dokumentacji w PDF-ie. Uruchomiłem już licznik cykli w AVR Studio 4 i rzeczywiście można wyciągnąć następujące wnioski: dla kodu ze zmiennymi statycznymi są 443 cykle dla kodu ze zmienną typu "register" jest 198 cykli Dziękuję tmf za podpowiedź, rzeczywiście przyspieszyłem przerwanie...
Witam A tak se gdybam, a gdyby połączyć dwa timery razem 8bit + 16bit, oba pracujące w trybie CTC "teoretycznie" wyszedłby licznik 24 bitowy. Pozdrawiam Romek
najlepiej zastosuj w układzie zegarek pcf8583. on daje impuls z wypełnieniem 50% co sekundę czyli mozesz zrobić odświeżanie wyniku co 0,5 sekundy. a jakiego wyniku a no takiego: podłącz przez negację 40106 (negacja ze szmitem) sygnał z wtrysiwacza czy co tam masz na wejście przerwania. zdefiniuj timer jako timer 16bit ale bramkowany zewnętrznie. tzn...
Jeśli coś mniejszego od Raspberry/Orange Pi, to proponuję zacząć od poszukania oprogramowania niezbędnego do działania z Arduino i z modułem STM32, oraz sprawdzenia, jakie możliwości daje który moduł. Z tego, co pamiętam, STM32 jest dużo szybszy, najtańsze moduły do obu są w cenie kilkunastu zł - moduł STM32C8T6 od około 14zł, Arduino Pro Mini od 12.60zł...
Tak myślałem, otałem sie o produkcje poligraficzną na maszynach offsetowych:D Główny problem to najniższa prękosc liczenia. Poza tym dość prosto, zewnętrzny kwarc jako podstawa czasu, wenętrzny ma za duże odchyłki. Timer 16-bitowy jako timer zliczający interwał czasu w którym odbywa się pomiar, drugi timer jako licznik impulsów z fototranzystora. Reszta...
Ale taki Z-80 zwykle miał podpięte dużo więcej RAMu, a tutaj mamy 2019 rok i nadal 2kB... Jak już budować coś takiego to na STM32. Są w podobnych cenach a wymieniać ich zalety na AVRami można w nieskończoność... 45$ za AVRa i to nawet nie XMEGA... Śmiech na sali... Ostatnio popularne są płytki z STM32 zwane "Blue Pill". 2$ na ali (wysyłka darmowa),...
Witam, programuję odbiornik (Pro mini) sygnału przez RF (XY-MK-5V, 433MH), który ma sterować pracą serwa. Wykorzystywane są biblioteki #include <Servo.h> #include <VirtualWire.h> #include <Wire.h> niestety przy kompilacji wyskakuje cała seria błędów: libraries\VirtualWire\VirtualWire.cpp.o&... In function `__vector_11': C:\Users\...\Documents\Arduino\libra...
w systemie koniecznie musi być pomiar hałasu szybowce mają silniki;) jest to jedna z metod startu (tzw.motoszybowce). W sumie to jak Freddie Chopin wspomniał nie potrzebuje tak duzo pamięci (chciałem miec taki zapas na przyszlość) bede pisał najpewniej w C gdyż lubie ten język. Co do zapisu to chce aby byla mozliwosć 4 razy na sek zeby potem wyswietlając...
1. pwm programowy bo potrzebny jest timer 16bit do odczytu impulsu z odbiornika(przy kwarcu 4MHz i prescale 8 - 1-2ms = 500 - 1000) ... wyczytalem ze attin2313 cztery wyjscie pwm 2 na timer0 i dwa na timer1 tylko zastanawia mnie jak sie do tego ma bascom, bo tam nic takiego nie wyczytalem? moze ktos ma pojecie na ten temat?bo jesli na timer0 dalo by...
Witam! Mam dość nietypowy problem z AVR-kami. Ostatnio używałem Timera na ATTiny2313. Ustawiłem preskaler /256, kwarc 8MHz, timer 16bit w trybie porównania i przerwanie. Wartość do porównania była ustawiona na ok. 31250. Ostatecznie powinienem otrzymać przerwanie z częstotliwością ok. 1Hz. To zwiększało licznik i on był wyświetlany. I tu pojawił się...
Jeżeli nie używasz przerwań to ich nie włączasz. Wprawdzie nie włączasz głównego, ale włączasz od timera (TIMSK1), dlaczego? Wzór z dokumentacji dla CTC: F = Fclk / (2 * N * (1+OCR1A)) = 16000 / ( 2 * 8 * 2000 ) = 16000 / 32000 = 0.5Hz Sterowanie pinem OC1A dla CTC: [syntax=c]TCCR1A = 1<<COM1A0[/syntax] .
Witam. Mam problem na który sensownej odpowiedzi nie znalazłem, w nocie katalogowej także nie ma opisanego takiego przypadku za to jest kilka innych które mi średnio pasują do czegokolwiek. Mianowicie potrzebuje produkować przebieg o niezależnie programowalnej częstotliwości i czasie trwania stanu wysokiego. Parametry tego przebiegu to częstotliwość...
Bluedraco no właśnie nie, do pwm używam timera 2. Timer 1 to tylko licznik więc zostaje mi tylko timer 1 16bit Zrobiłem tak bo t2 jest 8 bitowy i nim steruje silniki przez l293. Więc wyprowadzenia PB1 i PB2 mam zajęte. Na początku myślałem że mogę się bawić z przerwaniami tylko naPB1 2 i 3 , teraz wiem że tak nie jest. Przepraszam za błedy, ale tak...
Config Timer1 = Timer , Prescale=1 Enable Ovf1 On Ovf1 Sprawdz_Klawisze Start Timer1 Enable Interrupts Tyle trzeba dodac do Twojego programu i usunac Do Loop z tego kawalka co sprawdza klawisze, natomiast doadac etykiete Sprawdz_Klawisze: i na koncu tego bloku co sprawdza klawisze zamiast loop dac Return nie wiem jaki masz kwarc ale jezeli to jest 1MHz...
Hmm, chwilowo prostsze do wykonania wydaje mi się coś na tiny10 - wewnętrzny zegar 128khz (może nawet podzielony, bo chyba się da) + 16bit timer z DIV1024 daje ponad 8 minut... Może to dlatego, że więcej miałem do czynienia z mikrokontrolerami niż ze składanymi z klocków układami cyfrowymi. Mógłbyś zaproponować jakiś praktyczny schemat do wspomnianego...
Programik zamieszczam poniżej: #include <reg51.h> #define portP1 unsigned int licznik; unsigned int interval = 30; void main(void) { TMOD=0x22; //dwa timery jako 16bit TH1=interval; // zapis danej do TH1 licznik=0; ET1=1; TR1=1; //wlaczenie przerwania od timera1 EA=1; while (1); } void PrzerwanieTimer1(void) interrupt 3 { licznik++; port=licznik;...
witam. mam taki program: void main(void) { TMOD = 0x01; //timer0 - tryb1 16bit timer TH0 = 0xfe; //stan poczatkowy TL0 = 0xB0; //stan poczatkowy TF0 = 0; //kasowanie bitu przepelnienia timer0 ET0 = 1; //wlaczenie przerwania przepelnienia timer0 EA = 1; //wlaczenie przerwan TR0 =1; //start timer0 while(1) { ; } } pozdrawiam a gdzie obsługa przerwania...
Jak ustawic timer 1 żeby liczyl 16bit a nie 8? bo to co napisalem ponizej to zawsze tylko liczy w TCNT1L a to co wpisałem w TCNT1H automatycznie wymazuje przy kolejnym cyklu dlaczego? :( .cseg .org 0x00 rjmp start .org 0x06 rjmp timer1 .org 0x11 Start: Ldi Acc, 1; ustaw preskaler timera 1 na 1 Out TCCR1A, Acc Out TCCR1B, Acc Ldi Acc, 0x80 ; wpisz wartosć...
Proponuję benchmarq. 1024 pętle z miksowaniem dwóch 32pixelowych tablic RGB umieszczonych w ram. (data1->r = (data2->a*data1->r + (255-data2->a)*data2->r) >> 8; ) Obydwie tablice RGBA ale bierzemy pod uwagę alfa tylko z jednej. Mikrokontroler dowolny, prędkość dowolna, sposób napisania kodu dowolny. Podajemy ile cykli wykonywała...
Mając na myśli przydzielanie timerów do konkretnych zadań chodziło mi o przeliczenie potrzeb. Załóżmy, że utrzymujesz metodę zliczania impulsów w czasie 1 s. Timer0 potrafi ich zliczyć w zakresie 0-255. 255 impulsów (licząc 1 na obrót) to zakres od 0 - 15300 rpm. Pewnie wystarczy ale rozdzielczość pomiaru to aż 60 rpm. Stosując 2 impulsy na obrót będzie...
Witam, Przymierzam się do zrobienia wyświetlacza widmowego. Póki co mam prototyp, który działa, ale nie bardzo dobrze. Wydaje mi się, że wiem w czym tkwi problem, ale nie wiem do końca jak go rozwiązać.. Założyłem sobie, że wyświetlacz będzie podzielony na 20 części, czyli mogę wyświetlić obraz co 18stopni(360/20). Czytając informacje znalezione w Internecie...
Witam wszystkich w swoim pierwszym poście :) Wydawało mi się, ze moge znaleźć na kazde pytanie odpowiedź, ale jednak zmuszony jestem do napisania nowego tematu. Otóż walczę z problemem dokładności chyba z miesiąc. Układ co 1min ma załączać na okreslone czasy przekaźniki. Używam kwarcu 14,7456Mhz a układ notorycznie SPIESZY się o ok 0,5s na godzinę....
Timer-1 16bit pracuje jako PWM dwa kanały OC1A i OC1B chyba że chcesz mono wtedy wystarczy jeden kanał . Timer 8bit musisz ustawić tak żeby generował przerwanie z taką częstotliwością jak próbkowanie dźwięku a w przerwaniu ładujesz próbki do PWM . Ok , tak zrobię . Wiesz ja już robię , to chciałbym to zrobić w miarę "fajnie" i , żeby to w miarę też...
Witam. Na forum jestem nowy, ale Atmege8 gryzę już od roku:). Zakładam że czytałeś datasheet'a od Atmega8 i niestety nie udało Ci się zrozumieć.Jeżeli tak to Ci pomogę. Po pierwsze w Atmega8 masz trzy timery/countery: -Timer0 8bit -Timer1 16bit -Timer2 8bit Timer1 i Timer2 możesz wykorzystać jako PWM,gdyż mają wbudowaną taką funkcje. Wiadomo że 16bitowy...
STR73x od STM ma 9 timerów (16bit) i każdy po 2 wejścia, co daje Ci 18 rejestrów liczących częstotliwość, wypełnienie, lub po prostu zliczających impulsy.
hardwarowo nie da się. Możesz natomiast użyć licznika do generowania sygnału PWM: np na przerwaniu od Timera ustawić ustawianie stanu zerowego na porcie, a w pętli głównej programu ustawić warunek porównujący stan licznika z jakąś stałą i jako warunek wyjsciowy dać ustawianie portu w stan wysoki. Jest to jednak dość karkołomne rozwiązanie, w którym...
ok. już kumam. ale mam problem. nie wiem jak ustawic licznik 16bit. chcę mierzyc czas miedzy przerwaniami ale timer dochodzi do 255 i sie zeruje i zaczyna od nowa.
Nie zaparłem się na na tryb 15 tylko, źle to zrozumiałem, że może tworzyć takie problemy. Ustawiłem już na 14. Ustawienia nie były faktycznie zbyt dobre, chodziło mi o pokazanie na screenach co jest między kursorami bardziej i co pokazuje się w prawym górnym rogu "f=". Teraz ustawiłem to tak kodem i na kanale B faktycznie jest 200MHz które postanowiłem...
Tutaj masz waszystko o timerach w '51. http://www.atmel.com/dyn/resources/prod_... W 89s51 są tylko dwa T0 i T1. Zasada jest prosta. W twoim przypadku najlepiej żeby timer pracował jako 16bit. Tryb pracy ustwia się w TMOD. (Masz w opisie bit M1 i M0). Ma zliczać impulsy z zegara systemowego który wynosi Fosc/12. Jeszcze trzeba odblokować...
No właśnie zmieniłem CLKDIV8 na 1 czyli nie zaprogramowane i wreszcie zaczęło działać ale nadal przy ustawieniach TIMERA jakie podałem w programie nie odlicza mi 1s ale około 3s natomiast przy takich ustawieniach: zegar 12MHz prescaler=1, Load Timer1 = 65000 i zliczaniu 200 Dla Timera1 przy taktowaniu 12MHz aby uzyskac 1sec. bez kombinowania zliczania...
Łap. W Tiny13 ma 460 bajtów i nie zajmuje nawet połowy. Zostawiłem Tobie tam jeszcze kilka bajtów RAM a podstawowe funkcje kodujące i repeat masz więc możesz się pokusić o więcej przycisków, albo nawet klawiaturę na ADC ;) To jest takie najkrótsze demo z jedną komendą ON/OFF dla telewizora. [syntax=vbnet]'*************************...
Witam, mam na sprzedaż 10 sztuk: mikrokontroler ARM STM32F107RCT6; Flash: 256kB; 72MHz; SRAM: 64kB; LQFP100 Producent: STMicroelectronics Typ układu scalonego: mikrokontroler ARM Pojemność pamięci Flash: 256kB Częstotliwość taktowania: 72MHz Montaż: SMD Liczba wejść/wyjść: 80 Pojemność pamięci SRAM: 64kB Obudowa: LQFP100 Rodzaj architektury: Cortex...
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ń...
Hmm, właśnie nie rozwiązało to problemu. Racja, używa tych sprintfów do dodawania danych do tablicy, którą mu podaję. Żeby rozwiązać problem dużej biblioteki użyłem printf-stdarg.c z demo użycia FreeRTOS'a. Teraz jest tylko jeden problem, po pierwszym wykonaniu funkcji TaskGetRunTimeStats() dane wydają się być ok, ale po późniejszych procenty przekraczają...
Nie możesz tylko używać Timera2 do innych celów, bo właśnie jest on używany przez RC5 Funkcja GETRC5 domyślnie wykorzystuje Timer0 a nie Timer2. Oczywiście można to zmienić w konfiguracji, jednak autor tego nie czyni. Zatem pozostają mi dwie opcje, albo przestać używać timera0 do odliczania 1s odcinków czasu i zaprzęgnąć do tego timer2 (co może nie...
Z tego wynika że on ustawia timer1 do obsługi zegarów systemowych. Szkoda timera1 do tego celu. Większość AVR ma niewiele 16 bitowych timerów jak timer1 (prawie zawsze to timery nieparzyste). Gdy timery są 4 to do wykorzystania będzie tylko jeden 16bit, bo timer1 zajmuje RTOS.
..Zacząłem robić to programowo bo wyczytałem gdzieś, że nie da się zrobić 3 identycznych wyjść PWM w procesorze z 2 timerami 8 bit i jednym 16bit... A po co czytasz "gdzieś" :?: Przeczytaj dokumentacje swojego proca , a dowiesz się , że to co "gdzieś" napisali , to nieprawda. Poza tym , co rozumiesz przez PWM - Fast PWM , czy Phase Correct PWM :?:...
Czy dla uzyskania przerwania co 0,5s, 1s, lub 2sek musze użyc w przypadku Atmega8 timera1 16bit, czy mogę to też jakoś zrobić na 8-bitowym timerze0? Zakładam częstotliwość zegara 1Mhz-4MHz. (pracuję nad mruganiem diody :) widocznym dla oka przy uzyciu przerwania od timera)
Kto ci powiedział że da się 16 bitów? ja myślę, że nota katalogowa powiedziała, że się da 16 bitów. Chociażby w tym zdaniu: The PWM resolution for fast PWM can be fixed to 8-, 9-, or 10-bit, or defined by either ICR1 or OCR1A. Tak zrozumiałem z noty katalogowej... Mogę się mylić ale, w trybie 15, jest napisane, że wartość "TOP" licznika jest ograniczona...
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
cały dzień siedzę i próbuję się zagłębić w temat. i napotkałem jeden problem ponieważ czas mierzony za pomocą sprzętowego timera może osiągnąć max watrośc 16bit 65535 czyli nieco więcej niż 1/50 sek i jest to stanowczo za mało bo przy małych prędkościach obrotowych dajmy na to 40km/h jest to około 10 Hz (1/10sek) i jest to prędkość z którą zaczyna się...
(...)Chcę przy moim kwarcu 11,0592 uzyskać przerwanie co 1 sek(...) Zwracam tylko uwagę na fakt, że Timer zlicza w dół od wartości ICR1 do zera włącznie (po czym znów od ICR1). Częstotliwość na jego wyjściu wynosi więc 11,0592MHz/256/( ICR1+1 ). A zatem wartość wpisywana do rejestru ICR1 powinna być o jeden mniejsza, czyli wynosić 43199. Oczywiście...
Witam, Dzisiaj zmierzyłem się z tym samym problemem, choć kod na ATTINY13 przerabiałem samodzielnie. Taktowanie wewn. 9,6MHz. Oprócz użycia zaktualizowanych wzorów na obliczanie czasów bitów i pół-bitów trzeba było zwiększyć tolerancję: #define DD_RC5_TOLERANCJA_US 350 Po tej zmianie zaczęło działać poprawnie. Jak widać więc attiny13 ma "pecha" do tych...
Przecież pisze to wyżej:) Ma być CTC, i czy to ważne dlaczego? Ma być użyty dlatego, że Timer 1 to PWM, Timer 3 liczy czas między przerwaniami zewnętrznymi i wpisuje ten czas do wartości TOP Timera 2. Ale timer 2 jest 8 bitowy, wiec ucieka mi pewna wartość bo Timer3 jest 16bit. Timer4 jest również 16bit wiec powinno grac.. Teraz działa to tak, że wartość...
Minimalna częstotliwość jaką da się uzyskać to 0,015Hz. Teoretycznie, nie bawiłem się nigdy w takie rzeczy, no bo po co? Atmega16 taktowana z wewnętrznego oscylatora 1MHz. Prescaler dla timera /1024. Timer1 jako FAST PWM tryb 14 lub 15, daje 16bit PWM. 1000000Hz / 1024 / 65536 = 0,0149Hz.
jak skonfigurować T2 żeby chodził jako 16bit i po przepełnieniu generował przerwanie pod adresem 2Bh kombinuje i nic mi nie wychodzi
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Jaka jest maksymalna częstotliwość pracy kwarca wewnętrznego Atmegi8? ATmega nie ma w środku kwarc u , tylko oscylator RC, to tak gwoli ścisłości. Mam ustawione 4Mhz i kiedy ustawiam prescaler w timerze 16bitowym na 64 (TCCR1B|=1<<CS11|1<<CS10;) tak aby przerwanie spowodowane przepełniniem timera było wywoływane mniejwięcej co 1s 4000000/64/2^16...
The extreme values for the OCR1x Register represents special cases when generating a PWM waveform output in the fast PWM mode. If the OCR1x is set equal to BOTTOM (0x0000) the output will be a narrow spike for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP will result in a constant high or low output (depending on the polarity of the...
co do waitms masz absolutną rację, tylko że program symulatora jest synchronizowany przerwaniami timera. Zwróć uwagę na komendę bitwait flag, set Poniżej podprogram generujący jedynkę. W każdym cyklu pętli procedura czeka aż procedura przerwania generowanego przez timer, ustawi zmienną flag i dopiero idzie dalej. A czy ma być wygenerowany dłuższy czy...
Witam. Chciałem zrobić sobie obrotomierz z wyświetlaczem led na procku AVR. Przeszukując sieć nie natrafiłem na nic takiego, jedynie na elektrodzie jest coś podobnego, tylko na wyższym modelu procka i dodatkowo skomplikowany http://www.elektroda.pl/rtvforum/topic37... Korzystając z tego i mojej nikłej umiejętności skleciłem program. Podczas pracy...
No właśnie nie ma szans na rozjechanie się wartości o 16bit, max error to np 200 po czym układ się wyłączy na błędzie (np gdy silnik utknie). Zastanawiam się nad wykorzystaniem systemu zdarzeń tak aby przechwycic jednoczesnie wartości z obu timerow. Problem jest taki że np silnik jedzie w lewo, impulsy rosną i timer rośnie, w takim przypadku mając błąd...
Bardzo dziękuje za cenne rady. Oczywiście nie myliliście sie. Teraz już wiem o co w tym wszystkim chodzi:). Teraz kod wygląda tak: #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> #include "delay.h" #include "lcd.h" #include "ds18x20.h" //-----ds18x20 volatile uint16_t decicelsius;...
Witam wszystkch. Mam wątpliwości co do odmierzania czasu w Bascom za pomocą Timerów. Sprawa dotyczy procków 51. Proszę o poprawienie mnie jeśli się myle. 1. Timer zlicza w górę od wpisanej wartości do 65535(16bit), Tryb 1. Zadaną wartość ładujemy komendą load timerx, yyyyy 2. Tak więc aby odliczyć 1 sekundę należy np.: 20 razy odliczyć po 50ms więc...
Nie zapowiadaj książek których jeszcze nie ma- za zapowiedź poprzedniej książki Tomka moderator mnie okropnie opieprzył. Mają być uwagi na temat tego co jest a nie co będzie. Wracając do tematu- nowej książki Mirka. Przeczytałem i bardzo mi się podoba. Jest to kontynuacja poprzedniej i początkujący bez przeczytania pierwszej książki niewiele zrozumieją....
Co prawda nie do enkodera, a do czujnika HC-SR04, ale reguła ta sama, pomiar szerokości impulsu. Zrobiłem to na systemie zdarzeń. Kod: [syntax=c]// konfiguracja systemu zdarzeń pod czujnik HC-SR04 EVSYS.CH0MUX=EVSYS_CHMUX_PORTD_PIN1_gc; // źródłem eventu pin PD1 PORTD.PIN1CTRL=PORT_ISC_BOTHEDGES_gc; // ustawienie przerwania na oba zbocza TCD0.CTRLB...
ograniczenie jest takie same, jak dla timera pracującego z wewnętrznym zegarem - 1/24 częstotliwości kwarcu, czyli np. 0.5MHz dla kwarcu 12MHz W dół ograniczenie nie istnieje, czyli od 0Hz :D To jest ograniczenie fizyczne, wynikające ze sposobu "pobierania" sygnału z wejść T0/T1. Wejścia te nie są połączone bezpośrednio z wejściami zegarowymi timerów,...
Ja kupiłem pigułę za 6.34, jeden grosz taniej :-P wysyłka była darmo. MH-Tiny stanowić ma alternatywę dla BluePill. Pod warunkiem że kogoś bardziej kręci dawanie napiwków niż programowanie mikrokontrolerów. Czy MH-Tiny może stanowić dobrą alternatywę dla BluePill? No chyba sobie jaja robisz na Wielkanoc ;-) 8 bit AVR vs 32 bit ARM cortex M3 8 vs 64/128...
Mam takie 2 serwa i postanowiłem wykorzystać je jako silniczki do pojazdu z czujnikiem odbiciowym. Napisałem taki kod [syntax=c] #define F_CPU 8000000UL #include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #define LED (1<<PD7) #define CZUJNIK (1<<PD2) #define SERVO1(1<<PB1) #define SERVO2(1<<PB2)...
Ale to jest CISC 8051 tam niema takiej możliwości. W RISC np AT90S8535 faktycznie można podłączyć kwarc do wyprowadzeń PC7(TOSC2) PC6(TOSC1), bardzo użyteczne bo przy odpowednim wypełnieniu timera można generować przerwania co 1s bez dodatkowych prcoedur (a T2 jest 8bit !). W zasadzie można to uzyskać na 16bit T1 i preskalerze z sygnału taktującego...
Przepraszam - jasne, że us :-) Problem nie leży w samym wydłużeniu czasu - tylko, że SPI przestaje działać - zatrzymuje się dalsze wysyłanie danych. Procesor to PIC32 taktowany 80MHz, SPI taktowane 20MHz w tym momencie. Kod obu przerwań - prosze: SPI - to jest tylko fragment w którym się akurat zatrzymało - wyżej jest tylko odczyt bufora SPI do zmiennej,...
Tak wiem doskonale że ładowanie próbek w określonym czasie przez wait ileś tam da złe efekty, (ale generalnie to działa) ale myślałem o spowolnieniach albo przyśpieszeniu, a nie o pierdzeniu i "cyfrowych schodkach" nałożonym na zupełnie dobrze odtwarzaną muzykę. Pokombinuję teraz z wyzwalaniem timerem. Nie wiem jednak też jak to dokładnie zrobić. Otóż...
Witam Piszę powoli program do pomiaru obrotów na sekundę. Niestety nie do końca działa.Nie wiem co jest źle ale działa tylko wysw2 i pokazuje to co ma,czyli cyfrę1. Byłbym wdzięczny gdyby ktoś rzucił okiem i dał jakąś wskazówkę. ATmega16 8Mhz,wewnętrzny oscylator.JTAG wyłączony. [syntax=c] /*Deklaracje nagłówków*/ #include <avr/io.h> #include...
Przesiadłem się na ten procesor bo jego akurat potrzebuję. W każdym razie, widziałem w filmie, że gościu nie używał żadnego timera do tego (albo o tym nie wspomniał, nie wiem). Czy to nie powinno tak działać, że ADC jak dostaje zegary to przesyła dane do procesora i zebranie kompletu (24 bity) wyzwala callback? Znaczy wiesz ja, nie oceniam broń boże...
zrób to mniej więcej tak: .INCLUDE "m8def.inc" .cseg ; początek segmentu pamięci programu .org 0 rjmp RESET ; wektor ZEROWY (po resecie) .org OVF0addr ; wektor przerwania od przepełnienia Timera0 rjmp Przerwanie_T0 ; i tu właśnie skok do obsługi tego przerwania RESET: LDI R16, HIGH( RAMEND) OUT SPH, R16 LDI R16, LOW( RAMEND) OUT SPL, R16 ; porządek...
Kolego (at)miszcz310 tu nie wykorzystuje się przerwań bo to enkoder magnetyczny z interfejsem I2C który dodatkowo ma tylko wyjście PWM lub DAC. Czyta się go przez odpytywanie co jakiś czas. BTW "Config Encoder = Enabled" to chyba tylko bot mógł napisać ahahahaha :D Trzeba sobie ustawić Timer i odpytywać. Enkoder ma 14bit więc najprosciej jest chyba...
"Buforowany CTC" bo wartość OCR0 po zmianie nie daje efektu natychmiast (jak w normalnym CTC) ale czeka do końca cyklu. W efekcie nie powstaje zaburzenie (swing) przy zmianie wartości OCR0 (czyli czestotliwości). Z tego powodu ten tryb bardziej nadaje się do jakiś wobuloskopo podobnych zastosowań czy do sterowania np przetwornicy. Prawdę mówiąc nie...
Witaj Najwięcej problemów będzie z sinusem, ale na szczęście fmax masz niewysokie. Przy tej częstotliwości sygnału i zegarze procka 8MHz (dowolny AVR z 16bit timerem) osiągniesz rozdzielczość próbki: 409 poziomów/przy korekcji fazy i częstotliwości Przy szybkim PWM rozdzielczość wzrośnie 2krotnie Jeśli chcesz wyższych rozdzielczości to juz musisz używać...
Co sie stało jasne? Ja mam oscyloskop i nic nie jest jasne. Oscyloskop jest jasny ;) Jaki prąd opto? LEDa? Dostatecznie duży. Jak już pisałem, przebieg wyzwalania jest wzorowy - sygnał na bramce kończy się przed dojściem napięcia do kolejnego zera (triac ma ok 300-400us na zamknięcie - a nawet jeśli prąd nie zdąży wygasnąć po przejsciu przez kolejne...
https://obrazki.elektroda.pl/8443317300_... Dzień dobry, Tym razem chciałbym się pochwalić moją dwudniowym projektem jakim jest mały dwu-kanałowy pilocik RC5. Mój tak naprawdę jest tylko w drobnej części, bo sam program napisał "bart-projects" ( https://obrazki.elektroda.pl/5129813300_... https://obrazki.elektroda.pl/9231548100_...
czy też muszę użyć trzech liczników? Procesor mam na płytce typu STM32F100RB. Nasuwa mi się pytanie czy w ogóle potrzebujesz to zrobić na timerach. A nie po prostu użyć przerwań od zboczy na pinach (EXTI). Typowo czas martwy G-M podawany jest rzędu 100µs, czyli nawet jak na wolny F100 jest to mnóstwo czasu i nie ma ryzyka zgubienia impulsów. Co...
Zgadza się- int ma 16bit. Więc dotąd jest dobrze. Gdybyś natomiast używał takaich samych numerów pinów z różnych portów to trzeba by to przerabiać. Ja używam tej funkcji w takiej wersji: unsigned int debounce(void)// funkcja Freddiego Chopina { static unsigned int last; unsigned int port; unsigned int wynik; port = PINC&MASKA_ODCZYT; //odczyt...
STR73x (ARM7) - TQFP 100 - 12x 10bit ADC - 15x 16bit timerów z czego 12 PWM - bootloader - 3x SPI - 4x UART - 2x I2C Jeszcze jest ST32F103x8 (Cortex M3) - LQFP100 - 2x12bit ADC (do 16 kanałów) - 4+6 kanałów PWM - 2xSPI, 2xI2C, 3xUART oba uC dostępne w kamami, jeśli byś się zdecydował na któryś do daj znać to może się uda załatwić coś taniej ;) P.S....
Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
Nie chcę być sędzią w tym poscie ale sadło zwróć uwagę na: TDV napisał: Z jedną uwagą: zacznie zliczać od tego co było TH0 + 66h bo nie modyfikujemy TH0, więc pozosaje bez zmian Jasne dla mnie jest że TDV myśli o 16 bit timerze z TH0 i TL0 sadło napisał : Nie dokładnie. Instrukcja MOV nie dodaje nic do zawartości rejestru tylko wprowadza do niego nową...
mam już od dłuższego czasu problem mianowicie generator częstotliwości dzisiaj bardzo się zdziwiłem gdy nie ładuje do timera wartosci początkowej wszystko jest ok, dioda sobie miga co ok 2 sek i jest spoko gdy natomiast załaduje do timera1 16Bit np 1000 co w zauważalny sposób nie powinno zmienić częstotliwości migania diody ona zaczyna migać jak oszalała...
atmega8 16bit timer komputer 16bit bascom 16bit
hyosung moduł instru thalia ustawić intek
latitude e5470 multimetr aneng
Termostat W3001 - stopniowe gaśnięcie wyświetlacza: przyczyny i rozwiązania Przekładnia kątowa w kantówce 125 mm: zastosowanie i konserwacja