[syntax=c]ISR(TIMER0_COMPA_vect){}[/synt...
A może wykorzystać Timer0 i ustawić odpowiednio rejestr SFIOR? Wtedy przerwanie od Timer0 compare wyzwala ADC. A pojawienie się flagi moźna sprawdzać w pętli głównej albo w przerwaniu od ADC.
Ja to lubię tak: Zmienić ATmega8 na 88- ta sama cena. Potem w rejestrze ADCSRB ustwić ADTS0...2 tak jak potrzeba- np. przerwanie od Timer0 Compare Match A. Timer0 ustawić tak aby i tak go wykorzystać jako timer systemowy- oba przerwania wykorzystać albo tylko żadanie obsługi przerwania. A reszta w głównej pętli. Ale to jest co ja lubię- wykorzystać...
Ta linijka w sumie nie ma potrzeby istnieć. Według mnie wystarczy wywołać: Timer0_Init()' i potem Timer0_RegisterCallbackFunction( jakaś funkcja ) i powinno chodzić. Jednak nic się nie dzieje. Samo Timer0_Init wygląda tak: void Timer0_Init(void) { //mt char i; uint8_t i; // Initialize array of callback functions for (i=0; i<TIMER0_NUM_CALLBACKS;...
Mnie wychodzi, że to nie jest tryb CTC tylko normalny. Po drugie na przerwanie compare trzeba zezwolić w rejestrze TIMSK - bit OCIE0 - masz < zamiast << stąd problem. Jak masz jakieś wątpliwości co do konfiguracji, to użyj symulatora AVR Studio. Można sobie w nim też ustawić tryb pracy i odczytać wartości rejestrów kontrolnych dla niego i potem...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do for i = 0 to 1023 pwm1a = i waitms 10 next for i = 1023 to 0 step -1 pwm1a = i waitms 10 next Loop End Pozdrawiam
[syntax=basic4gl]$regfile = "m328pdef.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a : On Compare0a Int0_isr : Compare0a = 249[/syntax] Kompiluje się bez problemu. Co do ustawienia na rejestrach. Napisałem...
W jakim środowisku działasz? Jesteś pewny nazwy tego wektora? Nie ma żadnych ostrzeżeń? Bo mnie się tu coś nie zgadza: [syntax=c]ISR(TIMER0_COMPA_vect){}[/synt... Tak chyba powinno być prawidłowo: [syntax=c]/* Timer/Counter0 Compare Match */ #define TIMER0_COMP_vect_num19 #define TIMER0_COMP_vect _VECTOR(19) #define SIG_OUTPUT_COMPARE0 _VECTOR(19)[/syntax]
Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4? Czyli przynajmniej jedno można stwierdzic, że taktujesz processor 1,2 MHz; a nie jak twierdziłeś i zakładałeś wczwśniej; 9600 000(!)_ Twoja konfiguracja timera0: Phase Correct PWM i otrzymany wynik częstotliwości...
Dzinx Zaraz się zabieram za Twojego help'a ;) Już - stestowane : Dodano po 31 $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output 'Portb = 0 Config Portd = Input Portd = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Start Timer1 Config Timer0 = Pwm , Prescale = 8 ,...
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
hmmm Przede wszystkim: Enable Interrupts On Timer0 Przerwanie Stop Watchdog Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 'PWM=250Hz Load Timer0 = 195 To włączenie przerwania jest wstrętne w tym miejscu:P Co do wniosków... może spróbuj zwiększyć stos o...
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
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...
Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Set Tccr0.pwm0 Set Tccr0.com00 Set Tccr0.com01 Set Tccr0.cs00 Ocr0 = 127 'T2 już normalnie ;) Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 127
Poczytaj tematy i uzyj szukaj. Attiny2313 nie posiada adc wiec potencjometrem nie dasz rady tego sterowac. Domyslam sie ze robisz do w bascomie. Tu masz kawalek kodu jak konfigurowac timery zebys mial 4 pwm. '******* procek ******* $regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 30 $swstack = 30 $framesize = 30 '****** dioda R/G...
// ================= PROCEDURA OBSŁUGI PRZERWANIA COMPARE MATCH ISR(TIMER0_OVF_vect) Błąd. To jest przerwanie od przepełnienia licznika. Przerwanie od porównania to: TIMER0_COMP_vect . W nagrodę Pomógł od mniej spostrzegawczych użytkowników i moderatorów :) A co do tranzystorów, to oczywiście lepsze by były PNP, ale z NPN też będzie działać (trochę...
Istnieje jeszcze jedna możliwość. Jakiego używasz AVR-GCC? Możesz mieć jakąś starszą wersję z błędem, który właśnie objawia się poprzez niepoprawne działanie przerwań COMPARE. Wystarczyłby jeden błąd w adresie wektora TIMER0_COMP_vect i "po zawodach". ps. Nie rzekomo działającego, tylko działającego. Niestety nie mogę ci strumieniowo przesłać video...
zobacz to: $regfile = "attiny25.dat" $crystal=8000000 Config Portb = Output Portb = &B00001110 Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Disconnect , Prescale = 1 Pwm0a = 125 'zamienić jeśli nie dziala na Ocr0a Do Loop End
Tak wygląda konfiguracja Uc: $regfile = "m168def.dat" $crystal = 16000000 Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Będzie do tego podłączony odbiornik jakieś 300W czyli 25A. Chyba powinno działać...
Witajcie, Problem powinien być trywialny a nie jest. Dotychczas stosowałem auto trigger ADC na ATtiny13 i działało to przewidywalnie według datasheeta, ale kod przeniosłem na ATmege168 i działać przestało, mimo że wszystko ustawione według dokumentacji. Po krótce: - uruchamiam timer0 w trybie CTC by zdarzenie Compare Match A zachodziło co 250us (4kHz),...
Tak to kiedyś zrobiłem dla attiny2313 [syntax=c] #include "defines.h" #include <avr\interrupt.h> //#include <stdbool.h> //#include <stdint.h> //#include <stdio.h> #include <avr/io.h> //#include "hd44780.h" #include "hd44780.c" unsigned char sign1[16]; unsigned char i,keys,kdelay,krepeat=20,menu,filter_dly... unsigned char...
To fragment kodu (konfiguracja PWM), który działa u mnie w sterowniku na 100% [syntax=basic4gl]$regfile = "attiny13.dat" $crystal = 1200000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Portb.0 = Output Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Dim X As Byte '--- Do Pwm0a = X 'parametr 0-255 Loop...
Witam, piszę sobie taki oto kod i spotykam dziwne zachowanie układu. W skrócie: Jest sobie kontrolny debug na terminal , a po nim jest wywołanie funkcji. W efekcie podejrzana funkcja sprawia że debug który w kodzie jest przed nią się nawet nie pojawia. Sęk w tym że w podejrzanej funkcji nawet gdy użyję debugu na samuśkim jej początku to i tak go nie...
Po ciężkich zmaganiach z metodą losową dla kolorów postanowiłem porzucić ten pomysł i zastosować przewidywalny sposób który będzie się powtarzał co jakiś czas. Może i nie jest to rozwiązanie pierwsza klasa, ale działa. Nie stosowałem jednak korekcji gamma, bo przy rozdzielczości PWM 8 bitów i zastosowaniu płynnego rozjaśniania było widać przeskoki (mruganie)...
Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down , Pwm = On a i ładujesz do OCR0
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...
Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Pwm = 8 Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = 8 Ocr2 = wart Ocr0 = wart Pwm1a = wart Pwm1b = wart
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
Witam. Trochę inny procek ATmega644 [syntax=c] TCCR1B |= (1 << WGM12); // Mode 4, CTC on OCR1A TIMSK1 |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler to 1024 and start the timer| (1 << CS11);// OCR1A = 976*8; //wartość do której zlicza licznik [/syntax]
zumek a mogbys podzucic kawalek programu Skoro tak ładnie prosisz :D '*********** 4 x PWM ********* $regfile = "attiny2313.dat" Ddrb = &B00011100 'Oc0a,Oc1a,Oc1b = Output Ddrd = &B00100000 'Oc0b = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Tccr0a = &B11110001 'Timer0=Pwm ,Compare A Pwm = Clear...
Spróbuj tak (nie testowane:)): [syntax=basic4gl]Config Portb.3 = Output ' OC0A Config Portb.4 = Output ' OC0B Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Pwm0a = 0 Pwm0b = 0 Config Portd.5 = Output ' OC1A Config Portd.4 = Output ' OC1B Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm...
Acha rozumiem, czyli ta linijka odpowiadająca za Timer0 jest zbędna wystarczyło dodać "Compare B Pwm" do linijki Timer1. Jeszcze pytanie dla ścisłości : ta komenda jest poprawna w przypadku Timer1? Compare1a = 1000 Compare1b = 400
Znowu się zaciąłem. :( Tym razem nie potrafię skonfigurować PWM tak żeby dawał plusa nie masę. Przykładowy kod: $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 1 Do Pwm0a = 0 Wait 3 Pwm0a = 255 Wait 3 Loop End Działa tyle że impulsy...
$regfile = "8535def.dat" $crystal = 8000000 $sim Config Pind.4 = Output Config Pind.5 = Output Config Pind.7 = Output Config Timer2 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Config Timer0 = Pwm , Pwm =...
Dla taktowania 8MHz, ale możliwe że trzeba zmodyfikować nazwy Pwm i Compare [syntax=basic4gl]Config Pinb.0 = Output Pwm0a = 70 Config Timer0 = Timer , Prescale = 1 , Compare0A = Toggle , Clear Timer = 1 Do Loop End[/syntax] a na rejestrach timera [syntax=basic4gl]DDRB = 0B00000001 'DDRB.0 = 1 (wyjście) OCR0A = 70 TCCR0A = 0B01000010 'COM0A1 COM0A0 =...
Dobrze rozumiem, wiem ze trochę to namieszało, ale cóż zdarza się niestety nie pierwszy i pewnie nie ostatni raz. To jak już wiadomo o co chodzi, to trzeba program napisać, tak jak już pisałem uczę się i na razie tylko próbuje napisać kod udzielnie do każdej funkcji. Jak na razie udało mi się rozjaśniać powoli diodę i nie mogę zrobić tak by gasła także...
Przykład konfiguracji PWM dla timera0 i 1: [syntax=basic4gl]$regfile = "m168def.dat" $crystal = 8000000 ' konfiguracja PWM Timer0 kanał A i B Config Portd.6 = Output ' OC0A jako wyście Config Portd.5 = Output ' OC0B jako wyście Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 ' konfiguracja PWM Timer1 kanał A...
Nie mam chwilowo zestawu testowego, stąd pytanie teoretyczne. Mam program z PWM na Timer1 sterujący wyjściem OC1A/PD5 w konfiguracji Config Timer1 = Pwm, Pwm = 8, Prescale = 1, Compare A Pwm = Clear Down Czy PWM na Timer0 skonfigurowany Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down , Pwm = On da mi taki sam przebieg na pinie OC0/PB3?...
Jak użyć timera (tzn. jak wyciągnąć z niego np zmienną dodawaną, lub resetowaną co określony czas?) Boję się jeszcze TIMERów :) Nie ma się czego bać. Oto prosty programik, który na pewno pomoże. 796182 Jednak dziwię się dlaczego nie używasz sprzętowego PWM. Attiny 2313 posiada ich cztery. Na każdym z timerów po dwa. [syntax=vbnet]Dim R As Integer Dim...
Witam wszystkich! Aktualnie bawię się trybami PWM atmegi32. Na timerze0 robię phase correct pwm, zaś na timerze2 zegar systemowy. PWM jest software'owy i ustawianie poziomu logicznego znajduje się w przerwaniu od OCR0. Czas systemowy to po prostu inkrementowana zmienna globalna w przerwaniu od OCR2, gdzie licznik pracuje w trybie CTC. Mój problem polega...
proszę '---------------------------------------... ' Solar v9 z pomiarami i watchdogiem '---------------------------------------... ' ustawiono napięcia odłaczenia 1,17V ' napięcie ochrony 1,45V ' led red lutowana do b1 ' opornik do b2 '---------------------------------------...
Też mi pomoc :) Piszę właśnie programik na attiny13 więc proszę : $regfile = "ATTINY13.DAT" $crystal = 9600000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Pinb.0 = Output Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down Dim A As Byte Do Incr A Pwm0a = A Waitms 10 Loop End
[syntax=vbnet] $regfile = "attiny13.dat" $crystal = 8000000 ' 'ustawienie PB2 jako wejscie ADC1 i PB0 jako wyjscie PWM Config Pinb.0 = Output Config Pinb.2 = Input Config Pinb.5 = Input Portb.5 = 0 Config Adc = Single , Prescaler = Auto , Reference = Internal 'konfiguracja przetwoenika ADC Vref=1.1V Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm...
emarcus:: Czy Ciebie całkiem pogieło? Jak chcesz pomnożyć częstotliwość rozkazem MUL? Ewentualnie jak chcesz tym pomnożyć impulsy? Bez obrazy ale to zupełnie co innego. Dodano po 19 Na mój gust cos takiego: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------...
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=...
Czytałem i niestety nie wiem co wpisać w TCCR0A oraz TCCR0B czy możesz mi podać co wpisać aby ten Timer działał tak samo jak Timer1 ? Timer1 masz skonfigurowany w trybie "Phase Correct PWM" - stąd obliczysz częstotliwośc. Więc sonfiguruj go podobnie jak Timer1 z pewnymi różnicami: Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare...
Config Timer0 = Pwm , Prescale = 8 , Compare Pwm = Clear Down Pwm0 = 255 ' full voltage Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 255 ' full voltage No jeżeli chcesz użyć 4 kanałów to musisz wykorzystać 3 timery. Clear down oznacza że im większa wartość timera tym jaśniej świeci np.dioda a z clear up najjaśniej będzie świeciło...
(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...
Zapomniałem o pull up, już poprawiam! Dodano po 6 Ostateczne wygląd ćwiczenia wygląda następująco: Dodano po 1 Teraz mam regulację jasności świecenia diody, zapomniałem napisać. Konfiguracja portu C pomogła. Dodano po 25 Teraz mam następujący kod: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 Ddrc = &B00000000 Portc = &B11111111...
Poniżej obiecany schemat. https://obrazki.elektroda.pl/1485483000_... Narazie nie ma jeszcze tranzystora T1 i wejścia 'Światło'. Do testów jest TxD. Nie ma też jeszcze optotriaka, jest tylko dioda LED1. A tu biblioteka USART. [syntax=c]/* Software ("bit-bang") UART Transmitter (8 data bits, 1 stop bit, no parity) for Attiny24A/44A/84A...
Witam mam problem ze stworzeniem 4 kanałów pwm na attiny2313 w bascomie zrobiłem pwm1a i pwm1b na Timer 1 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64 ale niestety nie wiem jak sie zabrać za pwm0a i pwm0b ? gdy dodaje linijkę Config Timer0 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare...
Witam. Wybacz ale chce mi się rozpisywać. Ustawianie 1 sekundy dla zegara 16MHz [syntax=c] OCR1A = 0x3D08; TCCR1B |= (1 << WGM12); // Mode 4, CTC on OCR1A TIMSK1 |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler to 1024 and start the timer[/syntax] to co wychodzi z prescalera...
$regfile = "attiny13.dat" $crystal = 8000000 Ddrb.3 = 1 Config Pinb.0 = Output Config Timer0 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 Dim I As Byte Do For I = 1 To 255 Pwm0b = I Waitms 50 Next I For I = 255 To 1 Step -1 Pwm0b = I Waitms 50 Next I Loop End Pomoże mi ktoś z tym czasem?:(
Kolega nas zwiódł tym wpisem, że zawsze mu się udawało skonfigurować Timer. ...a to był chyba zawsze "Zufal" :D CTC to skrót od Clear Timer on Compare - czyść/zeruj Timer kiedy jego licznik wynosi tyle co OCR0A. Kiedy więc OCR0A ustawisz na 100, a OCR0B na 200 to Timer doliczy do 100 i się wyzeruje. Nigdy nie dojedzie do 200 bo to CTC Teraz pomyśl co...
Witajcie. Mam następujący problem. Otóż przy obsłudze przerwania od rc5(Int0) oraz pracy Pwm na timerze0 przy częstotliwości 1MHz wszystko działa, natomiast gdy zastosuję 16MHz mikrokontroler nie odczytuje komend od rc5? Dodam, że po wycięciu fragmentu z konfiguracją timera rc5 działa, natomiast co oczywiste przestaje działać pwm. Czyżby zła konfiguracja...
źle: Dodano po 1 Poza tym czym mniejsze PRESCALE, tym lepsza rozdzielczość. Dodano po 2 Kurcze i jeszcze wywal DEBOUNCE bo do zwiększenia od 0 do PWM 255 będziesz naciskał 255 razy.
OK, no to następne podejście z nadmiarowym kodem testowym odliczającym w kółko na ATmega8515 zamiast ADC - wyświetlanie bez zarzutu. Co do tego dziwnie wyświetlanego zera, to może masz zamienione a z g, b z f itp. W tej wersji łatwiej zapanować nad częstotliwością odświeżania segmentów - zbyt duża skutkuje podświetlaniem sąsiednich cyfr, zbyt mała -...
Witam. Dziękuje bardzo, czy dobrze myślę, że dla preskalera 1 compare ma być równe 100? Znalazłem taki kawałek kodu: Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Config Timer0 = Timer , Prescale = 1024 Compare1a = 100
9600000Hz/70000Hz=137 takty 9600000Hz/150000Hz=64 takty Z takimi rozdzielczościami się tam musisz liczyć. Dla 37kHz i innych konfig uzyskasz klikając CTRL+SPACE. Bascom sam podpowiada jakie masz możliwe ustawienia. Nie pamiętam tylko czy jest to FastPWM czy PhaseCorrect który jeszcze spowolni sprawę o połowę. W Tiny85 masz Timer który może być taktowany...
witam . Dlaczego nie mogę skompilować tj; zmienna = zmienna / 4 kod bascom $regfile = "attiny13.dat" 'typ proca $crystal = 800000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Up Dim B As Iram Word Config Portb.0 = Output Portb.0 = 0 Config Portb.1 = Output Portb.1 = 0 Dim Zmienna...
Witam, Mam problem z zmuszeniem do pracy jako PWM Licznika "Timer0" Timer jeden działa mi jako przerwanie co jedna sekunde wiec nie moge go użyć do tego. Próbowałem zrobić to tak jak w tym temacie, ale wyświetlacz wtedy wariuje. http://www.elektroda.pl/rtvforum/topic28... Gdy wykasuje z kodu linijke: 'Config Timer0 = Pwm , Prescale = 64 , Compare...
rozwiązałem problem i aż wstyd się przyznać co było główną przyczyną moich niepowodzeń. Mianowicie diodę podłączałem pod portb.1 a timer0 działał na OC0A. Teraz mój kod w uproszczeniu wygląda tak: [syntax=basic4gl]$regfile = "attiny13.dat" $hwstack = 32 $swstack = 18 $framesize = 8 ' tiny13 $crystal = 10000000 Config Pinb.1 = Output Config Pinb.0 =...
Ach, zapomniałem o globalnym włączeniu przerwań ( sei() )... :P LordBlick, może znalazłbyś troszkę czasu, by napisać w możliwie najkrótszej formie obsługę dowolnego timera w trybie timer (nie counter)? Tryb counter polega na zliczaniu zewnętrznych impulsów, więc nie jest tu użyty(kilka stron wcześnie tego tematu podawałem definicje Trise - liczenie...
Mam pytanie jak skonfigurować timer0 który jest 8 bitowy aby pracował jako generator PWM ? Mam coś takiego: $regfile = "attiny2313.dat" Config Portd = &B1111100 Portd = &B1111111 Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.2 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale...
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...
Problem tkwił w programie na pc zainstalowałem inną wersje. Dzięki:) Ale mam jeszcze inny problem z attiny 13 mianowicie: Zasada działania programu: Podaje +5V na PB4, procesor poprzez PWM rozświetla mi diodę LED w czasie 0,4s poprzez pin PB0 na ULN 2003. I dioda świeci tak długo aż zabiorę sterowanie z pinu PB4 i wtedy przygasa w takim samym czasie....
Aż se na płytce złożyłem ten układ i program sprawdziłem. No i faktycznie świeciło na stałe. Do poprawienia były bzdety. Wklejam jeszcze raz, przetestowany i na 100% wszystko działa jak chciałeś [syntax=basic4gl] $crystal = 8000000 'Deklaracja częstotliwości kwarcu $regfile = "attiny2313.dat" Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A...
Witam :) Mam problem, zegarek na Timer0 nie chodzi poprawnie natomiast na Timer 1 pracuje poprawnie. Pwm działa tylko na Timer1. Co zrobić aby zegarek pracował na Timer1 a Pwm na Timer0? Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Mierzymy Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down ,...
No to popróbuj jeszcze :-) Ja tylko tak, aby sprawdzić, napisałem coś takiego: '---------------------------------------... ' ' RC5.bas ' '---------------------------------------... '$sim 'jen pro simulaci $regfile = "Attiny2313.dat"...
A faktycznie niedopatrzyłem bo to wycięty fragment. Proszę więc. Kod jest po to by pokazać jak pomysł otrzymany na Forum można zamienić na coś działającego :P Nie ma wskazywać idealnego rozwiązania, a jedynie to co miałem na myśli a mam ich więcej bo pełno różnych projektów na głowie. Zmieniłem Sub w Funkcję. Nagram chyba kiedyś o tym jakiś film żeby...
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...
Po pierwsze to staraj się przejrzyście pisać kod, bo sam się szybciej zakałapućkasz z takim stylem pisania jak wyżej: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> // #define F_CPU 8000000L ----> TEGO NIGDY NIE RÓB PROGRAMOWO - w kodzie int main(void) { TCCR2 |= (1<<WGM21); // tryb CTC TCCR2...
Jeśli C zacznie używać rejestrów w taki sposób, jak tego będę chciał, to bardzo chętnie się przesiądę... Czy w C istnieje szybsza obsługa przerwania niż : TIMER0_COMPA: ;Timer0 Clear on Compare in isSREG, SREG ;save SREG mov is0, DataAcc;save DataAcc ;***************************************... cLedFlashDelayDecr; LEDFlash.asm cKeyPinDelayDecr;...
Witam! Jestem trochę świeży w ARMach. Mam gotową płytkę z LPC2136, do której podpięty są wyświetlacze LED, LCD, termometr (LM35CZ) i pare innych. Główna funkcja to zliczanie impulsów na wejściu capture: P0.10 CAP1.0 (ma to być wykorzystane do obliczania prędkości samochodu). Wykorzystuję do tego dwa obydwa timery (timer0 i timer1). Timer0 generuje przerwanie...
Witam , mam problem z uruchomieniem timer1 przez sam rejestr , programowo ok ale potrzebuje jak najwyższą częstotliwość na wyjściu (fusebit omijamy ,ten temat znam) . Jeśli chodzi o tmer0 to ok ale również chodzi o podział większy niż 8 bitów np.16554 , ale również przy najmniejszym podziale jak największa częstotliwość . Korzystałem ze strony [url=http://lx-net.pl/hr/gen1/gen1.html]...
Powrócę jeszcze do tematu. Timery programowe to objaśnił Mirekk36 w swojej książce oraz artykułach i wideo poradnikach, bardzo dobrze je się stosuje. Jest to proste, wystarczy ustawić jakiś timer w tryb CTC i wywoływać przerwanie co jakiś zamierzony czas (stosuje około 10ms). F_CPU/Prescaler/100 Zaokrągloną wartość wpisujemy do rejestru OCRx. W przerwaniu...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Jedynka nie jest tutaj problemem. Popatrz na to w ten sposób jak na preskaler. Jeśli wpiszesz do preskalera wartość x (np 5), to w rzeczywistości dzielisz sygnał zegarowy na x + 1 (czyli np 6). 0 -> 1, 1 -> 2, 2 -> 3, 3 -> 4, 4 -> 5, 5 -> 0 => całość trwa SZEŚĆ taktów dokładnie tak samo jest z timerem i rejestrami match / compare...
Witam! Chce stworzyć sterownik obrotów silnika. Działa to na zasadzie że ADC odczytuje wartość z potencjometru i przypisuje ją PWM. Wszystko ładnie, ale nie rozumiem dlaczego gdy już wszystko podłącze to na multimetrze pokazują mi się wyniki rozbiegające się z rzeczywistością. Chodzi o to że po delikatnym przekręceniu wartość czasami zmieni sie o 1V...
Mam problem z zaprogramowaniem żyrandolu RGB na ATtiny2313. Postanowiłem wykorzystać 3 kanały PWM do ustalania koloru świecenia diod. Problem polega na tym, że nie odbiera kodu RC5 nadawanego z pilota. Atmega8 na płytce testowej radziła sobie z tym bardzo dobrze, natomiast tiny na właściwej płytce nie chce. Podaje program jaki w tej chwili mam. [syntax=basic4gl]$regfile...
witam wszystkich! napisalem taki program: Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Start Timer1 Start Timer0 Config Portb = 255 : Config Portd = &B1110000 : Portd = &B1110111 Dim S As Integer...
Proszę. Nie opisywałem go i tutaj może wyglądać dziwnie, ale u mnie rysuje linie łączące bloki. Wygląda to jak na załączonym obrazku i nie mam potrzeby dla takiego kodziku tego opisywać. http://obrazki.elektroda.pl/9672124500_1... Błąd mógł się wkraść bo to tylko tak z doskoku dla relaksu napisałem w pół godzinki. Życzę owocnego testowania...
Witam Próbuję wygenerować przebieg prostokątny za pomocą timera0, pracującego w trybie clear-timer-on-compare. Mozna ustawić bity COM0B1 i COM0B0 żeby wyjście się włączało, pytanie tylko jak je wyłączyć w przerwaniu?
zagladałem i wiele nie znalazłem, mam taki mniej wiecej program i nie wiem.... moze czegos brakuje? szukałem juz na elektrodzie, ale nie znalazłem niczego... [code] $crystal = 3500000 $regfile = "2313def.dat" Ddrb = &B00111111 Ddrd = &B11111111 '****deklaracje zmiennych Config Timer1 = PWM , PWM = 8 , COMPARE A PWM = CLEAR UP Config Timer0 = Timer ,...
No teraz mi wyjaśniłeś wszystko! Wielkie dzięki. Jako że w grę wchodzi chyba jak na razie attiny13 ( brak innego pod ręką i gabaryty również mają znaczenie), muszę kombinować dalej. więc wymyśliłem sobie, że zrobie tak: $regfile = "attiny13.dat" $hwstack = 32 $swstack = 18 $framesize = 8 ' tiny13 $crystal = 10000000 Config Pinb.1 = Output...
Jeżeli chodzi o PWM - wszystkie 4ry wyjścia mam zajęte ponieważ są po 2 pary diod gasnących i zapalających się. Napisałem o 1 parze bo to w sumie nie będzie duża różnica w kodzie. Jeśli chodzi o PWM mam to rozwiązane tak: For Zn = 0 To 255 Pwm0b = Zn Waitms 15 Next Zn For Nn = 0 To 255 Pwm0a = Nn Waitms 15 Next Nn For Zn = 255 To 0 Step -1 Pwm0b = Zn...
"mongoł2000 napisał: a jak zrobić pwm na 6 kanałów bo jest jeszcze ock0?? Co to za wyjście bo nie znam?" jest to pierwszy pin procesora , zaraz przeinstaluje tego bascoma Dodano po 36 $regfile = "m162def.dat" 'Deklaracja rodzaju procesora Config Timer0 = Pwm , Prescale = 8 , Pwm = On , Compare Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale...
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
Witam Zawsze bawiłem się z atmega32 ale od do projektu potrzeba mi 6 kanałów PWM 16bit (sterowanie 2 serwa i 4 regulatory z rewersem). Zastosowałem atmega128 T1 i T3 . Wszystko było było by OK ale na kanale OC1C jest brak sygnału , zapewne banalne rozwiązanie ale jakoś nie mogę zatrybić nadajnika: [syntax=vbnet]$regfile = "m32def.dat" $crystal = 16000000...
Oto mój program (atinny2313, zegar 8 mHz). Dodatkowo obsługa pilota sony: Dim Moc As Word Dim Table As Word Dim Ready As Byte Dim Code As Word Dim Period As Word Dim Command As Long Dim Bitcount As Byte Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising , Compare A No_output = Disconnect Config Int0...
Programuję w ASM ale tylko Atmega8/16 więc wklejam ci taki przykład: [syntax=asm] .CSEG .org 0x0000 //poczatek deklaracji skokow dla przerwan rjmp _poczatek reti reti reti reti reti reti reti reti rjmp _150_timer0 //przerwanie overflow timer0 reti reti reti reti reti reti reti reti reti _poczatek: in r16, TIMSK//timer0 overflow interrupt enable ori...
mam na poczatku "$regfile = "attiny2313.dat"" i reszte deklaracji... spróbuje w nowym pliku bo tam mam jeszcze reszte moich wypocin i może coś z nich wadzi mimo, że error jest w liniach które cytowalem --------- Nadal błędy $crystal = 1000000 $regfile = "2313def.dat" Config Portb = Output Config Portd = Output Config Timer1 = Pwm , Pwm = 8...
Oki wywalilem $tiny. Zostawilem deklaracje jako Iram Byte i program sie skompilowal. Zaladowalem do procka, procek do ukladu i nie dziala. Po podaniu 0 na Portb.4 zarowka sie natychmiastowo zapala i pali sie az jej nie zgasze. Zgasic zarowke moge podajac jedynke na port ospowiadajacy stacyjce. PWM wogole nie chodzi. Podpielem oscyloskop i na wyjsciu...
Myślę że forum jest nie tylko po to by pytać. Kolega zdążył zamknąć wątek i napisał że Bascom nie pozwolił na skonfigurowanie Timera i musiał to zrobić na rejestrach. Nie wiedział jak, a ja chciałbym dla potomnych zostawić instrukcję. Dołączyłem ten post i odblokowałem temat. Tak to wygląda i się kompiluje: [syntax=basic4gl]$regfile = "m128def.dat"...
Pomęczyłem się trochę dzisiaj i chciałbym zapytać czy w dobrym kierunku idę. Poniżej dwa przykłady oraz próbki tego co uzyskałem. Przepraszam za jakość dźwięku. Niestety byłem zmuszony nagrać to przez mikrofon. Kod 1: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 20000000 $baud = 115200 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up...
Witam, W dokumentacji dowolnego mikrokontrolera ATmega z łatwością można odnaleźć tablicę z wektorami przerwań, np. taką: 1 $0000 RESET 2 $0002 INT0 External Interrupt Request 0 3 $0004 INT1 External Interrupt Request 1 4 $0006 INT2 External Interrupt Request 2 5 $0008 INT3 External Interrupt Request 3 6 $000A INT4 External Interrupt Request 4 7 $000C...
Witam, Jestem absolutnie początkujący i mam taki oto program, jego celem jest wyzwalać diodę LED z częstotliwością 56 kHz, pracuję z kwarcem 3,579545 Mhz. Dla samego wyzwalania diody z delayem działa wszystko ok, ale w pętli jest problem. dla działania z pętli dioda w ogóle się nie wyzwala. Proszę o pomoc. Program pisany z pomocą książki Mikrokontrolery...
Chodziło tylko o zamianę Timer1 na Timer0, ale ok mogę pokazać który nie działa... a właściwie który już działa... dobrałem wartości prescale i load całkowicie doświadczalnie... miałem nadzieje że ktoś wyjaśni co i jak z tym przy okazji ale ok... inne pytanie jeszcze... jak ten program się zachowa przy przeniesieniu na atmega8 (8mhz - internal)? (nie...
Nie możesz używać Waitms nigdzie indziej poza pętlą główną. Trzeba to obejść. Wiadomo, że w podprogramach jesteś co 4ms. Co do Portb.5 to nigdzie nie widzę zerowania i dlatego jest ustawiony non stop. [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 1000000 Config Portb = Output Portb = &B1111111 Config Portd = &B11111000 Portd = &B1111111...
compare timer0 capture compare compare timer
wentylatora mercedesa kolektor toyota corolla klawiatura zalać spirytus
TEAC A-2300SX – wzmacniacz, wyjścia liniowe, działanie dźwigni CUE, funkcje odsłuchu Sonoff Basic – podłączenie zewnętrznego przycisku i podgląd stanu w aplikacji (Tasmota, ESPHome)