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...
Oto prosty przykład: $regfile = "m8def.dat" $crystal = 4000000 Config Timer1 = Pwm , Prescale = 1 , Compare A = Disconnect Compare1a = 32768 On Compare1a Oc1a_int Enable Compare1a Enable Interrupts Do nop nop nop nop Loop Oc1a_int: nop nop nop Return Reszta opisana w Helpie :wink: Piotrek
Tu masz dzilajacy kod;) fast PWM na timerze1 rozdzielczosc 8 bit. .include "m8def.inc" .org 0x00 rjmp reset RESET: ldi R16,low(RAMEND) out SPL,R16 ldi R16,high(RAMEND) out SPH, R16 ldi r16,1<<WGM10|1<<COM1A1 out TCCR1A,r16 ldi r16,1<<WGM12|1<<CS10 out TCCR1B,r16 ldi r16,122 out OCR1AL,r16 ldi r16,0xFF...
Musisz przestawić "Option Byte" dla tego pinu na funkcje alternatywną "TIM1_CH1": "AFR0 Alternate function remapping option 0(2) 0: AFR0 remapping option inactive: Default alternate functions(1) 1: Port C5 alternate function = TIM2_CH1; port C6 alternate function = TIM1_CH1; port C7 alternate function = TIM1_CH2." Możesz to zrobić programowo, jak również...
Nie nie rób się kaczką albo sie prześpij ahahahahahaha :D OCIE1B zamieniasz na OCIE1A OCR1B zamieniasz na OCR1A zamieniasz wektor TIMER1_COMPB_vect na TIMER1_COMPA_vect kasujesz wszędzie to TCNT1=0 bo nie ma sensu Dla Timer0, w przerwaniu, pod linijką "dot ++ ; " dopisz TCNT0 = 6; To też można na palcach policzyć: 8MHz to jest na sekundę a sekunda ma...
Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
A nie łatwiej jest policzyć DO ilu ma liczyć a nie OD ilu? :) i robić przerwania COMP a nie OVF? Ja tak robię i na kwarcu 4MHz timer1 odlicza sekundy bardzo ładnie. Ale u Ciebie timer1 wydaje się mieć dobrze ustawianą wartość. Przy prescalerze 256 musisz mieć 15625 taktów zegara, aby osiągnąć sekundę. W drugim coś mi nie gra. Odliczasz od 0x0F czyli...
Dziękuję za odpowiedź. Nie wiedziałem ze muszę podawać wartość OCR1A w przerwaniu bardziej wydawało mi się że trzeba zerować. Chcę użyskać przerwanie do 1 sekunde, 8000000/256=31250 jest dobrym obliczeniem? Taktowanie procka 8 Mhz. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // dioda LED #define LED_PIN (1<<PD7) #define...
Spróbuj na tym: http://www.frank-zhao.com/cache/avrtimer...
Witam, Natknąłem się na problem dotyczący konfiguracji licznika Timer1. Najprawdopodobniej BASCOM zawiera jakiś błąd i używając standardowych instrucji uzyskanie PWM z tego licznika nie jest możliwe. Używając standardowych "Config Timer1..." nie można nawet zmusić Timer1 do zwyczajnego zliczania... Mniejsza o BASCOM, postanowiłem zrobić to samo wpisując...
a spróbuj zmienić z "Clear Up" na "Clear Down". wtedy będziesz miał 0Mocy dla 0 wpisanego do rejestru PWM. a moze pomyliłeś coś na zewnątrz chipa ??
Witam Ten program został napisany na MCU - AT89C2051 ! A nie na AVR Atmega8, dlatego Bascom avr ma problem. Aby go skompilować Musisz to zrobić w Bascom 8051. Ps. przymierzam się do zrobienia tego detektora od roku, ale jakoś czasu nie mam...
Właśnie w tym tkwi problem że nie mam oscyloskopu i nawet nie mam do kogo jechać żeby sobie sprawdzić. Może jakiś pomysł jaki układ dostosowujący zastosować?? Sama dioda nie wystarczy??
1. Przeczytaj dokładnie w manualu co robi ten bit. Kilka stron wcześniej masz obrazki które doskonale pokazują po co on jest. On tylko włącza bądź wyłącza buforowanie, a nie przeładowywanie czegokolwiek. 2. Rejestr ten w Twoim przypadku nie ma wpływu na częstotliwość, bo jego wartość ustawiona jest po prostu na połowę okresu timera, równie dobrze mogłaby...
W kodzie stoi jak byk .... ISR(TIMER1_COMPB_vect) ani widu, ani słychu :-P Dokładnie, a ja już w innym podobnym twoim temacie podpowiadałem ci , że robisz niestety kardynalne błędy podczas konfiguracji Timer1. Bo w książce miałeś timer0 i było tak: [syntax=c]TIMSK |= (1<<OCIE0);[/syntax] Więc gdybyś przeniósł to na Timer2 - to byłoby mniej boleśnie...
Podaj jaki to uP. Ustaw noge OC1A jako wyjście, po konfiguracji timera dopisz: Start Timer1 Pozwinno zadziałać
Witam Też się męczyłem jak zrobić sprzętowo bez żadnych przerwań generator około 36 kHz i 40 kHz. Polecam książkę Pana Piotra Góreckiego "Mikrokontrolery dla początkujących" (oczywiście o Bascomie). To naprawdę jest to jedno z nielicznych źródeł gdzie rzetelnie są rozpisane funkcje Timer1 po polsku. Właśnie testowałem układ Pana Góreckiego na At90S2313...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Może tak: 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 Do Incr Pwm1a If Pwm1a = 1000 Then Exit Do Waitms 10 Loop Do Decr Pwm1a If Pwm1a = 5 Then Exit Do...
Odpowiedź szukaj na stronie producenta www.atmel.com a dokładniej: http://www.atmel.com/dyn/resources/prod_... Generalnie atmel podaje sporo informacji dotyczącej wykorzystania nowych układów w zastępstwie wycofanych z produkcji i wymaganych zmian. Jedynym co trzeba zrobić to poszukać i poczytać ;) http://www.atmel.com/dyn/products/app_no...
Na początek, w konfiguracji Timer1 zmień prescale=64 na prescale=1.
ad 1:Podaj F rezonatora np. 8mhz config timer1 = timer,prescale 256 'konfiguracja timera load timer1 , 31250 'załadowanie timera 1s on timer1 odliczanie 'określenie która procedura ma byc wykonana co 1s enable interrupts 'właczenie przerwań enable timer1 'właczenie timera1 dim twoja_zmienna as long ' twoja pętla do "jakis tam twój program" loop odliczanie:...
Jak sama nazwa wskazuje przy konfiguracji Timer1 masz compareA i compareB. Czyli masz dwa rejestry porowniania które zmieniaja odpowiednie nogi procesora czyli pwm dla tego tajmera są dwa A i B. Noga procka OC1a pierwszy PWM (kanał) i OC1B drugi. Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'regulacja...
Witam panów na forum mam problem mianowicie mam kod żródłowy napisany w Bascomie na sterowanie piecem C O i na początku chciałem go sobie poddać analizie żeby go zmodyfikować pod swój układ nie rozumiem co oznacza konfiguracja timera Oto początek programu $large $crystal = 12000000 deklaracja kwarcu Config Lcd = 16 * 2 deklaracja wyświetlacza Cursor...
robie uklad gdzie chce wykorzystac element max6575lzut.. zapoznalem sie z dokumentacja jednakze nie otrzymuje wartosci zmierzonej.. moze wiecej szczegolow.. uklad podlaczylem do wejscia portd.2 (int0) uP atmega 8... wybralem 5us/K (przez odpowiednie polaczenie wyprowadzene ukladu max).. w programie na wstepie ustawiam port jako wyjscie i ustawiam w...
(at)excray On timer1 impulsuj znaczy: wywołaj przerwanie przy przepełnieniu Wpisując do rejestru timera określone wartości SKUTECZNIE steruję przebiegiem wyjściowym. Więc wybór rodzaju przerwania jest OK. Recz w tym że OPRÓCZ oczekiwanych przerwań wskakują mi jakieś obce (at)nowyARM Czytałem, a po Twojej wskazówce przeczytałem jeszcze raz. Pomijając...
Dla powyższego przykładu wartość dla Timera1 powinna być 7999. 1000ms/800ms=1,25Hz *100=125Hz (clock speed 8000000Hz / (prescaler 8 * częstotliwość 125Hz)) - 1 = 7999 lub dla prescalera 256 wartość wpisywana do licznika 24999 da przerwanie co 0,8s EDIT: Ta linijka coś nie pasuje If Ms1 = 80 Then nie powinno być 100 zamiast 80 EDIT2: A, żeby nie było...
W ATmega8 masz 3 timery:TIMER0(8bit bez funkcji PWM),timer1(16bit z 2 kanałami PWM),i timer2 (8 bit z jednym kanałem PWM) i do tego musisz się zastosować. Wyjścia PWM to PORTB.1, PORTB.2 i PORTB.3 Możesz jeszcze zrobić programowy PWM np. na timer0 i będziesz miał PWM na wyjściu na jakim tylko chcesz. [syntax=basic4gl][/syntax] $regfile = "m8def.dat"...
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
Hmhm, wydaje się, że jednak nie zrozumiałem jaki masz problem... Natomiast sugestia, żebyś nie korzystał z magic numbers pozostaje. Tego po prostu nie da się czytać, więc ciężko pomóc. Jeśli przerobisz to porządnie to pewnie sam znajdziesz błąd.
Niestety symulacja programowa liczników w trybie FastPWM jest nieadekwatna do tego co rzeczywiście robi procesor. Trzeba uruchomić w docelowym układzie lub przez JTAG ICE (ale to są koszta).
Chce uzyskac tryb Fast PWM w Mega32 z TOP zapisanym w ICR1. Ustawiam WGMy zgodnie z Mode14 z datasheet, ale podczas debugowania widze, ze TCNT1L i TCNT1H zmieniaja sie calkiem inaczej. Czy ktos moze mnie oswiecic jak ustawic ten timer, zeby zliczal do zadanej wartosci TOP?
Działa. Pewnie o czymś zapomniałeś na wstępie. Mój działający kod: .include "m128def.inc" .cseg .org0x0000 rjmpreset ;skok po resecie systemu .org0x0018 rjmpdata ;skok po wykryciu zgodności reset: ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 rcallKONFIGURACJA_TIMER1 sei loop: nop rjmploop ;......
Prosze bardzo: 'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM 'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64 'Przycisk S1 zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal...
Mam prośbę . Jak skonfigurować w Bascom i czy wogóle jest to możliwe żeby na ATMEGA8 uzyskać na wyjściach OC1A,OC1B i OC2 trzy regulowane niezależne przebiegi PWM ? Z konfiguracją TIMER1 i compare1a dla PWM na wyjściu OC1A nie mam problemu. I jeszcze jedno pytanie . W nocie do procka ATMEGA8 doczytałem a raczej wydedukowałem bo z angielskim trochę do...
Właśnie cały problem w tym, że program główny ma co robić i nie jest pustą pętlą.. Temperatura musi być stale kontrolowana choćby dlatego aby włączać wentylatory (jest to wzmacniacz) lub reagować np wyłączaniem zasilania.. Dlatego zależy mi aby działało to poza programem głównym.. I pomijając estetykę programu... Czemu to nie chce działać? Co ma odczyt...
Jeśli kopiuję składnię z helpa to są dwie możliwości ale nie będę wywoływał wojny tylko zacytuję Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm No_output , Prescale = 1 Niestety kolega zumek miał i ma rację z tym, że jest to Twoja składnia. A kompilator też wskazuje co jest źle: = expected i tym razem dokładnie. Przykro Mi, ale musisz bardziej wnikliwie...
Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi...
Czytałem DS41196g.pdf moją angielsczyzną - ale pisze : All other logic is held in the Reset state while in Program/Verify mode. This means that all I/O are in the Reset state (high-impedance inputs) - powinno iść bez względu na ustawienia rejestrów - nie doczytałem się też jakichś ostrzeżeń albo wyjątków. To w takim wypadku wadliwy jest programator...
#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #define HC_TRIG (1<<PC7) #define TRIG_PORT PORTC #define TRIG_DIR DDRC #define HC_ECHO (1<<PD6) #define ECHO_PORT PORTD #define ECHO_DIR DDRD volatile uint16_t...
Witam, a co sądzicie o tym (chyba najprostsze rozwiązanie ;) ): .include "2313def.inc" .def acc = r16 ; .cseg .org 0x00 rjmp start start: ldi acc, 127 ; out SPL, acc ldi acc,0 out ocr1ah, acc ldi acc, 50; dla 40 khz, dla 36khz: 55 out ocr1al,acc ldi acc, 0b01000000 out tccr1a, acc ldi acc, 0b00001001 out tccr1b, acc ldi acc, 0b11111111...
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...
Eeeee tam.... Jak to się nie da!? Przykład konfiguracji dla atmega8: Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer2 = Pwm , Async = on , Prescale = 1 , Pwm = On , Compare Pwm = Clear Up Pwm1a = 255 Pwm1b = 255 Ocr2 = 255 Pozdrawiam.
tak, teraz te 2 przypisania odnoszą się do Timera 1 i wyprowadzeń oc1a i oc1b, więc poprawnie zakładając, że konfiguracja uwzględnia tryb 10-bit, czyli: Config Timer1 = Pwm , Pwm = 10, Compare A Pwm = Clear Up, Compare B Pwm = Clear Up, Prescale = 1
Nie ma znaczenia czy pętla główna jest pusta czy nie. Ja uczyłem się na programie właśnie tak skomponowanym. Cały program był wykonywany podczas przepełnienia licznika. Co do podziału to proszę ATMEGA 8 na zegarze 8MHz Config Timer1 = Timer , Prescale = 256 'konfiguracja timera On Timer1 Cykl 'realizacja podprogramu cykl po przepełnieniu Enable Interrupts...
Zmień myślenie o przerwaniach [syntax=c] volatile uint8_t BuforLED[4];// bufor wyswietlacza LED // konfiguracja przerwania tak jak miałeś // obsługa przerwania bez delayow ISR(TIMER1_COMPA_vect) { static uint8_t BiezacyLED = 0; PORTD|=0XeF; // zagas wszystko if(BiezacyLED) BiezacyLED--; else BiezacyLED = 3; // zaladuj do portu odpowiedzialnego za cyfrę...
Przeanalizuj sobie to. Dorób ustawianie zegara i gotowe. $regfile = "m8def.dat" $crystal = 4194304 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0 Config Timer1 = Timer , Prescale = 64 'konfiguracja timer1 Dim Sekunda As Byte Dim Minuta As Byte Dim Godzina...
Jeśli chodzi o PWM to dorzucam Ci 2 programy sterowania PWM za pośrednictwem 2 przycisków w języku BASCOM. 'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM 'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64 'Przycisk SI zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika...
[syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat" 'informuje kompilator o pliku $crystal = 8000000 'informuje kompilator o częstotliwości oscylatora Reset Pinb.1 'Sterowanie podświetleniem: Reset - włączone Set - wyłączone Config Pina.7 = Input 'port wejściowy PRZYCISK Config Pinb.1 =...
Dwa razy włączasz Timer0. A pewnie chodziło Ci o to żeby włączyć Timer0 i potem Timer1.
Wiec tak też jestem początkujący, właśnie częściowo też korzystam z tego programu. Udało mi sie zrobić z niego właśnie zwykły licznik impulsów. Generalnie to brak w tym kodzie jest obsługi wyświetlacza LCD, jak sam widzisz nie jest skonfigurowany gdzie jakie porty procka maja nim sterować , jest niekompletna konfiguracja Timer1.To tyle czego brak na...
Witam, Czego nikt nic nie pisze?? :cry::cry::cry::cry::cry: Stworzyłem taki program: '**********************************' '******* Program Robota HF1 *******' '******* Made by Hubert *******' '**********************************' ' Konfiguracja mikrokontrolera ATmega8 $regfile = "m8def.dat" $crystal = 10000000 ' Konfiguracja Portów Config Pind.0...
dobra dziala dziekuje :D to teraz mam problem z SPI :( :D chyba wroce do mojego wlasnego tematu i tez SPI sobie zainicjalizuje poprzez bezposrednie wpisanie wartosci a nie korzystajac z funkcji STM ;p staram sie wpisywac sam wiekoszosc inicjalizacji, ale ten projekt jest wykonany przez kogos innego i teraz trzeba poprawiac i szukac bledow. Dzieki za...
A co ma się dziać jak w pętli DO...LOOP jest nic.Jakieś INCR coś.
... ale dlaczego tak jest, skoro oba rejestry po resecie mają wszystkie bity wyzerowane? System Arduino dodaje jakąś domyślną konfigurację mikrokontrolera?
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...
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
$regfile "m8515.dat" $crystal = 8000000 Enable Timer1 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Timer1 = 34286 dim sek as byte do loop Sekunda: Timer1 = 34286 Incr Sek Return Powinna byc rowna sekunda (wyliczone przez kalkulator avr) Ps. Timer startuje w momencie jego konfiguracji wiec jesli nie chcesz go uzywac odrazu,...
Cześć Taki problem napotkałem. Obliczenia czasu generowanego przez timer są trywialnie proste. Z wyliczeń jednak wychodzi mi jednak wartość zupełnie inna niż z pomiarów po zaprogramowaniu. Program wygląda tak #include <16F873A.h> #include <definicje.h> #fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP #use delay(clock=20000000) #define...
Myślę, że można bez problemów ten program przerobić. Będzie jednak kilka problemów. 1. Maksymalny zegar dla układów serii L to chyba 8MHz, chociaż mogę się mylić. W oryginale uC chodzi na 12MHz. 2. Trzeba zmienić konfigurację TIMER0 i TIMER1 które w AVR Bascom sa "trochę" inne. Ale w ogóle sądzę, że jest to do zrobienia.
Witam Chciałem skonstruować sobie projekcik umożliwiający przećwiczenie timera i przerwań zewnętrznych. Nie chciał działać, więc ostatecznie uprościłem go do granic możliwości i dalej nic... Założenie jest proste: po wciśnięciu przycisku na pinie odpowiadającym INT0 następuje uruchomienie TIMER1, który naprzemiennie włącza i wyłącza diodę w odstępie...
"Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1" Przy tej konfiguracji to chyba nigdy nie wejdzie w przerwanie od Timer1. Gdy osiągnie Compare1a = 600 to dzięki poleceniu Clear Timer = 1 licznik zostanie wyzerowany. A przerwanie Poz: jest uruchamiane dopiero po przepełnieniu licznika. Ale ja nie mam zaufania do konfiguracji...
Witam Mam dziwny problem z konfiguracją timer1 w atmedze644pa w trybie CTC. Kod jest następujący: [syntax=c] #define TIMER1_OCR 10801//10799//10800 // 1 sekunda void timer_init(void) { TCCR0A=(1<<WGM01); TCCR0B=(1<<CS02)|(1<<CS00); OCR0A=TIMER0_OCR; TIMSK0=(1<<OCIE0A); TCCR1B=(1<<CS12)|(1<<CS10)|(...
Przede wszystkim start timer powinno być po wszelkich konfiguracjach i deklaracjach, np.: config.... Load Timer1 , 50 On Timer1 Obsluga Enable Timer1 Enable Interrupts Start Timer1 Do . . Loop obsluga: . . Return
Właśnie. Zacznij od konfiguracji timera instrukcją CONFIG TIMER1 = PWM , PWM = 8 | 9 | 10 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR UP | CLEAR DOWN | DISCONNECT Reszta w help'ie.
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
Dzięki za odpowiedź jednak najbardziej zależy mi na konfiguracji PWM.
Proponuje logikę w Diagram Editor przykład z zegarem astronomicznym ustawionym na timer1. https://obrazki.elektroda.pl/8400860900_...
Nie rozumie twojego postu . W warunkach kempingu nie wezne sieci . Zmodyfikuje aby przelaczalo na zmiane. $regfile = "m8def.dat" 'atmega 8 $crystal = 8000000 '8 mhz 'INNE KONFIGURACJE Config Timer1 = Timer , Prescale = 256 Config Portd = Output On Timer1 Juz '625 Enable Interrupts Enable Timer1 Load Timer1 = 624 ' powinnno byc 625 ale 0 to...
Projekt to może nie jest, raczej element/część możliwości układu jakie staram się poznać. Na płytce Amtega32 Dwa wejścia/przyciski, uruchomiony Timer1 dla obydwu wyjść PWM. Sterowanie ( na razie LED ( chcę halogeny do tego podpiąć przez tranzystor NFET ), jeden przycisk/wejście - jedno wyjście ( tylko tak ciekawie, że na przemian, dłuższe przyciśnięcie...
Nie znałem tych trybów czyli wpisuję wartość do porównania i jeśli jest zgodna następuje zmiana stanu Compare. Ale licznik będzie dalej liczył pozostałą wartość i tu będę miał znów przerwę. Czy w konfiguracji timera dopisujęs clear timer1 = 1 spowoduję, że po sukcesie porównania timer zostanie wyzerowany ?
No, cóż. Mogłeś użyć symulatora, debuggera który by jasno i wyraźnie odpowiedział na pytania o pełne działanie instrukcji START i STOP. START dokonuje ponownego wznowienie działania licznika przez odtworzenie zapamiętanej wcześniej jego konfiguracji. STOP zmienia prescaler na 0 by licznik całkowicie zatrzymać. To jedyne działanie tych poleceń. Ale uważaj,...
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 lepiej wykorzystać przerwanie ICP1 timer1. Tam przepisywać zapamiętaną wartość timer1 (timer1 w konfiguracji timera zmienna = capture1), i przeliczać na prędkość, znamy przecież drogę (odległość między magnesami) a potrzebujemy tylko czas pomiędzy kolejnymi przerwaniami wywołanymi tymi magnesami. Po co zliczać ilość impulsów (drogi) w danym czasie...
Impulsy są z czujnika z zewnątrz - powiedzmy klawisza który podaje 5v czy tam mase. Konfiguracja jest tu Config Timer1 = Counter , Edge = Rising czyli t1 jest wejściem i zbocze zwiększa wartość timer1 co spełnia warunek If Timer1 = 1 Then Timer1 = 0 i tyle. Działa bo widzę na układzie tylko czy czasy sie zgadzają nie mam pojęcia skoro mam Counter0 =...
bo chce by dioda migała co 1 sekunde zamień: PORTB |=(1<<led1); na: PORTB ^=(1<<led1); a funkcje timer_init(); wywołaj tylko raz, przed while(1). To jest jednak za mało.. W programie są źle skonfigurowane rejestry TCCR1A oraz TCCR1B Taka konfiguracja ustawi Timer1 w tryb CTC: http://obrazki.elektroda.pl/5627952700_1... natomiast...
Witam mam taki oto kod do konfiguracji Timer1 w tryb PWM dla kanałów 1 i 2. [syntax=c] #define PWM_FREQ400// Hz #define PWM_STEPS80 #definePWM_CLK ??? #definePWM_PRE (PWM_CLK / PWM_FREQ / PWM_STEPS) // PWM timer setup - TIM1 {&RCC->APB2ENR, RCC_APB2ENR_TIM1EN},// TIM3 {(__IO uint32_t *)&TIM1->PSC, PWM_PRE - 1},// prescaler {(__IO uint32_t *)&TIM1->ARR,...
Właśnie mam na mysli TIMER1 i TIMER3. Czyż nie są 16-bitowe ?
AtTiny2313 nie ma wbudowanego przetwornika AD, więc w prosty sposób się nie da. Można zawsze używając kilku elementów zrobić prosty przetwornik, ale patrząc na ceny innych uK, np. AtMega8, który ma dużo większe możliwości, nie ma to sensu. A wystarczyłoby uruchomić PWM w rozdzielczości 10 bitowej i bezpiśrednio przypisywać mu wartość odczytaną z przetwornika,...
Witam Wykorzystałem do odbioru kod podany przez Kolegę Mirka [syntax=basic4gl] $regfile = "m168def.dat" $crystal = 10000000 'taktowanie procesora $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 10 ' rozmiar stosu $framesize = 40 ' rozmiar ramki $baud = 9600 ' predkość transmisji Config Debounce = 30 '********************* konfiguracja UART Config...
Zmieniłem w liniach z Load na Timer1 = A ale nic to nie dało nadal 10us. Podejrzewam że nie pracuje z preskalerem =1 prawidłowo. Gdzieś czytałem z rok temu że kod programu będzie pracował z zegarem 14MHz (tak jest u mnie) a Timery z 8Mhz. Prawda czy nie ?. Z obliczeń na kalk.exe do wyliczania Timerów jeden cykl Timera przy 14Mhz to około 0.07us.Czyżby...
Wzorcowy układ : http://obrazki.elektroda.pl/6609990300_1... i program ze znanej książki : [syntax=vb]'Program sterowania jasnością dwóch diod LED za pomocą sygnału PWM 'Rozdzielczość sygnałów PWM 8 bitów 'Częstotliwość sygnału PWM ok. 15,6 kHz $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal =...
Witam Mam problem z czujnikiem HC-SR04. Walcze z tym programem i nie wiem czemu mam błąd z funkcją "soft_timers_init();" pokazuje mi błąd: "undefined reference to `soft_timers_init'" ktoś może wie o co chodzi ? I jeszcze chciałbym ustawić preskaler 16 ale również nie wiem jak to zrobić. Proszę o pomoc. Poniżej zamieszczam kod. Dodano po 2 Program ma...
Witam, jakiś czas temu pisałem post o ultradźwiękach w tym dziale. Okazuje sie że moj problem jest troche innej natury więc zakładam nowy temat. Mój procesor (ATtiny2313) czasami wpada w cykl resetowania się. Chodzi o to że w kodzie np. najpierw wyśle przez UART literkę 'E' a poźniej wpada w pętle nieskończoną.. Niestety po jakimś czasie program ciągle...
Witam Ostatnio chciałem zbudować inteligentny wyłącznik na ATTiny2313 zrobiłem układ podłączyłem procesor do niego sprawdziłem wszystkie obwody wejść i wyjść i gdy upewniłem się że wszystko dział sprawnie zabrałem się za pisanie właściwego programu, jednak już przy pierwszych testach okazało się ze procesor działa ale jakby bardzo wolno, postanowiłem...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down, prescale 1 przy konfiguracji musisz dodać opje "prescale" w helpie tego nie napisali ale jak jej nie dodasz to ci pwm nie ruszy start timer1 i zadajesz wartosć wypełnienia np. Pwm1a = 100 Pwm1b = 200 i smiga
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?...
Następnym razem napisz jaki mikrokontroler i z jaka prędkością jest taktowany. Problemem może być to że chcesz coś wyświetlać w procedurze obsługi przerwania. Lepiej unikać takich sytuacji. Pewniejszym rozwiązaniem będzie ustawienie tylko flagi w przerwaniu i szybki powrót z niego. Potem w programie zająć się wyświetlaniem kiedy napotkamy flagę. Druga...
Przedstawiam sposób odbierania znaków z nadajnika (bez zastosowania przerwań). Co prawda używam AVR studio z GCC, lecz nie powinno być problemu z zaadaptowaniem poniższego algorytmu do każdego języka. Wykorzystuję hardware'owy moduł szeregowy SPI do komunikacji, ale to w tym przypadku nie ma znaczenia. Nie wklejam bezpośrednio kodu bo całość będzie...
Witam. Jak wczytać zamiast wartości I (For I = 0 To 255), elementy tablicy i nimi wysterować wypełnieniem? Tab1: Data 94 , 61 , 115 , 13 , 97 , 127 , 73 , 79 , 127 , 127 , 119 , Data 107 , 127 , 95 , 89 , 64 , 255 , 65 , 0 , 100 , 90 , 65 , 60 , Data 127 , 125 , 60 , 70 , 80 , 0 , 65 , 90 , 65 , 0 , 78 , 63 , 10 , Data 3 , 10 , 28 , 15 , 60 , 127 ,...
Jestem początkujący w dziedzinie programowania Atmelków. Mam zamiar zrobić licznik impulsów , który w pierwszej linii wyświetlacza LCD 2*16 , będzie wyświetlał ilość impulsów , zaś w drugiej ma pokazywać ilość obrotów na minutę. Generalnie ma to rejestrować przebiegi wolnozmienne ok 1Hz nawet ciut mniej. Zaczerpnąłem kawałek kodu oczywiście z netu ,...
Witam. Patrz komentarze które dodałem do Twojego listingu: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.3 = Input 'pinb.1 jako wejscie Config Pinb.2 = Input 'pinb.2 jako wejscie Config Lcd = 16 * 2 'jaki zostal podlaczony wyswietlacz LCD Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4...
Najlepszym rozwiązaniem w tego typu przypadkach jest generowania przerwań za pomocą TIMERa lub sieci energetycznej ( np przy detekcji "zera" ) i ustawianie odpowiednich flag: ' konfiguracja timera1 Config Timer1 = Timer , Prescale = 256 Enable Interrupts Enable Timer1 On Timer1 Co10ms Nosave .... .... .... Co10ms: Stop Timer1 Set Menu_lock Load...
Dzięki wielkie. Fakt - zgubiłem to w trakcie. Tylko, nadal przerabiam temat i ustawienia, żeby otrzymać 1s. Bo nadal wyprzedza LED :P Ale naprzykład; Zmieniłem fusebity na 1MHz (zegar wewn), przerobiłem kod (prescaler) i o dziwo, mam 1 sekundę na LED (przez minutę żadnej różnicy), więc co jest nie tak przy 8Mhz? zmieniony kod; Dodano po 48 Osobiście...
A niby jak UART ma nadawać w dwie strony? Potrzebuję RX i TX... A w takiej konfiguracji działa tylko RX.
Usiłuję napisać program takiego miernika i podczas analizy konfiguracji timer-ów w różnych tego typu projektach a szczególnie w jednym (ale o tym później) pogubiłem się trochę i pojawiły się wątpliwości. Do testów używam platformy arduino nano (atmega328p, 16MHz, 5V) i na chwilę obecną napisałem coś takiego: [syntax=c]#include <Wire.h> #include...
Witam, Bawię się STM32F0Discovey i chciałem sobie w ramach testu skonfigurować bez użucia bibliotek od ST Input capture na Timer1 Chanel1. Chciałbym,aby mierzyło mi na PA8, więc skonfigurowałęm tą nóżkę jako Alternate function mode. Jako sygnał podłączyłem PC8 (połączyłem kabelkiem PA8 z PC8). Gdy to zrobiłem, to dioda niebieska przestaje pulsować....
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Witam. 1./ konfiguracja Timera1 musi być w jednej linii jako całość np. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect Po za tym masz nie pozamykane prawidłowo warunki IF. Poniżej przykład całości: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.4 = Input Config Pinb.2 = Input Config Pinb.1...
timer1 winavr timer1 odlicza timer1 zlicza
vectra błędy komputera katalizator toyota iskrownik beretta
Zatarte koło taczki - jak naprawić? Schemat elektryczny spawarki Magnum SNAKE 220 PROFI