APB jest tak samo taktowane jak przy dzielniku 1 czyli zegarem 84MHz. Jeśli wnioskujesz o tym po taktowaniu timerów należących do APB1, to nie bierzesz pod uwagę takiego automatycznego mnożnika x2 na taktowaniu liczników tych timerów. Zachowanie tego mnożnika (mnoży x2 dla wszystkich ustawień preskalera APB1, oprócz /1) powoduje że dla ustawień preskalera...
Na dobra sprawe w tym przypadku do compare1a chyba moznaby dac 2x15625 czyli 31250 i tym sposobem procka przerwania bedzie krotsza.
Chyba żartujesz? No dobra. Zlituję się. T = 1/f f = 8MHz = 8000000Hz T = 1/8000000Hz =0.000000125s = 0.125us = 125ns.
Teraz masz prescaler ADC ustawiony tak że zegar ADC ma 125kHz. Zegar ADC- a nie inne zegary. Zegar ADC ma mieć 50-200kHz. Jak Ci mniej zależy na dokładności niż na szybkości- można dać zegar ADC na 250kHz. A oprócz tego- możesz zrobić tablicę albo bufor dla UART-a.
W dokumentacji niestety dla licznika 1 nie występuje preskaler 128. Występuje natomiast 256. Zakładając, że licznik pracuje w trybie CTC (WGM12 =1) i zakładając 8MHz źródło sygnału zegarowego (tak jak jest w komentarzu w kodzie) należy wpisać do OCR1A= 31249 oraz ustawić preskaler na 256 czyli CS12=1 A tak na przyszłość ...nota katalogowa. Tam wszystko...
mog123 - mi dziala kod ktory zamiescilem na PWM - tam jest ustawiony prescaler 1024 i wszystko smiga az milo. Sprobuj wrzucic do programu moi przykład i bedzie dzialac :) Ja nie slyszalem o innym sterowaniu serwem jak przez PWM - to najprostrze rozwiazanie. Pozdrawiam
Zgadzam się z przedmówcą. Fusebitów raczej nie dotykaj. Ew. EESAVE. Rdzeń możesz taktować bezpośrednio z RC2MHz (domyślnie włączony), a jeżeli potrzebujesz innej częstotliwości, to możesz uruchomić RC32MHz (wystarczy ustawić bit RC32MEN) i poczekać na RC32MRDY. Przełączenie zegara jest zabezpieczone CCP 0xD8. Jeżeli 32MHZ nie pasuje, to PLL można dostroić...
Pokombinuje wtedy z tymi prescalerami i fuse bitami. Póki co w kodzie i w mkAVrcalculator cały czas mam ustawione na 8MHz, a prescaler ustawiony na 8,natomiast slow SCK mam ustawione na >187,5 kHz Na wyświetlaczu pokazuje mi to samo co Tobie, ale nie słychać ani nie widać w rzeczywistości ,że ta prędkość się zmienia.
Skąd wziąłeś pomysł na wstawki z FLASH->ACR? Czytam RM0401 Jest dedykowany do tego rozdział: 3.4.1 Relation between CPU clock frequency and Flash memory read time Latency zależy od częstotliwości taktowania oraz napięcia zasilania, tak w skrócie. Co do ustawień zegara dla STM32 to warto zapamiętać sobie schemat działania, który wynika bezpośrednio...
Musisz naleźć takie wartości do zliczania przerwań z zegara przy których uzyskasz największą dokładność. Możesz też spróbować użyć rezonatorów zegarkowych: 32.768kHz 4.194304MHz. W nich częstotliwość jest potęgą dwójki stąd łatwo się dzieli do uzyskania 1Hz. Może będą też dokładniejsze ale kto wie.
W sobotę o tej porze mogę się mylić :P W tabelce pisze chyba wyraźnie, że dla tego trybu CTC który ustawiłeś to okres ustala się w OCR1 A i raczej powinieneś wtedy uruchomic przerwanie od OCIE1 A i oczywiście wskazać adekwatny wektor przerwania. https://obrazki.elektroda.pl/2405063000_... Sprawa 1 sekundy jest prosta. (8MHz/256)-1=...
Natomiast jeżeli zamienię OCR1A = 3906,25; wszystko jest ok Jesteś geniuszem jeśli robisz takie sztuczki! Myślę, że ustawienie preskalera na 36,571428571 powinno rozwiązać Twój problem. Albert
Witam, ATtiny13, taktuję go zegarem wewn 128kHz, prescaler 8, TIMER0 generuje przerwania co 1,25msec. W tej procedurze obsługi przerwania mierzę napięcie na ADC2. Dokładność pomiaru nie jest krytyczna. Moje pytanie dotyczy konfiguracji ADC, mam w tej chwili: Config Adc = Single , Prescaler = 2 , Reference = Internal Jaką częstotliwością jest w tej sutuacji...
Korzystam z wbudowanego generatora PMW w wymienionym w tytule mikrokontrolerze. Chcę na wyświetlaczu LCD podawać aktualny czas trwania jedynki. Nie wiem niestety czy wykombinowałem dobry wzór. Prescaler mam ustawiony na 64. Liczę tak [syntax=c] double pomo = 4000000/ (OCR1A*64); pomo = 1/pomo; // obliczam okres pomo = pomo/2; //obliczam czas trwania...
Witam, Kilka uwag: 1. nie skonfigurowałeś trybu pracy timerów (rejestry TCCRxA, TCCRxB) Po resecie timery pracują w trybie "Normal", natomiast w twoim przypadku znacznie lepszy byłby tryb "CTC" 2. ustawiłeś prescaler a 1 a nie na 1024 3. brak zachowania stanu PSW i rejestrów w przerwaniach. W twoim konkretnym przykładzie nie spowoduje to błędu ale już...
Fabrycznie preskaler dzieli przez 6 https://obrazki.elektroda.pl/7385039500_... I w tym mikrokontrolerze zmienia się to w rejestrze MCLKCTRLB . A tu jak to zmienić https://onlinedocs.microchip.com/pr/GUID... I przykład zmiany ustawień preskalera...
Dar.El - mógłbyś nieco szerzej o swoim pomyśle ?? bo jakoś nie zaskoczyłem - skoro ustawi się prescaler na 1024 to przy kwarcu 11.0592 MHz wychodzi inaczej niż 10 ms ...chyba że coś źle liczę .... Dodano po 1 A ja śmiem twierdzić , że kod z 1-szego postu , będzie zmieniał stan na PORTC , co 676 przerwań Tak naprawdę to masz rację ;), ale chodzi mi o...
[syntax=C]void SysTick_Handler(){ SysTick_Config(prescaler_systic);[/synta... W jakim celu w obsłudze przerwania od SysTick, ponownie konfigurujesz licznik? Logika podpowiada, że raz uruchomiony działa i nie trzeba nic więcej robić. Jeżeli po odliczeniu czasu, przyjmujesz przerwanie, przechodzisz do ustawiania i na nowo startujesz licznik, to częstotliwość...
Excray właśnie nad czymś takim myślałem. I nawet poczyniłem wstępne obliczenia po których wyszło mi że timer0 przy kwarcu 8MHz i prescaler ustawiony na 1024 przepełni się po 0,03276800s. Tylko jak wyliczyć ile muszę zliczyć tych przerwań aby wyszła 1s? Moje wyliczenia są kiepskie bo cały czas wychodzą ułamki. Pewnie trzeba ładować jakąś wartość początkową...
Witam, Nic nie przeszkadza w tym, że to bascom. Prescaler jest ustawiony na 64 więc zanim licznik zdąży zwiększyć swoją wartość to uC już załaduje do niego odpowiednią wartość. W Twoim programie jest pare błędzików, które może nie wpływają na dokładność pomiaru, ale są głupie :) konfigurując porty, dla pewności możesz napisać: set ddrb.2 set ddrb.3...
Zobacz w nocie apliacyjnej procka jaki jest optymalny zegar dla adc i taki nastaw. Jezeli jest tak jak w attiny88 to powinien byc w zakresie 50-200kHz W nocie jest 50-200kHz i prescaler ustawiłem na 128 dla 75kHz, jednak fabrycznie zegar ustawiony jest na 9.6MHz/8, porty i opóźnienia widzą zegar 1.2MHz. Nie wiem czy ADC widzi zegar 9.6MHz i zostawić...
Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ?? Ustawić odpowiedni prescaler.Ponieważ timer jest 8'bitowy to przerwanie z prescalerem równym 1 będzie wywoływane 128 razy na sekundę. w M8 na T2 masz dostępne prescalery 1,8,32,64,128,256,1024....
1. fusebity - bity konfiguracyjne procesora - arduino nie daje do nich dostępu (jak każdy inny bootloader) można je sprawdzić tylko z poziomu programatora ISP lub układu ft232rl odpowiednio podpiętego do złącza ISP i obsługiwanego przez avrdude lub, jeśli to gotowe arduino to w dokumentacji w sekcji odnośnie przygotowania płytki i procesora sa podane...
Przecież prescaler również można zmienić. Po za tym. Przecież można ustawić prescaler na CLK/8. A potem zmieniać wartość reload i otrzymasz zakres od 1 Hz, do 1 Mhz. W końcu nie wiem, czy zakres ma być 1 do 1 MHz, czy 1 k do 100 kHz? Dla tego drugiego sprawa jest banalnie prosta. Ustawiam prescaler na wartość CLK/8. DO OCR0 wpisuje wartość 20, więc...
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Hej, Jeśli chcesz płynnie regulować współczynnik wypełnienia to musisz wybrać jeden z modów PWM i wtedy będziesz skazany na jedną z kilku częstotliwości wynikających z zegara systemowego i tego jak ustawisz prescaler, Jeśli chcesz płynnie regulować częstotliwość to wybierasz mod CTC(clear timer on compare) ale będziesz miał wtedy stałe wypełnienie,...
(at)Jakub17 Co do prescalera musisz tylko pamiętać o jednym - w chwili odpalenia licnzika, stan preskalera musisz przyjąć za nieokreślony. Wynikają z teog konsekwencje: - zniekształcenie pierwszego generowanego przez timer impulsu, - wprowadzenie losowego opóźnienia o czasie trwania zależnym od preskalera (np. ustawiony na 64 wprowadza losowe opóźnienie...
Witam. Napisałem program do migania diodami i mam trzy pytania: 1.Czy da się ustawić cały port w stan spoczynku (coś w stylu PORTD = 0)? 2.Czy po każdej komendzie IF trzeba pisać END IF, czy da się to jakoś ominąć? 3.Czy poniższy kod jest poprawny, czy będzie działał? 1. Tak, możesz tak pozostawic. Bascom akceptuje kilka form ustawienia poziomu pinów...
Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler...
Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler...
Źle sobie popatrzyłem tzn miałem źle skomentowany kod - poniżej urywek tego z czego ja korzystam w swoim programie: No to w końcu na ile ten prescaler jest ustawiony? e marcus
Bity CS00 i CS02 od preskalera są w rejestrze TCCR0B, a nie TCCR0A. Masz preskaler na 0 więc timer nie zlicza.
...Na tym procku sprzętowo to w zasadzie nie uzyskasz innych czestotliwości PWM jak kombinacja preskalera i częstotliwości zegara systemowego, ale zawsze możesz wyregulować prędkość tego drugiego poprzez zmianę bitów kalibracyjnych... Niestety , ale nie mogę się zgodzić z powyższym twierdzeniem. Proszę zajrzeć do PDF-ka ATmega32 na str.107 i przyjrzeć...
A przestawiłeś fuse bits? Domyślnie chyba jest ustawiony prescaler przez 8.
Witam, Chciałem napisać program do liczenia 'sekund'. Jest to początek mojej drogi do zrobienia zegara. Problem jest taki, że po 5 minutach zegar spieszy już o 3 sekundy. Gdzie popełniłem błąd? Prescaler ustawiony na 1024, atmega na 8MHz na kwarcu wewnętrznym(może tutaj jest problem?), według informacji które posiadam przerwanie powinno być generowane...
Ustawiłem prescaler na 1 MHz ale jeszcze coś nie tak :( Help me :)
Mozna spokojnie. U siebie (tez Tiny2313) zmieniam podczas pracy nawet taktowanie. Jeśli uC u mnie pracuje na 8MHz bo musi wygenerować rózne wysokie częstotliwości to podczas snu brał 2mA. Teraz przed uśpieniem dobieram się do rejestru CLKPR - Clock Prescale Register. Zasada przestawiania jest podobna jak w WD. Trzeba najpierw ustawić CLKPCE: Clock Prescaler...
O a ja myślałem, że tam się podłącza właśnie napięcie odniesienia :), Ale nawet po zmianie mi to nie działa. Z tego co rozumiem w datashicie jest napisane, że po wpisaniu jedynki na ADSC czyli 6 bit ADCSRA zaczyna się pojedyncza konwersja. Potem czekam aż na tym bicie pojawi się zero które oznacza, że konwersja się zakończyła i mogę sczytywać wartość...
jak zrobić żeby przerwanie od timmera 0 w atmedze8 było taktowane kwarcem zegarkowym(tzn. podłączam kwarc w miejsce xtal 1,xtal2 i skąd timmer 0 będzie wiedział ze ma być taktowany takim kwarcem) i jak dobrać preskaler itd żeby po zapełnieniu licznika odmierzana była 1s używam programmer's notepad. Kwartz ( quartz/kwarc) zegarkowy podłączony do m8...
Ah.. Jeśli napiszemy taki program (który rozjaśnia diodę) $regfile = "attiny2313.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Portd.6 = Output Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portd.1 , Rs = Portd.0 Config Timer0 = Timer , Prescale = 1 Enable Timer0 On Timer0 Software_pwm Enable...
Problem jest rozwiązany. Okazuje się, że Prescaler miałem ustawiony na Auto - dlatego tak długi czas pomiaru (98µs). Kiedy przestawiłem go na Prescaler = 2, to czas zmniejszył się do 10,8µs i to dla kwarcu 8MHz (dla 16MHz będzie szybciej). Dziękuję Ci, że swoją podpowiedzią nakierowałeś mnie na rozwiązanie problemu za pomocą ADC Atmegi a nie...
rejestr TCCR1A nie posiada tych bitów, które chcesz ustawić, zrób to tak: TCCR1B |= (1<<WGM12)|(1<<CS20); Dodano po 3 Program nigdy nie może wyjść poza funkcję main() dlatego instrukcja return nie powinna wystąpić w tej funkcji. Bo w innym przypadku wychodzisz z funkcji main i nie wiadomo co się później dzieje z programem, dlatego napisz...
Zamieszczam kod źródłowy programu chronokomparatora. Jest on napisany w języku GreatCowBasic. Chętni do przeniesienia programu z procesora PIC16F84A na inny procesor, np. na Atmegę, oczywiście mogą to zrobić, ale nie tak prosto. Nie wystarczy zmienić deklarację procesora. Podczas pisania uwzględnić musiałem specyfikę procesora związaną z zegarem procesora,...
To jest fragment który sam dopisałem. W cubemx ustawiłem 2 timer na generowanie pwm na kanale 1,2 i 3, prescaler ustawiony na 0, period 89, do tego dma które miało współpracować z kanałem pierwszym. Taktowanie ustawiłem na 72mhz. Początkowo myślałem że problemy sprawia przerwanie od dma, lecz po usunięciu kodu włączającego dma sytuacja się nie poprawia....
"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...
Musisz ustawić prescaler i wpisać wartość counter0 lub timer0 żeby przerwanie przychodziło co określony czas. Przejrzyj dobrze helpa tam to jest opisane.
Zmieniłem TCNT0 = 0x00; ustawiłem prescaler na 1024 ale dalej nie działa. Według moich obliczeń dioda powinna mrugać co 0,26 sek. Czy mam jakiś jeszcze błąd w kodzie, czy czegoś nie umieściłem?
Masz błąd w ustawieniach prescalera...ustawiając wszystkie bity CS ustawiłeś zewnętrzny zegar jako taktowanie Timera, ustaw na przykład sam CS12 i zobacz czy działa
Np. tak: Ustawiasz zegar na 1Mhz W main() ustawiasz: Zezwolenie na obsługę przerwań Zezwolenie na obsługę przerwań od Timer0 (albo Timer2) Prescaler na 1 Sprawdzenie jakiejś flagi A w obsłudze przerwania ovf od Timer0 (albo 2): Do rejestru Timer0 (albo 2) wpisujesz 156. Wtedy przerwanie występuje co 0.1ms i ustawi jakąś flagę. Wtedy w main() decydujesz...
Myślę że ustawienia programowe powinny być OK ponieważ bazuję na bibliotece z książki. Jednakże przy obliczeniu mikrosekundy pojawia się: ir_micro_s(num) ((num)*(F_CPU/1000000/PRESCALER)) gdzie PRESCALER ustawiony na 8 (zdefiniowane sa stosowne rejestry w zaleznosci od wyboru prescalera) Pytanie czy odczyt F_CPU jest prawidłowy (z tego co pojmuję to...
16MHz A mam 3 razy bo nie wiem w kt orym miesjcu mam blad Przy 16 MHz i prescaler ustawiony na 1024 nie jestes w stanie odmierzyc czasu 1 sekundy uzywajacTimera0 bez zliczania odpowiedniej ilosci przepelnien nawet bez preload czyli na 'pelny zegar'. Maxymalny czas jaki jestes w stanie odmierzyc to ok 16 ms (dokladnie 16.384 ms). Druga sprawa; to jak...
TCNT0 możesz przypisać określoną wartość po przepełnieniu po to by uzyskać dokładną częstotliwość przerwania, a nie wynikającą z częstotliwości i prescalera Uzyskanie dokładnej częstotliwości poprzez modyfikowanie wartości rejestru TCNTn daje niepewne rezultaty, czyli czasami to zadziała zgodnie z oczekiwaniem, czasami nie. Wszystko zależy od tego,...
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...
Tak jest !!! tak jak napisałeś ! Z praktyki uzywałem tylko właczenia, ( nie wykorzystuję trybu idle , więc nie musiałęm wyłączyć ), A jeszcze jedno nie polecam resetować watchdoga w obsłudze przerwania timera -> program może być w " malinach" a przerwania będą się wykonywac i resetować watchdoga, ja umieszczam je patrząc jak wykonuje się prog. Jeśli...
TIMSK = 0x01; sei(); while(0) { if (TIFR & 0x01) PORTD = 0xFF; } Jak zrobisz w ten sposób, to warunek if (TIFR & 0x01) nigdy nie będzie spełniony. Nie masz procedury obsługi przerwania, więc wywołane zostanie przerwanie "__vector_default", które nic nie robi, poza tym, że zeruje flagę, którą chcesz sprawdzić....
Wiem o tym, mi chodzi to że muszę odczytać temperaturę z DS18B20 i wyświetlić ją na stronie, chce się tym odczytem zająć co kilka sekund w przerwaniu żeby nie tracić czasu podczas wysyłania strony. Skoro wiesz to dlaczego pytasz o co innego niż potrzebujesz? Pytałeś o miganie diodą w trybie CTC i taką odpowiedź dostałeś. Jeżeli chcesz cokolwiek zrobc...
Normalnie na początku jest reset i to kasuje zmiany programowe. Więc też nie powinno się dać w ten sposób zablokować. Też tak myślałem, ale w praktycznych próbach wyszło że jednak się da zablokować kostkę programowo. Ściślej mówiąc, da się programowo zmienić konieczne warunki programowania, by wyszły poza możliwości USBasp i może też innych programatorów....
Dla F_CPU ja bym ustawił: #define PRESCALER 207 #define BAUD_SCALE 0
| = (1<<CS00). Jednak ja wciąż polecam użyć Timera1 i jego trybu CTC, wtedy na wyjściu OC1A. Nie potrzeba wtedy obsługiwać żadnego przerwania, ustawiasz wyjście OC1A w tryb TOGGLE ( rejestr TCCR1A ) i będzie ono zmieniało stan w rytm przepełnień timera. A timer będzi liczył (przez prescaler jaki ustawisz) do wartości jaka sobie ustawisz w OCR1A....
zalezy od jakosci kwarcu i od warunkow w ktorych bedzie pracowal ... napisz moze dokladnie oznaczenia i gdzie ma rpacowac ten kwarc Kwarc ma pracować z ATmega8. To jest zwykły niski kwarc w metalowej obudowie za pare groszy. Jedyne oznaczenie jakie na nim jest to 12.000 Pytam bo zrobiłem prosty programik co sekunde zapalający i gaszący diode i w prównaniu...
jest taki prosty wzór: TOVck = (F_CPU/MAX.VAL)/PRESCALER gdzie: F_CPU - częstotliwość podłączonego kwarcu MAX.VAL - maxymalna wartość timera (dla 8-mio bitowego to 256) PRESCALER - wartość na jaką ustawiono prescaler przy pomocy odpowiedniego rejestru Timera (odsyłam do tabelki w manualu ;)) i TOVck - to ilość przerwań na/w ciągu jednej sekundy...
Jeśli podłączysz zewnętrzny kwarc, musisz zmienić fusebity, dzięki czemu uC będzie chodził z tego kwarcu - to będzie główne źródło taktowania. Dalej po prostu wybierasz prescaler /1: timer1 zawsze pracuje w oparciu o to samo źródło co rdzeń (z wyjątkiem gdy zlicza impulsy z wejścia IC1) więc nie występuje problem wyboru źródła. Wybranie prescalera /1...
Stwierdzenie dotyczące RTC wynika z tego, że timer2 może pracować asynchronicznie z zewnętrznym kwarcem zegarowym. Można mu podać 32768Hz, t2 będzie takim zegarem (lub wynikającym z działania prescalera) taktowany - to jak wykorzystasz timer zależy od ciebie: możesz np ustawić go w trybie CTC przy prescalerze /128, wtedy będzie się przepełniał równo...
Witam. Przykładowo próbuje uzyskać częstotliwość PWM 42kHz, kod: [syntax=c] #include "stm32f4xx.h" int main(void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //podpiecie zegara dla Timer2 //PIN10 CH3 GPIOB->MODER |= 1<<21; GPIOB->AFR[1] |= 1<<8; TIM2->PSC= 101; //prescaler TIM2->ARR= 101;...
A BTW, zamiast robic takie dziwne kombinacje nie lepiej ustawic prescaler timera tak, zeby timer sie nie przepelnial p[omiedzy impulsami, a potem w przerwaniu wywolywanym zboczem zapamietywac stan. To bedzie pare linii kodu. Nie zapominaj tez o resetowaniu prescalera, inaczej pierwszy pomiar bedzie losowy.
Witam ponownie. Z braku czasu odłożyłem budowę tego zegarka i teraz postanowiłem do niego wrócić. Mam pytanie odnośnie ustawienia timera. Jaki ustawiłeś prescaler? Ustawiasz na szybkie przerwania i je zliczasz czy wpisujesz wartość do timera dokładnie taka, zeby wystąpiło 240 przerwań na obrót? Próbowałem z wpisaniem wartości ale niestety wyszło około...
Zauważ, że w Twojej konfiguracji TIM5 działa jako downcounter. W tym przypadku kaskada timerów to przerost formy nad treścią. W zależności od tego, jakiej rozdzielczości potrzebujesz do pomiaru czasu, możesz odpowiednio ustawić prescaler. Tylko należy pamiętać, że jest to rejestr 16-bitowy.
Dalej tiny jest na pokladzie. W programie jedynie prescaler pwm jest ustawiony na 8. Chce dopisac wiecej opcji w Select Case, aby bylo wiecej przyciskow pilota obslugiwane. Ponizej komendy 50 dziala wszystko elegancko. Powyzej tego nie reaguje.
Tych kroków jest trochę więcej, na przykład włączenia zegara dla domeny RTC. Poniżej daję kod do analizy (STM32G0xx) i czekam na krytykę. [syntax=c]/** * Brief This function configures RTC. * Param WakeUp period * Retval error code (0 = no errors) * PrereqSysTick serves as timebase for timeouts */ __INLINE uint8_t rtcInit(uint16_t timeToWake) {// set...
Tak są opisane 2 przypadki: 1. Jeśli prescaler APB jest ustawiony na 1, to zegar timera jest ustawiany na tą samą częstotliwość co APB 2. W przeciwnym przypadku są mnożone 2 razy niż częstotliwość APB U mnie APB jest równe 24MHz, chyba, że coś nie tak rozumiem.
https://obrazki.elektroda.pl/3029878300_... Witajcie moi drodzy Oto trzecia część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie najpierw krótko omówię różne konfiguracje oscylatora PIC18F2550 - oscylator wewnętrzny (internal oscillator), zewnętrzny (zegarowy...
Bez ustawienia fusebitów ruszył ale zajrzę jeszcze do nich... faktycznie spojrzałem jeszcze raz na wyprowadzenia obydwóch atmeg i jest tak jak mówicie.. już działa a płytka testowa powoli zalicza się do odstrzału :D A w sumie jeżeli działa to znaczy ze w fusach nie muszę grzebać bo prescaler jest ustawiony wiec powinno być ok ?? P.S. za ten tekst o...
zapominasz ładować konkretną wartość do licznika przed jego uruchomieniem. obliczasz ją (w podstawowym trybie) mniej więcej tak: obliczasz czas jednego cyklu 1/fclk np dla 1Mhz 1us bierzesz teraz czas, jaki chcesz odliczyć, i dzielisz go przez czas jednego taktu, dostaniesz wtedy ilość potrzebną do zliczenia.np 0,020s/0,000 001 = 20000 jak wiesz licznik...
Niestety, program działa tak jak zakładam dopiero, kiedy preskaler jeszcze pomnożę x8 (56) a dzielnik szyny APB1 ustawię na 8 tak jak poniżej: Nie wgryzałem się dokładnie w Twój opis, ale obstawiam standardowy problem przy pierwszym podejściu do timerów, którego rozwiązanie znajduje się pod obrazkiem "Figure 8. Clock tree", w rozdziale "7. Low-, medium-,...
Witam, mam nastepujacy problem - napisalem timer(uzywajac timera 0) do kontroli czasu w programie(glownie serw). Ustawilem prescaler na 64, co przy kwarcu 16MHz daje 250kHz, czyli jeden takt timera odlicza 1/250000 s. czyli 0,000004s. Potem "timer pomocniczny" sumuje wszystkie przepelnienia do 1 sekundy (czyli tysiac razy). // Ustawienie licznika 0...
Uczę się pracować z ADC. Procek Attiny26. Podłączenie: - Vcc = 5V - AVcc = 5V - PA0 (ADC0) - wejście - PORTB - wyjście. Program napisałem na podstawie tutoriala. Obecnie chcialem zrobić termometr na dwóch wyswietlaczach LED i LM35. Program nie działał w ogole jak powinien. Po dłuższym dochodzeniu okazało się, że przy wyłączonym procesorze na wyjściu...
Kolego (at)emarcus autorowi tematu raczej chodziło o attiny 13 bo na atmega8 kod jest już na poprzedniej stronie piotrva który poprawił po mnie kod z atmega16. Widziałem to.... Mój post nie miał na celu tworzenia czegoś co jest gotowe, lecz zwrócic autorowi uwagę na koncept konfiguracji timerów i koniecznośc konsekwentnego edytowania odpowiednich rejestrów...
Witam. Od 3 dni siedzę już nad programowym PWM. Wykorzystuję do tego przerwanie na timerze, ale coś nie działa tak jak powinno otóż jak nie mam ustawionego stanu 1 na ostatnim bicie portu to PWM dziwnie się zachowuje. //Includes #include "avr/io.h" #include "inttypes.h" #include "stdio.h" #include "util/delay.h"...
Jeżeli chcesz wykorzystać Watchdog jako rodzaj timera, to w rejestrze WDTCR powinno się ustawić bit WDTIE. Ponadto za pomocą bitów WDP3...WDP0 należy ustawić prescaler Watchdog'a. Z tego wynika co jaki czas będzie przerwanie. Jeżeli np. potrzeba 8 s, to ustawić należy WDP3 i WDP0, czyli powinno być: https://obrazki.elektroda.pl/1370064900_...
Zgadza się, aby policzyć ile czasu zajmie wykonanie kodu potrzeba kodu maszynowego (napisałem to w pierwszym poście). Ja będę pisał w C i tylko zobaczę sobie na listing programu gdzie jest to przetłumaczone na assemblera i wprowadzę odpowiednią poprawkę (zmiana wartości timera) do kodu w c. Chce precyzyjnie odmierzać czas do próbkowania wejścia z modułu...
Witam wszystkich dziękuję za zainteresowanie. Pomogliście mi z próbkowaniem. Bascomowa komenda Getadc(x) jest uniwersalna, ale przez to ma swoje minusy. Getadc(x) zawsze ustawia najpierw MUX a potem robi dwa pomiary ADC pod rząd i pierwszy odrzuca. Widać że mierzysz tylko z jednego kanału. Możesz więc sprawę mocno przyspieszyć. Wystarczy, że raz tylko,...
Witam! Poniżej prezentuję najprostszy chyba z możliwych listingów odczytujący wskazania ADC i wysyłających je do PC przez RS232. Problem w tym ze nie da się wysłać nic z częstotliwością powyzej 4800 bps. zamiast konkretnych wartości jakieś krzaki przychodzą. ' osiągnieta rozdzielczosc: 5V/1024= 0,00488V= 4,88mV $regfile = "m8def.dat" $crystal...
Witam, mam problem. Próbuję uruchomić, ale odczytuję ciągle same zera. Oto fragmenty mojego kodu: DDRA=0x00; //port A jako wejście PORTA=0x00; //bez podciągania .... ADCSRA=0x85; //wpisanie 1 na Enable i ustawienie prescalera ADMUX=0x00; //wybieram kanał 0 ADCSRA=1<<ADSC//uruchamiam konwersję while(bit_is_set(ADCSRA,ADSC)); //odczekuję do końca...
Wyjście z CCR3 włączasz w rejestrze CCMR2, bity mają w nazwach CCMR2_OC3xx. No i timer wystarczy włączyć jeden raz, a nie trzy. Prescaler też wystarczy ustawić jeden raz. Paru rzeczy jeszcze nie włączyłeś w tym timerze. Obejrzyj przykłady PWM na STM32F0 w Elektronice Praktycznej.
Cześć. Mam taki problem napisałem sobie program który steruje ładowarką. Jeśli ustawie mu: cksel=0100 , sut=00 to nie działa program - nic sie nie dzieje. a jeśli ustawię: cksel=0100 , sut=10 wtedy działa ale źle liczy czas Program robiony na szybko wiec może ma gdzieś błąd ewentualnie co poprawić w nim?? $crystal = 8000000 $regfile = "m8def.dat"...
\ 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...
Dziękuję za wszystkie porady, udało mi się już wszystko zrobić. Kontaktron działa jak należy, ustawiłem dość duży prescaler, więc drgania styków nie są wyłapywane przez mikrokontroler (przy małym prescalerze faktycznie dało się zauważyć drgania styków). Pozdrawiam
Ja uczyłem się na poniższym kodzie: W tym kodzie jest mały błąd, a mianowicie wartość wpisana do rejestru OCR1A, powinna wynosić: crystal/prescaler-1
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
Program jest rozbudowany i złożony z kilku plików żródłowych i nagłówkowych ten main był tylko przykładowy. Rozchodzi mi się głównie o procedurę liczenia, tak jak radził kolega wrzuciłem ją w procedurę przerwania [syntax=c] ISR(INT0_vect) // wykryj przerwanie { sreg = SREG;//save global interrupt flag cli(); //disable interrupt czas = TCNT1/192;//zczytaj...
crazy_phisic : Zauważ, że przebieg na wyjściu to połowa częstotliwości przepełniania timera. kaczy1n : Moja propozycja, to ustawić prescaler na 1 i nic nie ładować do timera - będzie się przepełniał co 256 cykli zegara. No i należy wybrać poprawne źródło zegara.
Używam programatora na lpt i programu bascom-AVR. Szukałem przeczytałem kilkanaście postów o fusebitach i wszyscy piszą o innych programach pony png, avr studio itd. Chyba większość programuje mając programator pod usb. Jak to zrobić w bascomie programie bascom- avr. Rozumiem ze trzeba zmienić ustawienia fusebitow aby odblokować zewnętrzny rezonator...
Od razu mówię, że nie jestem asemblerowcem :-) Oto dane potrzebne do obliczeń: Rezonator ma częstotliwość 8MHz Prescaler ustawiony na 1024 Po przepełnieniu, do timera ładowana jest wartość 256-125 (ale za pierwszym razem liczy od 0) W rejestrze r21 zrealizowany jest licznik, który liczy od 125 w dół (pierwsze zliczenie jest od 0 w dół - wykonanych będzie...
Do czegu służy prescaler w adc? Czy do generacji czyli zliczania ile impulsów do przerwania? Jak duże napięcie można podać na wejscie do pomiarów? Ustawienie napiecia referencyjnego int1v? Do czego służy i co się zmieni jak przełaczymy na refa (do którego pinu jest podłaczone te napiecie referencyjne z portu refa)
Witam, Nie będę zakładał nowego tematu. Mam podobny problem. Atmega 2560 + 16Mhz. Przy tym ustawieniu timera przerwanie powinno być generowane co 0,5s. Natomiast jest generowane co 1s. 256/16000000= 16us*65536=1,048576s 65536-31250=34286 co daje 0,5s [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Portg.5 = Output : Portg.5 =...
Drodzy Koledzy!: mam taki oto problem z tym odbiornikiem.co kilka dni znika fonia,ale osd reguluje i w głosnikach jest minimalny szumek.niekiedy pomaga przełaczenie na AV np:satelita lub kilka razy AV-program i odwrotnie,ale bywa,ze jednocześnie nie można oglądać satki,bo na wszystkich funkcjach AV - DVD - FRONT i S-VHSjest ten sam program z anteny...
[syntax=c]volatile uint8_t num[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; volatile uint8_t time[6] = {0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}; volatile uint8_t d = 0; volatile uint8_t counter = 0; volatile struct tm* t = 0; volatile uint8_t hour, min, sec, day, month, year;[/syntax] Atmega8, chcę zrobić w głównej pętli obsługę przycisków,...
Praca na wewnętrznym generatorze ustawiona jest fabrycznie. Nie pamiętam dokładnie ale chyba na 8MHz. Dodatkowo trzeba pamiętać, że ustawiony jest prescaler tej częstotliwości przez 8 (nowość). Tak więc ATTINY2313 pracuje domyśnie chyba na 1MHz. Parametry można odczytać poprzez programator Bascom'a. Do tej pory programowałem tylko 1 uC tego rodzaju...
Tu masz 2 prescalery jeden do taktowania cpu i reszty czyli możesz ustawić częstotliwość od 1MHz do 8 i tą częstotliwość możesz podzielić jeszcze prescalerem w układzie zegarowym . zakładam że tą pierwszą ustawiłeś na 8MHz teraz prescaler timera na 64 i timer 0 ma pojemność 256 wobec tego czas potrzebny do zliczenia i przepełnienia zegara to 8000000/64=125000...
Nie wiem jak w Timerze ustawić prescaler do Atmegi8a, tak żeby przerwania były co 1 sekundę ; < Jakie jest taktowanie atmegi? Druga sprawa w projekcie jest również taki schemat: http://extremeelectronics.co.in/avrproje... nie wiem jak mam zaintepretować tą strzałkę do góry która idzie od buzzera, gdzie to mam podłączyć? Strzałka...
prescaler atmega prescaler bascom prescaler atmega8
przekaźnik grzałki candy przekierowanie portów cellpipe buderus rezystancja
klimatyzator galanzu klimatyzator galanzu
Docieranie pilarki spalinowej NAC CST45-40-01AC-V krok po kroku Czy odłączyć wentylator CPU przed czyszczeniem?