Tak, przy czym jeśli ISR jest wywoływany co 1ms, to wystarczy po prostu inkrementować zmienną timer0_milis, bez tych cudów, które masz.
Ja bym to jednak zrobił tak jak wynika z twojego opisu programu bascomowego. Czyli timer na 8kHz, w przerwaniu timera odczytujesz ADC i startujesz kolejną konwersję. ADC musi być tak ustawiony, aby skończyć konwersję przed kolejnym przerwaniem timera, co nie jest problemem. Dzięki temu masz gwarancję, że przy każdym przerwaniu timera (z wyjątkiem pierwszego)...
To czy ktoś się nauczy czy nie to już indywidualna sprawa każdego z osobna - nie mogę oceniać Twoich umiejętności nie znając Cię... A Bascom, jak sam widzisz, jest naszpikowany błędami. Jedne znikają, inne się pojawiają... Ba, raz nawet program kompilowany w 1.11.9.8 nie działał po kompilacji 2.0.7.6 - trzeba było modyfikować logikę, mimo poprawnej...
na podstawie flagi z przerwania INT2 na początku pętli głównej wchodzić w uśpienie. Ale pętla główna jest wykonywana powiedzmy 0.5 sek. Co sekundę wykonywane jest przerwanie od Timer2. Więc procesor będzie w uśpieniu tylko ok. 50% czasu. Ale problem z długim wykonywaniem się pętli głównej wystąpi tylko za pierwszym razem po zaniku zasilania (ustawienie...
Witam! Potrzebuję zmienić TIMER1 do obsługi PWM na TIMER2 ktoś pomoże? ATMEGA32 BASCOM
Jak kolega umie na 8 bitach pokazać 77.125 to będzie się dało;) Nie da się.
Witam Mam problem z RTC w atmega32. Podłączyłem kwarc 32,768kHz jak datasheet nakazuje. Jeśli Timer2 skonfiguruje następująco: [syntax=c] TCCR2 = 0b00000001; ASSR |= 1 << 3; TIMSK |= 1<<6; [/syntax] To przerwanie [syntax=c] ISR(TIMER2_OVF_vect) { TCNT2=255; ... } [/syntax] Wykona się tylko 8192 razy na sekundę zamiast 32768. Natomiast jak...
Tylko proszę mi podpowiedzieć, czy dobrze rozumiem nazwy kanałów i ich timerów Timer0 - Pwm0 Timer1 - Pwm1a, Pwm1b Timer2 - Ocr2
w nowym kodzie robiłem toglebit na porcie na którym była kiedyś IRDA... a może nie może tylko na porcie np. portc.2 myślałem że o to chodzi. nie dokładnie to określiłem w zdaniu albo pomieszałem nazwy funkcji rzeczywiście.. gdzieś się zapodziało.. musiałem skasować przez pomyłkę.. teraz działa poprawnie wielkie dzięki.. Dodano po 9 za to przyciski od...
Poczytaj o preskalerze tego Timera oraz o trybie CTC Po co mi tryb CTC? Doczytałem na stronie 329, że muszę ustawić prescaler=128; Więc teraz, czy taki kod: [syntax=c] int main(void){ ASSR |=(1<<AS2); //zmiana źródła zegara licznika na kwarc zegarkowy TIMSK |=(1<<TOIE2); //zezwolenie na przerwanie po przepełnieniu TCCR2 |=(1<<CS22)|(1<<CS20);...
To co dawid512 napisał jest najprawdopodobniej na atmega32. Musisz poczytać dokumentację i zmienić ten kod, gdyż timer0 na atmega8 ma trochę mniejsze możliwości. [dodano] Można też skorzystać z timer2, jego obsługa będzie łatwiejsza.
Ale mieszasz. Ustawiłeś dwa cykliczne przerwania i dziwisz się, że coś nierówno miga. Tu w avr nie ma wielowątkowości sprzętowej i jedno przerwanie przeszkadza drugiemu. Przenieś i wyłącz to przerwanie to co masz w ISR(TIMER2...) do ISR(TIMER1...) . Idea programowego PWM i timerów jest właśnie w tym aby działało wszystko pod jednym wspólnym cyklicznym...
I teraz pierwsze pytanie: czy da się zliczać impulsy z zewnątrz używając Timer2? Wtedy bym podpiął do nóżki TOSC. The Oscillator is optimized for use with a 32.768 kHz watch crystal. Applying an external clock to the TOSC1 pin may result in incorrect Timer/Counter2 operation. Jak źle (lub dobrze) jest z tym w praktyce nie wiem. Tylko jeszcze zostaje...
teraz jak widać 2 sekundy - manipuluję wartością przepełnień zmiennej Licznik_sd - pomiędzy 58000 a 60000 Załadowanie wartości 6 do Timer2 powinno się odbyć tylko na początku ? Config Timer2 = Timer , Prescale = 64 ' 1 sekunda = 500 Timer2 = 6 On Timer2 Czas '250 x 8us = 2 ms , 256 - 250 = 6 Enable Interrupts Enable Timer2 Z Atmega32 nie miałem takich...
Czy i który timer wykorzystuje 1wire. Chce wyorzystać jeden timer do cyklicznych przerwań, ale jak wykorzystam timer 0 lub timer 1 wysiada transmisja 1wire. Timer2 wykorzystuje zegar czasu rzeczywistego wewnetrzny. ATmega32. Pozdrawiam ! PL
Możesz także wykorzystać kwarc tzw zegarkowy 32,768kHz podłączając go do Timer2 (piny TOSC1 i TOSC2) w trybie asynchronicznym.
Atmega32. Pytanie jest konkretne Timer2 z PWM na wyjściu PB3 zamienić na dowolne inne. Chodzi mi o rozwiązanie programowe. Na razie zrobiłem to na TOGGLE i działa ale w wartościach skrajnych pwm przyjmuje 50%.
Timer2 jest potrzebny do zapisu na karcie SD Do czego konkretnie?
Dodałem to tylko dlatego aby sprawdzić gdzie i kiedy resetuje się procesor. Bez łańcuchów nie wiedziałem gdzie i co się dzieje bo otrzymywałem tylko ATMega32 UART test Dokonuje pomiaru ATMega32 UART test Dokonuje pomiaru ATMega32 UART test Dokonuje pomiaru TIMER2 Liczy mikrosekundy jak długo trwa echo z HC-SR04 i po jego ponownym uruchomieniu następuje...
A gdy by taktowanie było 12MHZ ? Albo jakaś alternatywa, czy tylko w atmega32 można użyć tych 4 nóżek do sterownia serwem ? Bo w programie docelowym będzie jeszcze UART i timery programowe: [syntax=c] void soft_timers_init( void ) { TCCR2 |= (1<<WGM21); TCCR2 |= (1<<CS22)|(1<<CS21)|(1<&l... OCR2 = 108; TIMSK = (1<<OCIE2);...
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...
Próbowałem przerobić wartość prescalera na 1024 tak aby timer2 dokładnie obliczał czas.Niestety dalej piosenki są w spowolnionym tempie. Proszę o pomoc :)
Tu nie ma żadnej filozofii. Ja co prawda programuję na ATmega16 i procedura wygląda tak: void generator_PWM(unsigned int wypelnienie) { TCCR2 =0x69; //tryb FAST PWM, bez preskalera, zeruj OC0 gdy porownanie = TRUE; f = 16M/256 = 62,5kHz OCR2 = wypelnienie; //wartosc porownywana 0..255 } Jak zrobiłeś PWM na ATmega32 to z tego co wiem...
Ok, wracając do tematu to spłodziłem coś takiego i wygląda na to, że działa. Mcucr = &B00000100 On Int1 Pomiar_impulsu Pomiar_impulsu: If Pind.3 = 0 Then Start Timer2 Else Stop Timer2 Czas_impulsu = Timer2 Timer2 = 0 End If Return Dzięki za pomoc Piotr
ATMega32 to moim zdaniem dobry wybór, dużo pinów - możesz dużo ledów podłączyć ;) I2C, SPI, UART, Timery w tym ważny Timer2 więc wszystko co potrzeba, by zacząć miło zabawę z tą rodzina uK. Albo to samo z USB czyli ATMega32U2 ..4.
(at)nowyARM W zupełności się zgadzam. Tyle, że w przypadku atmegi 8 jest jeden problem - brak ICP. Cała rodzina tych procków ma ICP. Od Atmega8 do Atmega32: "PB0 ICP1 (Timer/Counter1 Input Capture Pin)" dla A8.
Zastanów się nad negacją warunku w: Bit 1 – TCR2AUB: Timer/Counter Control Register2 Update Busy When Timer/Counter2 operates asynchronously and TCCR2A is written, this bit becomes set. When TCCR2A has been updated from the temporary storage register, this bit is cleared by hardware. A logical zero in this bit indicates that TCCR2A is ready...
Witam. Zwykły kwarc 32K. Usypiasz procesor i możesz go budzić na żądanie w określonym czasie. Jak wszystko pójdzie dobrze uzyskać pobór prądu na poziomie 1uA w stanie uśpienia.
Pierwsze pytanie - czy w inny sposób udaje ci się coś wyświetlić na LCD? I drugie - tam jest funkcja dodająca transakcje, która przy okazji włącza timer. Poprawiłeś ją? Chodzi o tą: [syntax=c] bool LCD_PutText_B(uint8_t x, uint8_t y, char *txt, LCD_trans *buf, bool autodel) { buf->cmd=LCD_Text; buf->Ready=false; buf->SelfDel=autodel; //Czy zwolnić pamięć...
Te procesory się aż tak nie różnią. Dodatkowe funkcjonalności pinów nie przeszkadzają w niczym dopóki ich nie uruchomisz. (PCINT - Pin Change Interrupt trzeba wiedzieć jak włączyć). Jest duża różnica jeśli chodzi o Timery właśnie. Mega8 ma na przykład tylko jeden rejestr Compare dla Timer2 dlatego inaczej się nazywają. Opisałem to u siebie na stronie...
Usunąłem tą funkcję z przerwania oraz zmieniłem %d na %c więc teraz mam zamiast liczby oznaczającej znak, jej faktyczny znak. Ale gdy wysyła pojedyńczą literek wszystko jest ok ale gdy chce wysłać więcej np ciąg znaków "zxcvbnm" to dostaje tylko 5 pierwszych znaków i nie wiem co jest nie tak. Bo jak rozumiem to przy każdym przerwaniu mogę odebrać 1...
"Ktoś ma jakiś pomysł, żeby to rozwiązać? Może ktoś ustawiał RTC na innej atmedze i mu działał?" Kiedyś robiłem na Atmega32 , i działało . Rożnica taka , że w A32 timer pracujący z oscylatorem zewnętrznym to Timer2 ASSR = 1<<AS2; TCCR2 = 1<<CS22 | 1<<CS20; TIMSK = 1<<TOIE2;
jeżeli chodzi o fuse'y to zajrzyj [url=http://fusecalc.engbedded.com]tutaj... Wybierasz rodzaj procesora i później odpowiednio jakie opcje Ciebie interesują. PAMIĘTAJ, sprawdź wszystko 3 razy, bo jak sobie usuniesz możliwość programowania proca przez SPI, lub reset (akurat przy Twoim procku to nie grozi) to uC idzie na półeczkę póki HVProga sobie nie...
Korzystając z tego kursu [url=http://maxembedded.com/2011/06/avr-... nie moge uzyskać migania diody przy modyfikacji kodu: [syntax=c]int main( void ){ DDRB = LED1; PORTB = LED1; TCCR2B |= (1<<CS21)|(1<<CS22); TCNT2 = 0; TIMSK2 |=(1<<TOIE2); sei(); while(1){ } } ISR(TIMER2_OVF_vect) { if (TCNT2 >= 10) PORTB &=...
Witam, Mam problem tego typu. Podaję na wejście T1 i T0 Atmega32 impulsy o częstotliwości około 20Hz do 100Hz i z różnym wypełnieniem. Jeżeli chodzi o pomiar częstotliwości to nie ma problemu bo zliczam impulsy przez ściśle określony czas ( generowany przez Timer2) i zczytuję rejestr TCNT0, natomiast czy ktoś mi podpowie jak zmierzyć czas trwania impulsu...
Timera2 akurat na razie nie masz. To znaczy masz go w procesorze, ale nie w kodzie programu. Jak już to tak: Config Timer2 = Timer , Async = On , Prescale = 128 On Timer2 Timer2_int Enable Timer2 Timer2_int: Incr Sek If Sek > 59 Then Sek = 0 Incr Min_l If Min_l > 9 Then Min_l = 0 Incr Min_h If Min_h > 5 Then Min_h = 0 Incr Godz_l If Godz_l...
Mam problem z tym call i ret mam taki kod: ldi R16, 0x00 Co jest źle? W przypadku procesorów AVR zawsze na sam początek musisz ustawić stos w odpowiednim miejscu w pamięci programu. Praktycznie każdy program więc zaczyna się (dla atmega32) od rozkazów ustawiających stos. Za manualem str 45: Address Labels Code Comments $000 jmp RESET ; Reset Handler...
Jestem studentem, i na laboratoriach z mikrokontrolerów dostaliśmy do wykonania następujące zadanie: Zliczać w timerze ilość kliknięć przycisku i po zarejestrowaniu 5 kliknięć zapalić diodę. Zdaje sobie sprawę że timery nie powinny być w takim celu. Największym problemem przy tym prostym programie są drgania styków. Postanowiłem rozwiązać ten problem...
Witam! ATmega32 16MHz jako slave odbiera dwa bajty po SPI 1MHz ( 15cm taśmy 10 żyłowej )od mastera LPC2148 . Jeżeli jest włączone tylko SPI, a inne przerwania są wyłączone jest wszystko dobrze. Jeżeli włączę przerwanie od timera2 generowane co 100us to zdarza się że atmega gubi jeden bajt i krzaczy się cała transmisja, ale po jakimś czasie jak zgubi...
Gdy jeszcze bawiłem się ATmegami , 328 przede wszystkim to żonglowałem kałami ADC w tajmerze. Co ileś tam przerwań, przykładowo 10, był odczyt ADC i zmiana kanału. Po nastepnych 10 przewaniach znowu odczyt ale już ze zmienionego kanału i zmiana na następny kanał. Działało to po prostu pewnie. Lepiej będzie to widać na przykładowym kodzie. Oczywiście...
Zajętość pamięci poprawiłem jeszcze tego wieczoru co napisałem na forum - nie zauważyłem, deklaracji dwóch pamięciożernych zmiennych (linie z deklaracją wstawiłem w komentarz i problem zniknął). Warningi w 90% dotyczą deklaracji nie używanych zmiennych i funkcji, także to nie jest problemem. Udało mi się dzisiaj w końcu to zrobić :). Problemem były...
Co do wykorzystania ATTiny jako RTC to pomysł ogólnie jest ok, ale lepsza w tym przypadku była by jakaś ATMega, w której to Timer2 może pracować w trybie asynchronicznym z kwarcem 32kHz. Takie rozwiązanie w uśpieniu pobiera ok. 5-10uA, więc czas życia baterii będzie stosunkowo długi, na pewno ponad rok pracy na baterii 2032 da się uzyskać (sprawdzone...
Tak, dokładnie o tego typu efekt chodzi, jednak chciałbym do tego jeszcze mieć możliwość cyklicznego załączania sygnału wyjściowego coś na wzór funkcji delay_ms(), w celu opóźnionego załączenia i wyłączenia sygnału wyjściowego. Aktualnie mój kod to tylko sama konfiguracja, dodatkowo przerzuciłem się na ATMega328P ze względu na jeden dodatkowy Timer....
Mikrokontroler taktuję zewnętrznym kwarcem 11,0592Mhz, Timerem2 w przerwaniu załączam tyrystor i wykonuję pomiary w taki sposób: [syntax=c]ISR(TIMER2_COMP_vect) { if(ika1 && kroki == ika1) GATE_ON; //załączanie tyrystora kroki--; adc_cnt++; switch (adc_cnt) { case 1: temp = pomiar(I); //pomiar prądu if(temp>bufor_prad) bufor_prad=temp;// break; case...
Dziękuję za kolejną podpowiedź:) Dzięki niej udało mi się stworzyć jakiś kod. Niestety nie mam pojęcia czy poprawny. Dlatego bardzo bym prosił o oglądnięcie czy ma on w ogóle jakieś szanse działać. [syntax=c] #define BUFFER_SIZE 32 // musi być 2^n (8, 16, 32, 64 ...) #define BUFFER_MASK (BUFFER_SIZE-1) #define SUCCESS1 #define FAIL0 uint8_t buffer[BUFFER_SIZE];...
Witam. Potrzebuję napisać funkcję która zainicjalizuje Timer w Atmega32 (asynchroniczny) tak, by działał z zewnętrznym kwarcem 32,768kHz podłączonym pod TOSC1/TOSC2. Timer ma zgłaszać przerwanie co 1 sekunde. W przerwaniu powinien zmieniać stan diody na pinie PD0 na przeciwny. Proszę o pomoc w napisaniu kodu . Przepisz dokładnie to samo co napisałeś...
Układ pobiera 13mA - zmierzone- być może w momencie uruchamiania jakiegoś urządzenia resetuje się i tego już nie mogę zmierzyć. Podłączałem też z zasilacza o wydajności 300mA przy 9V. Aha jeszcze jedno co mnie podłamało wczoraj - podłączyłem 6 przycisków pod port D i przy jednym z nich (albo Rx albo Tx) jak naciskam(podaję 0 na port) to układ się resetuje....
Witam. Tak ustawiam Timer2 [syntax=c] void initTimer2(void) { /* Funkcja inicjująca timer2 w tryb asynchroniczny wykorzystujący kwarc 32,768kHz timer2 odpowiada za odliczanie czasu generuje przerwania co 8 sekund ==== Rejestr ASSR w Timer_Counter_2 ====== */ TIMSK2 = 0;//Disable timer2 interrupts ASSR &= ~(1 << EXCLK); ASSR |= (1<<AS2);//Enable...
Przy użyciu timera2 i trybu CTC chciałem uzyskać przebieg prostokątny o częstotliwości 10Hz. Czy dobrze dobrałem wartość OCR2, aby uzyskać taką częstotliwość? #include <avr/io.h> #include <avr/interrupt.h> volatile uint16_t i; int main(void) { DDRD |= (1<<PD7); PORTD |= (1<<PD7); TCCR2= (1 <<...
Witam panowie. Zagadka jest taka. Jest sobie arduino uno, ale programuję je bez bootloadera, bezpośrednio w c w avr studio wersja 4. W pewnym momencie w programie startuję timer 2 w trybie CTC i używam go jako wyjście zegarowe dla bufora. Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7, co daje ze wzoru przy częstotliwości uC 16Mhz,...
Po co odblokowujesz przerwanie skoro nie masz procedury do jego obsługi? To powoduje reset. Powinieneś przejść na nową nomenklaturę i SIGNAL(SIG_OVERFLOW2) zastąpić ISR(TIMER2_OVF_vect). #define f_CPU 16000000UL - to nic Ci nie da, zmień na F_CPU i sprawdź czy nie masz tego również w makefile.
Jestem w trakcie budowy balansującego robota i po prostu przed rozpoczęciem pracy pytałem parę doświadczonych osób i wszystkie miały obiekcje co do użytego procesora:P Wymyślały, że z 8bitowcem to będzie koszmar napisać taki program, że więcej czasu zajmie mi optymalizacja, żeby to w ogóle jakoś działało itd. A tu taka miła niespodzianka:) Jeśli chodzi...
Mam problem z przerwaniem w trybie asynchronicznym - Amtega328. Załączam program uproszczony do niezbędnych elementów: [syntax=c]//co 0.5s ISR(TIMER2_OVF_vect) { ... _delay_us(30); //V1 //while(TIFR2 & (1<<TOV2)); //V2 //while(TIFR2 & (1<<TOV2)) _delay_us(1);//V3 //while(TIFR2 & (1<<TOV2)) TIFR2 |=1<<TOV2;//V4 //cli();...
Kiedyś zrobiłem zegarek analogowy na ATmega8 wykorzystując do tego Timer2 atmegi i kwarc zegarkowy, nie będąc pewny czy z tego projektu coś wyjdzie, zaprojektowałem PCB tak żeby tylko nie pomylić pinów I/0 z pinami zasilania. Z tego powodu mogłem później zegarek wprowadzić tylko w płytkie uśpienie (Idle Mode). Testując działanie zegarka nie zauważyłem...
Mam podobny problem z tą właśnie Atmega i programowym PWMem. Korzystam z CTC: [syntax=c] volatile uint8_t pwm1; DDRD=0xFF; //port D jako wyjscie TCCR2A |= (1<<WGM21); //CTC OCR2A = 200; ASSR |= (0<<AS2); TIMSK2 |= (0<<OCIE2A); [/syntax] Przerwanie: [syntax=c] ISR(TIMER2_OVF_vect) { static uint8_t cnt; if(cnt>=pwm1) PORTD |= (1<<PD2);...
Witam! Programuję w BascomieAVR układ ATmega32 do obsługi węwnętrznego zegara RTC oraz miltipleksacji sześciu wyświetlaczy. Chciałem się zapytać czy dokładność wewnętrznego zegara RTC (kwarc 32.768kHz), który uruchamiam komendą: Config Clock = Soft, zależy od przerwań TIMER0, które odpowiedzialne są za multipleksację wyświetlaczy?? Rozumiem, że jeżeli...
Witam, w moim programie na atmegę 32 wykorzystałem timer0 oparty na zegarze procesora (8MHz) aby uruchamiać pewną funkcję ok. 100 razy na sekundę. Do programu postanowiłem dodać obsługę zewnętrznego kwarcu zegarkowego 32768Hz aby móc mierzyć w miarę dokładnie czas przy użyciu timera timer2. Po dopisaniu komend do obsługi kwarcu żaden timer nie działa....
(at)atom1477 Wzmacniacz był badany za detektorem. Sprawdzane było zbocze narastające przy wywołaniu pojedynczym impulsem i przy wywołaniu sygnałem prostokątnym 40kHz nie było różnicy w amplitudzie ani w czasie narastania. Na tej podstawie stwierdziłem że wzmacniacz działa prawidłowo. Dodatkowo na oscylogramach kanał niebieski to bezpośrednio wyjście...
Napisałem już trochę kodu i po próbie dodania funkcji atof() kompilator wystawił nie coś takiego: avr-gcc -mmcu=atmega32 -Wl,-Map=GPS.map main.o adc.o Button.o delay.o getgps.o lcd_2.o timer2.o timerf.o uart.o timer1.o dtoa.o oblicz.o -o GPS.elf d:/winavr-20100110/bin/../lib/gcc/av...
aha, rozumiem:) czyli w tym przypadku korzystałbym z timera2 do liczenia impulsów a timera1 do czasu? tylko przy częstotliwości rzędu tych 5 MHz nawet timer2 przepełniałby się około 75 razy na sekundę jeśli dobrze myślę, czy to nie problem? i czy w przypadku użycia go do taktowania timera nie musi on mieć wartości Vcc układu?
Jeśli ten krótki program działa tak samo na zboczu opadającym jak na rosnącym, a na przewodach nie ma zakłóceń (na 30cm), to jeszcze tylko przychodzi mi do głowy za słabe zasilanie, albo brak dobrego styku przy czujniku. Dopisałem o 20:05 Do tego krótkiego kodu spróbuj dopisać w wolnej chwili coś takiego (dla atmega328p): [syntax=c] volatile uint32_t...
Ponieważ temat stanął w miejscu podsumuję tylko że udało mi się osiągnąć rezultat. Posiadam 32 kanały PWM sterowane przez ATMEGA32. Wykorzystałem, tak jak kolega wspomniał, przerwania TIMER2 overflow oraz compare match jak i również przerwanie zakończernia transmisji SPI. Mimo usilnych prób optymalizacji nie udało się zwiększyć odświeżania. Byłem zmuszony...
Timer0 i Timer1 mają wspólny preskaler, Timer2 ma osobny preskaler. Poczytaj o resetowaniu preskalera w dokumentacji. U Ciebie jest inny błąd, w przerwaniu OC2 zmieniasz TCCR1B zamiast TCCR2. Co do zaokrąglania, to 1/76000 jest obliczane wg. zasad arytmetyki liczb całkowitych, a więc wynikiem operacji jest 0. Najprościej policzyć to tak: OCR0 = (1000000+76000/2)/76000;...
Witam Mam następująca konfiguracje sprzętowego PWM przy częstotliwości zegara 8MHz: [syntax=basic4gl]Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 8[/syntax] I jak dobrze liczę to 10 bitowy ma około 4kHz a 8 bitowy około 2kHz....
Jeżeli dobrze zrozumiałem to ma to wyglądać tak: ISR(TIMER2_OVF_vect){ //LED_PORT |=(1<<7); //if (count > val[0]) {LED_PORT &=~(1<<0);} else {LED_PORT |= (1<<0);} //if (count > val[1]) {LED_PORT &=~(1<<1);}...
Ok zrobiłem na początek prostą rzecz: wiązkę podczerwieni której przecięcie zapala diodę po pewnym opóźnieniu liczonym od chwili przecięcia wiązki, przyjąłem 3 s. Niestety moje obliczenia odnośnie opóźnienia nie zgadzają się z tym co jest w rzeczywistości tzn. dioda mająca zapalić się ok. 3 s po przecięciu wiązki zapala się po niecałej sekundzie. Proszę...
Witam :) Próbuje odpalić tryb CTC na Atmega8-przerwanie co 5ms i nie mogę sobie poradzić pomimo czytania PDF.Mało rzeczy robiłem na przerwaniach a jeśli już to na Atmega32 gdzie korzystałem z tego: Przerwanie co 5ms więc mam 1 sekundę. ATMEGA32: [syntax=c] TCCR0 |= (1<<WGM01); tryb CTC TCCR0 |= (1<<CS02)|(1<<CS00); preskaler = 1024...
Ad 1 i 3: Jeśli pytasz o ATmega8, to timerem asynchronicznym jest (jak napisałem powyżej) Timer2. Posiada on dedykowany temu kwarcowi (32,768kHz) oscylator. W przypadku tego mikrokontrolera niestety piny XTAL i TOSC są tymi samymi pinami. W innych przypadkach np. ATmega32 piny te są wydzielone więc można dwa kwarce podłączyć. Szczegóły w tym zakresie:...
Oczekujesz pomocy a nie dałeś kodu! Już lecę do Wróżbity Macieja! Bascom ma tyle błędów co Windows. Z osobna to wszystko działa, jak chcesz uruchomić kilka rzeczy to już nie. Nie ma się co tym przejmować, bo w Arduino i HAL dla STM32 jest tak samo. Zgaduję (kodu nie ma, a Wróżbita Maciej jest akurat zajęty), że używasz Bascom do konfiguracji PWM. Użyj...
Dzień dobry Mam problem z moim kodem: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> //tutaj wybieram port i piny gdzie ma być PWM (2x) #define PORT_T1 D #define T1_PIN 2 #define PORT_T2 D #define T2_PIN 3 // #define PORT(x) SPORT(x) #define SPORT(x) (PORT##x) #define DDR(x) SDDR(x) #define SDDR(x)...
tak wyglada generator czestotliwosci pod Arduino Micro Pro void setup() { pinMode(A9, OUTPUT); //Konfiguracja A5 jako wyjście tone(A9, 1000000); //Wygeneruj sygnał o częstotliwości (1MHz) 1 000 000Hz na pinie A9 } void loop() { } Tylko jak ograniczyć napiecie (GND) (Pin9 (A9) jest +2.22V a...
Jeżeli dobrze pamiętam, możesz podłączyć kwarc 32768Hz do MCU i używając Timer2 stworzyć niezależny od taktowania procesora zegar RTC. Przykładów szukaj w którejś z not na stronie Atmela. Dodano po 3 AVR134 http://atmel.com/dyn/resources/prod_docu... http://www.atmel.com/dyn/resources/prod_...
Witam. Potrzebuje zliczać impulsy z dwóch transoptorów szczelinowych. Problem polega na tym że jeżeli ustawię: np. Timer0 - obsługa przerwań, Timer2 - Generator PWM, to zostaje mi tylko Timer1 do zliczania impulsów. Dlatego też chciałbym spytać jak rozwiązać ten problem aby zliczać impulsy z dwóch transoptorów(potrzebne 2 timery w trybie liczników)....
Teraz próbuje ustawić Timer2 w tryb z porównaniem i nie mogę znaleźć nic na ten temat. Książka jest do TAmegi8 i nie opisuje tego trybu. A w helpie w ogóle nie ma timera2. A na temat timera 0 jest 2 linijki i schemat. http://obrazki.elektroda.pl/5921349900_1... Pierwsza wersja składni nadaje się też dla ATMega32. http://obrazki.elektroda.pl/8182461700_1...
na bascomie sie za dobrze nie znam, timery mam juz wykorzystane w programie tak: Config Timer0 = Counter , Edge = Rising Config Timer1 = Timer , Prescale = 64 Config Timer2 = Timer , Prescale = 1 napisales by ustawic timer tak by odliczal sekunde ale nie wiem jak to zrobic(?) i dlatego nadal szukalem prostszego rozwiazania... moze da sie cos wykompinowac...
Witam Mam problem z uruchomieniem watchdog'a w atmedze324. Procesor nie uruchamia resetu. Ten program powinien wypisywać cyfry przez około 2 sekundy potem powinien się zresetować. Proszę o pomoc. [syntax=jezyk_programowania] #include <mega324.h> #include <stdio.h> #include <delay.h> #include <stdlib.h> #include <string.h>...
Witam. chce zbudować urządzenie które będzie mierzyło prędkość obrotową turbiny i kilka innych rzeczy jak na razie utknąłem z pomiarem prędkości. układ opieram na scalaku Atmega32 do pomiaru prędkości wykorzystuje czujnik hala i magnes zamontowany na wałku (aktualnie wiatraczku komputerowym do testów) Program wygląda w ten sposób że chciałem mierzyć...
Korzystam z atmegi 32. Problem polega na tym że chcę zapisywać wartości do eeprom-u. Zapis robię co przerwanie timera2 od przepełnienia. I za każdym razem jak dochodzi do zapisywania do eeprom-u to mikrokontroler się resetuje. Czytałem coś o fuse bitach coś zmieniłem, ale nie pomogło. Trzeba oddzielnie eeprom i flash programować? Zestaw ewaluacyjny...
Na wewnętrznym to się nie ma co dziwić że źle chodzi a do kalibracji i tak potrzebny jest kwarc nawet wystarczy zegarkowy na Timer2 A to procedura kalibracji dla ATmega169 /***************************************... * * Function name : OSCCAL_calibration * * Returns : None * * Parameters : None * * Purpose...
Witam, Mam problem z pomiarem czasu trwania impulsu. Próbowałem różnych sposobów, siedzę już nad tym 3 dzień i nic mi nie wychodzi. Na wejście INT0 atmegi32 podaję sygnał np. 30Hz i wypełnieniu 15%. Sygnał jest stabilny więc tutaj problem odpada. Potrzebuję zmierzyć czas trwania stanu wysokiego. W programie który stworzyłem na wyświetlaczu wyświetla...
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
Niestety to nie jest wina prescalerów i taktowania, próbowałem już w każdej kombinacji . Żadnej różnicy nie zauważyłem, a napięcie przy wyjściu pwm się nie zmienia. Z tego co wiem ,to może być to wina złej kompilacji, dlatego przy wyjściu oc1a(Pin D5) od pwma muszę odwoływać się do poszczególnych rejestrów coś na wzór tego: [syntax=vbnet]Config Pinb.3...
Witam Nawiązując do tematu opóźnień w odbiorze danych mam pytanie. Czy takie zastosowanie timerów w kodzie jest poprawne? Czy może robi się to w trochę inny... może bardziej profesjonalny sposób? Nadawanie i odbiór w kodzie menchester. czas trwania jednego bitu 2ms (na razie do testów, później czas będzie krótszy). [code][syntax=c] ISR ( TIMER2_COMP_vect...
Witam Mam problem z sterowaniem serwomechanizmem. Zrobiłem program który działa na mniejszych serwach TowerPro SG-90. Ale gdy podłącze serwomechanizm MG996r to po parokrotnym szybszym poruszaniu serwa serwo się zacina i kręci w jedną stronę. Zakres sygnalu do sterowania serwem to 190-240. Bardzo proszę o pomoc z góry dziękuję niżej wklejam cały mój...
Witam, może było to już na forum, ale ja nie mogę nic znaleść. Zbudowałem sobie sterownik/włącznik , który mierzy temp (DS), ciśnienie (BME280) i włącza i wyłącza światło przy pomocy klawisza + komunikacja po RS485. Do komunikacji używam biblioteki (at)jnk0le dostępną na githubie. Parsowanie mam zmodyfikowaną wersję (at)ColinBrosseau też dostępną na...
SG90. Ale to samo było na TG9 i HXT900.
Witam! Zawracam się do szanownych kolegów z nietypowym problemem, mianowicie wykonuję aktualnie sterownik bramy dwuskrzydłowej na uC Atmega32 gdzie do sterowania silnikami 24V chciałem wykorzystać PWM(funkcja powolnego startu i domykania bramy). Przy sprzętowym PWM wszystko jest jak najbardziej ok (silniczki pięknie się starują), natomiast gdy do generowania...
Ale wszelkie nastawy chociażby z Timer2 i OCR2a i 2b są błędne A dlaczego są błędne? Pokaż swój kod który nie działa. To Cię naprowadzimy co jest źle.
Bardzo dziękuję za te informacje. W przyszłości będę to rozbijał na dwie linie(zerowanie i ustawianie bitów rejestru). Tymczasem, po przeczytaniu datasheet, a konkretnie sekcji dotyczącej Timer0 i Timer2, stwierdziłem, że mogę po prostu wpisać jedną liczbę do np. rejestru TCCR0. Np TCCR0 = 0b00001111. To powinno spowodować włączenie pinów 7:4 jako wejścia...
Witam ponownie, Dziękuję za odpowiedzi, bardzo mi pomogły - zmniejszyłem rozmiar zmiennych, przez co zmniejszyłem czas przerwania (przynajmniej taką mam nadzieję), rozbudowałem trochę program. _delay_ms(40) stosowałem żeby przycisk po zmianie stanu nie "iskrzył" Niestety problem znów się pojawił: Program nie wchodzi do pętli while, gdzie warunek jest...
Witam, chciałbym stworzyć najprostszy Dataloger zapisujący na kartę SD do pliku tekstowego pomiar V, A i może temperaturę na 328p. Pobrałem i dołączyłem biblioteki od elm-chan.org. Niestety mam jak na razie pewne problemy. W starej wersji był plik konfiguracji mmc.c portów pod SPI, MIO, MOSI, CLK i CS. W obecni wersji nie mogę znaleźć miejsca by to...
Zmodyfikowaliśmy program: #include <avr/io.h> #include <avr/interrupt.h> //Prescaller jest ustawiony na 256 przy 16MHz //2.5ms - 0x3E //polozenie poczatkowe - 0x20 - 0d32 - 0.528ms //polozenie koncowe - 0x94 - 0d148 - 2.38ms unsigned char volatile p1[8] = {0x90,0x90,0x90,0x90,0x30,0x30,0x30... unsigned char volatile...
Hmm, czy ATmega32 na pewno ma timer3? Rzecz w tym, że mam już gotowy układ, w którym są wykorzystane nóżki procka OCR1A i OCR1B (outputy timera1) - gdybym teraz do PWM wykorzystał inny timer, musiałbym wprowadzać zmiany w układzie, czego chciałbym uniknąć (a do tego timer2 też mam zajęty, a silniki są dwa). Mówisz, że logiczne jest, że praca timera...
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w trybie asynchronicznym(RTC). Program nie działa, bo mam problem...
Witam, jestem początkujący, chciałem zaimplementować w swoim układzie (dodatkowo) funkcję pokazującą czas, czyli generalnie zegarek. Układ będzie oparty na procesorze ATmega*. Poczytałem trochę na forum o kwarcach i chciałem uporządkować wiadomości. Jeżeli chcę by nie było dysproporcji między aktualnym czasem a wskazaniem układu, to rozumiem, że potrzebuję...
Ja osobiście jak narazie pisze w Bascomie. W Bascomie wygląda to tak: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 ' Konfiguracja Timera1 dla Pwm1a i Pwm1b Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Down , Prescale = 1 ' Konfiguracja Timera2 dla Ocr2 Config Pinb.3 = Output...
Fragmenty kodu: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 $hwstack = 256 $swstack = 256 $framesize = 256 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Pa.0 , Db6 = Pa.1 , Db5 = Pa.2 , Db4 = Pa.3 , E = Pa.4 , Rs = Pa.5 Config Sda = Portd.1 Config Scl = Portd.0 Config 1wire = Portc.2 Config Pind.4 = Output 'oc1b niebieskie Config Pind.5...
TIMER2 jest ośmiobitowy więc nie ma rejestrów H i L bo nie ma czego podzielić na dwa. Tak, tak, racja. Nie doczytałem noty i myślałem, że to dwa identyczne timery. TCCR2A i TCCR2B są zdefiniowane i da się Timer2 skonfigurować przez rejestry, tylko nieco inaczej. Sterowanie też powinno zadziałać przez OCR2A i OCR2B. Muszę tylko ogarnąć jak skonfigurować...
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555) $regfile...
Witam wszystkich bardzo serdecznie. Z okazji ukończenia szkoły elektronicznej postanowiłem zrobić sobie zegarek/wyświetlacz widmowy. Niestety utknąłem na funkcji, która ma odczytywać znaki z tablicy w pamięci i wyświetlać je w zrozumiały dla ludzi sposób ;). I tu zwracam się do was z prośbą o pomoc w poprawieniu tej funkcji abym mógł wyświetlić jakąkolwiek...
atmega32 timer2 bascom timer2 atmega32 przerwania timer2
silnik magnetofonu obroty junkers samoczynnie suszarka siemens pompa
grunding pilot selektol specjal
Szlifierka Parkside PWS 125 G6 - włącza się i wyłącza Wzmacniacz Rotel: Cichy lewy kanał, jak podłączyć tuner?