Ldi Acc, 1;(...) Out TCCR1A, Acc Tym sposobem ustawiasz licznik w tryb PWM, Phase Correct, 8-bit . Strona 120, Tabelka 53 pdf-a od ATmega8515 . -- Pozdrawiam, Daniel
W międzyczasie edytowałeś post i przedstawiłeś nowe dane. Mój teraz na razie będzie się tyczył tego co pisało wcześniej. Jeśli chciałbym rozdzielić dwa impulsy na dwa różne piny to zrobiłbym tak: Podłączył sygnał do zewnętrznego przerwania. Kiedy nadchodzi pierwszy plus to ustawiam flagę na 1 i wracam do pętli głównej. W niej tak długo jak pin jest...
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
A ten Twój timer1 nie liczy może w dwie strony? Mode 11, PWM, phase correct.
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...
Masz gotowca. Jestem ciekaw czy zadziała. On Timer1 Timer1_handler Dim Timer1_licznik As Byte Dim Buffer(512) As Byte Dim Write_position As Word Dim Read_position As Word Open S For Binary As #2 For Write_position = 1 to 512 Get #2 , Buffer(Write_position) Next Write_position Write_position = 0 Enable Timer1 Do If Write_position <>...
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:...
Ja osobiście jestem przeciwnikiem nadużywania makr, czasmai są przydatne, ale jak pisał (at)gaskoin specyficzne hardwarowo fragmenty kodu lepiej przenieść do oddzielnego pliku i stworzyć coś na wzór prostego HAL. O ile makra jeszcze mogą się przydać np. do zmian stanu pinów IO, czy operacji, które w kodzie wykonywane są często, o tyle wydaje mi się,...
Ja mam taki program zrealizowany na Atmedze8. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 40 $framesize = 40 Config Portb.1 = Output 'wyjscie triak Triac Alias Portb.1 Config Rc5 = Pind.7 'rc5 pin timer0 Dim Level As Word 'poziom sciemniania 1 - 20 Dim Timer_val As Word 'wartosc timer1 dla sciemniania Dim Command...
Proszę. Przerobiłem to przy kubku kawy dosłownie w 15 minut tak tylko dla zabawy. Najdłużej robiłem te ikonki czasów T1,T2,T3 i T4 :D Wszystkie cztery czasy są liczone od momentu startu bo nie napisałeś czy ma mierzyć międzyczasy ;) Może taki prosty kodzik kogoś ucieszy :D https://filmy.elektroda.pl/3_1453327306.... [syntax=vbnet]'STOPER '--------definicja...
Tojmak987123 pomyliłeś pojęcia: Szerokości wypełnienia nie mierzy się w Hz tylko w procentach lub jednostkach czasu (np. mikrosekundach). Twój program wywołuje przerwanie Timera0 co (256-194)*64 cykli zegara, Timer1 jest ustawiany 5 razy rzadziej czyli co 19840 cykli zegara tylko tyle możesz nim odmierzyć (a nawet trochę mniej ze względu na czas ustawiania)....
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Jeśli chodzi o soft, to powstał szkielet programu. Na razie odmierza to czas, i powinno obsługiwać pilot RC5. W polach „A:” – powinien wyświetlić się adres pilota, „C:” – numer przycisku z pilota. W symulacji programowej poszło, ale na razie nie mogę przeprowadzić prób z braku modelu. Ale żeby stworzyć wersje BETA...
Tak, jak już pisałem, nie tędy droga. Trzeba zrozumieć, ze Menu czyli interfejs programu z człowiekiem powinno być tylko jego nakładką graficzną. Nie może być tak, że kiedy jesteś w Menu to program zaniedbuje cały system, na przykład nie pilnuje zadanych temperatur. Pomyśl co by było gdyby termostat sterował grzałką w akwarium a Ty sobie radośnie wszedłeś...
To jest przykład dla Atmega8, nie wiem czy pomoże: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.0 , E = Portc.2 , Rs = Portc.1 Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Cursor Off Cls Rem konfiguracja portów Dim R As...
W tym momencie nie mogę; ale podłączyłem poprawnie zasilanie bo świeci się dioda na sterowniku, i jedną nózkę sterownika do masy, a drugą do pinu 11 w Atmedze... Nie możesz mieszac 'zwykłej' numeracji pinów mega8 z numeracją przyjęta w Arduino. Te numery nie pokrywaja się !!! Pin 11 dla Mega8 jest PD5 lub alternatywne wejście Licznika/Timera1 (w Arduino...
(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...
\ 1. Rozumiem, że ustawienie odpowiedniej częstotliwości da mi czas, który jest mi potrzebny? Tak, program z tego postu demonstruje rejestry i bity których odpowiednie ustawienie spowoduje daną częstotliwość przerwać timerów, a w konsekwencji odpowiednią częstotliwość wysyłania tekstu / migania diodą, jednak obecny ustawiony czas jest przykładowy, nawet...
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...
Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Program zajmuje 50%. Może i jest źle napisany ale działa.. Ja bym to stwirdzenie troche skorygował; Program działa tak jak jest napisany!... bo - "Jest jeszcze jeden problem." Co jakiś czas temperatura podskakuje o 10 stopni a czasami nawet do 200 podskoczyło co spowodowało zbędne załączenie przekaźnika. Z czym jest problem? Popatrz na pracę timera0,...
Po pierwsze, jest zmienna o nazwie "swr" oraz próba deklaracji podprogramu o tej samej nazwie. Najprościej zmienić nazwę podprogramu na inną. Taki kod mi się skompilował: [syntax=vbnet] '---------------------------------------... ' SWR-Meter DL8UA '---------------------------------------... $regfile = "m8def.dat" $crystal...
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
Witam. Jak zapisać coś co w ATMega jest zapisane tak: "Config Timer1 = Timer , Prescale = 8 " w 89s8252 bo nie bardzo wiem o co chodzi z wartością PRESCALE
Cześc. Chcę użyć licznika timer/counter1 w układzie Atmega128 w trybie CTC. Potrzebuje aby przy zgodności następowało przerwanie. Po przeczytaniu Datasheet juz nie wiem o co chodzi w tym. Dlaczego i jak sie do tego zabrac skoro są tam aż 3 rejesrty OCR1A, OCR1B i OCR1C. Czy wpisując do tych rejestrów rózne wartości będą 3 przewania, o co tu chodzi z...
Cześć Robie nadajnik i odbiornik podczerwieni w jednym korzystam z przerwania od przechwytywania czy na czas nadania muszę zablokować przerwanie wywołane zboczem opadającym lub narastającym (Timer1).Czy może nie muszę?????????
W trybie CTC wartość timera jest zerowana, gdy TCNTx jest równe OCRxA. Nie pojawia się tutaj sprawdzenie w relacji większy/równy. Tak więc jeśli w danym momencie OCRxA jest równe 100, TCNTx 98 i w tym momencie zostanie wpisane do OCRxA wartość 96 to nie zostanie spełniony warunek dla TOP, timer będzie się zwiększał aż do 65535 (długa przerwa) kiedy...
Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Jezeli to ma sluzyc jako wyniki konkretnych badan "na endurance", to musisz dolozyc staran aby wyniki byly dokladniejsze a moc processor byla bardziej prawidlowo wykorzystana. Wiec tak na...
Dziekuje za pomoc, teraz wszystko działa jak należy, teraz pojawił się następujący problem: Ponieważ transoptor który służy do wykrywania zera, wykrywa zero ok 2ms po faktycznym zerze sieci, nie mogę dostać pełnej sinusoidy zasilającej żarówkę, ponieważ nawet gdy wyzwalam triak w momencie uruchomienia przerwania int0 (timer1=65535) to zostanie podana...
Witam, kod nie jest moje autorstwa, więc nie chcę go umieszczać . W każdym razie algorytm jest realizowany w następujący sposób: 1. Wysłanie za pomocą UARTu informacji do uC o zezwoleniu na regulację prądu + wysłanie wartości współczynników regulatora i prądu referencyjnego. 2. Jeśli ustawiona jest flaga zezwalająca na regulację, oraz ustawiona jest...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
Opczytaj o działaniu operatorów. & to operator iloczynu logicznego, czego się spodziewasz? Ma być PORTC^=0xFF;
Witam ponownie, Poszedłem o krok dalej i moim planem jest podłączenie każdego z czterech wtryskiwaczy do osobnego pinu Arduino Uno/Nano z Atmega 328p. Pozwoliło mi to na skonstruowanie programu aby sterować każdym wtryskiwaczem z osobna z tą samą częstotliwością i wypełnieniem, ale sygnał do ich wysterowania jest przesunięty około 90° (problem z rozdzielczością...
https://obrazki.elektroda.pl/5445428700_... Cześć, Chciałem przedstawić Wam zegar widmowy, który niedawno wykonałem. To jest moja odskocznia od pracy i małe DIY po godzinach. Moje podstawowe założenia to możliwie najprostsza konstrukcja pod względem elektronicznym i mechanicznym oraz jakaś tam doza estetyki. Mózgiem zegara jest Atmega...
Mam problem z plikiem w którym brakuje zamykającej klamry. Szukam jej od dwu dni i już dostaje oczopląsów. POMÓŻCIE proszę ślepemu odnaleźć błąd. // ################################## // ###### SOLAR_MONITOR SYSTEM ###### // ######## ZEGAR STERUJACY ########## // ################################## // created margas 2012 modify 2025 // fusebity atmega...
Witam, Atmega 8, Timer1. Prosty generator: przerwanie od timera1 ze skróconym cyklem, pętla główna pusta, w przerwaniu zmieniam stan portu. Niby proste... Oto kod: http://obrazki.elektroda.pl/8467182600_1... Są to regularne skrócenia cyklu z 1.085ms na 0.6355ms. Proszę o wyjaśnienie co to jest i jak sie tego pozbyć?
http://obrazki.elektroda.pl/5959558100_1... Witam :) Razem z kolegą chcielibyśmy się pochwalić naszą maszyną :) Jest to ramie robota oparte na serwomechanizmach modelarskich. Ja zająłem się sterowaniem i elektroniką, a kolega robił projekt 3D w SketchUp i konstrukcje http://obrazki.elektroda.pl/9008440700_1... Początkowo...
Czy przed załączeniem PWM mam używać enable time1 i po wyłączeniu disable timer1
Witam, bardzo proszę o pomoc. Zrobiłem układ na Atmega32 z podłączonymi diodami do całego PortuA, oraz do PortuB Pin2 (PB2) dekoder podczerwieni TSOP31236 (testowałem też na TSOP31238). Wykorzystać chciałem bibliotekę IRMP https://obrazki.elektroda.pl/6945425800_... a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Dziwne zachowanie :?: Możesz jeszcze wrzucić ten kawałek kodu, gdzie inicjujesz Timer1 :?:
Przerwanie wolę mieć wolne. Poza tym przez zastosowanie ICP zajmuje się wyłącznie Timer1 a nie Timer0 i Int)...robiw
Używam Timera1 z Atmega164P w trybie CTC, Atmega ma kwarc 16MHz, interesujący kawałek programu wygląda tak: Konfiguracja Timera: void Timer1_Init(void) { DDRD |= (1<<PD7); // PD7 wyjście PORTD |= (1<<PD7); // PD7 <= 1 TCCR1B = (1<<WGM12)|(1<<C...
No właśnie timer1 ma przerwania co 1ms. Używam panelu dotykowego nextion, korzystając z gotowej biblioteki arduino przesyłam dane po RS z prędkością 9600bodów. Nadawanie zostaje przerwane przez timer1, a przy dokończeniu nadawania cała transmisja nie zawsze sie zgadza, dlatego zależałoby mi żeby zmienić priorytet przerwania USART2 na wyższy niż timer1
Sprawa jest następująca, zaprojektowałem na ATMega mały system który używa kliku przerwań sprzętowych a mianowice INT0,INT1, oraz przerwania timera Timer0,Timer1. Dodatkowo program (w C) obsługuje przetworniki ADC oraz DAC podłączone pod magistralę SPI. Generalnie wszystko działa OK ale czasem pojawiają się nieprawidłowe wartości napięć na wyjściu przetworników...
W AVR studio u mnie też to ladnie działa. A w układzie rzeczywistym jest zupełnie inaczej :/. Z tego co zaobserwowałem wygląda na to że moja ATMEGA nie powraca z części KONFIGURACJA_PINOW, ale nie wiem czemu.
ok, więc może być na konkretnym przykładzie: Mam płytkę AND-TECH.PL EvB 4.3 (mikroprocesor to: ATMEGA 32, 16 PU). Więc jak mogę sobie skonfigurować Timer1 i Timer0 na tym mikroprocesorze przy rezonatorze 16Mh by odmierzał mi czas (zegarek godziny:minuty:sekundy). Jak mogę dobrać preskaler i jak wygląda tok obliczeń. Informacje te są mi potrzebne na...
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...
Właśnie próbuję uruchomić 4 wyjścia PWM na Atmedze 162 (TFQP 44) Mam podłączone : PB0 (OC0/T0) - timer0 PB1 (OC2/T1) - timer2 PD5 (OC1A) - timer1 PE2 (OC1B) - timer1 Zacząłem od timer2, i zrobiłem tak: $regfile = "M162def.dat" $crystal = 11059200 $baud = 9600 ' wyjścia PWM Config Pinb.0 = Output Config Pinb.1 = Output Config Pind.5 = Output...
Wektorów przerwań szuka sie nie tyle w dokumentacji winavr co w dokumentacji kontrolera, który się programuje. Nazwa wektora to nazwa przerwania ze spacjami zastąpionymi podkreślnikiem i dodanym przyrostkiem _vect np przerwanie od przepełnienia timera 1 w atmega 32: w dokumetnacji sekcja Interrupts (str. 42) 10 $012 TIMER1 OVF Timer/Counter1 Overflow...
Dzięki za sprawdzenie tego na oscyloskopie. To mi dużo pomoże. Tak myślałem, że impulsy są wyjątkowo krótkie. Bo okres powinien być OK. Dodano po 26 Rozwiązałem problem poprzez wyłączanie TIMER1 gdy nie jest potrzebny. Oto poprawiony kod, może się komuś przyda. [syntax=c] #include<avr/io.h> #include<avr/interrupt.h> #include<HD44780.c>...
O tez ciekawie!!! Ja mam tylko koncepcje co do wykrycia Synchro: ATmega po zmianie z 1 na 0 wywoływane jast Int0 wtedy uruchamia się Timer1 i liczy impulsy do pojawienia 1 na tym porcie i zatrzymuje Timer1 sprawdzam czy licznik 62500 przeszedl ponad dwa razy jak tak to nie bylo zmiany z 1 na 0 w 59 sekundzie wtedy powinienem zliczac od nowa Timerem1...
Użyj przerwania od przechwytywania kiedy uc wykryje zmianę stanu na pinie ICP1 z niskiego na wysoki to jak będziesz miał odblokowane to przerwanie oraz będziesz miał odpowiednią reakcję(w tym przypadku to ma być zbocze narastające bo z 0 do 1) to wywoła si się przerwanie i w tym przerwaniu możesz zobaczyć ile timer1 zliczy ci impulsów
W takim razie: w jak sposób i w którym miejscu następuje podłączenie głównego pliku irmp.c z poziomu irmp.h? W źródłach IRMP są przykłady jak używać z konkretną rodziną procków. irmp_get_data Powyższy plik mógłby być po prostu bazą dla twoich funkcji. Najważniejsze oczywiście jest to, że irmp.c musi być poddane kompilacji a potem linkowaniu. W tej...
Założenia projektu: -wykrycie ruchu i obecności żółwia na wyspie i załączenie oświetlenia i żarówki grzewczej wysypy -wyłączenie oświetlenia i żarówki grzewczej wyspy w przypadku zejścia żółwia do wody W tej chwili wygląda to tak. Procesor Atmega 8 i czujnik PIR. W przypadku wykrycia ruchu przez czujnik PIR startuje Timer1. Gdy Timer1 zliczy do ustawionej...
Zmieniłem to tak: Dodano po 6 I Atmega działa na 16MHZ
Dokładnie tak. Pytanie z jakiego uP korzystasz? Np.: tiny2313 ma 4 wyjścia OC: OC0A i OC0B dla Timer0 oraz OC1A i OC1B dla Timer1. Dla mega8 masz trzy wyjścia OC: OC1A i OC1B dla Timer1 oraz jedno dla Timer2 (OC2) Co do wejść oznaczonych TOSC1 i TOSC2 - w kontrolerach ATmega służą do podłączenia kwarcu zegarkowego (32kHz). Przy wykorzystaniu licznika...
Dzięki. A co do odwoływania się ( np. config timer1 = timer,prescale 64 ) będzie to dobrze ?????
Witam Spotkałem się z następującym problemem. Korzystam z generacji częstotliwości przy użyciu obydwu kanałów Compare. Niestety otrzymuję zupełnie losowo (przynajmniej w moim postrzeganiu) synchronizację 2 przebiegów. Raz są zgodne raz są w przeciwfazie. Czego nie konfiguruję lub konfiguruję źle że tak się dzieje? [syntax=vbnet]Config timer1 = timer...
Oto fragment kody ktory ustawial PWMa. Dodam ze testowalem na ATMEGa 16 w Bascomie 3 PWMy i wszystkie dzialaly. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8 Pwm1a=245; // zapisuje do PWMa A jaka wartosc i rozpoczyna on prace. Tak to mniej wiejce wyglada, dziwne ze u Ciebie nie cche ten PWM dzialac.
Witam. Na wstępie chciałbym napisać iż szukałem informacji na ten tematu na tym forum a także na google ale nie znalazłem jednoznacznej odpowiedzi. Otóż czy używając sprzętowego PWM w uC blokuje jego timery? tj. o co mi chodzi. Otóż atmega 168 posiada: 6 kanałów PWM 2 timery 8bit 1 timer 16bit z noty katalogowej widzę iż 6 kanałów PWM OC0A - wykorzystuje...
Witam Wyświetlacz musisz zrobić w przerwaniu. Częstotliwość odświeżania każdego powinna wynosić minimum 50Hz. Lepiej unikać dokładnej częstotliwości 50Hz. Może to być np. 53.5Hz. Jeśli ma np. 4 takie kostki to częstotliwość powinna wynieść 4 * 53.5Hz czyli 214Hz lub jak kto woli przerwanie powinno być wywoływane co 4,67 milisekundy. Od tego bym zaczął....
Witam, Chciałbym przerobić nie swój kod programu pod żyroskop l3g4200d. Kod znalazłem w internecie jest napisany właśnie na atmegę 1284p, a ja potrzebuję go przerobić na atmegę8. Kod wygląda następująco: [syntax=basic4gl]'======================... ' Project: L3G4200D 3tripple axes gyro Test #1 '...
Nie za bardzo się nadaje. Musisz poszukać rezonatora kwarcowego z częstotliwością która dzieli się przez potęgę 2. Poza tym atmega ma chyba wewnętrzny oscylator ustawiany na 128kHz trochę mało ale zależy co zamierzasz robić.
Witam! Kiedyś, gdzieś w internecie wyczytałem że Hard-spi to szybszy sposób komunikacji procesora z np. kartą sd niż SOFT-SPI. Bardzo długo męczyłem się żeby At128 dogadała się z kartą sd przez HARD-SPI ale w końcu się udało. Napisałem prosty program zapisujący na kartę zmienną typu byte jednocześnie licząc ilość tych zapisów w czasie 1sek. [syntax=vbnet]Wait...
Skupmy się na Twoim sterowniku.. : timer1 (16bit) : ISR(TIMER1_COMPA_vect) { if (pierwszy == 1) PORTA=0; else PORTC=0; TCCR1B=(0<<CS12); TCNT1L=0x00; } ISR(TIMER1_COMPB_vect) { if (pierwszy == 1) PORTC=0; else PORTA=0; } Wiem, że w jednym momencie dajesz ustawienia na dwa serwa, tak jak...
Witam, mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ?? Atmega 32 [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba...
Dopisz jeszcze tak: Config Timer1 = Timer , Prescale = 1 lub Prescale=8 lub Prescale=64 Domyślnie chyba atmega ma wyłączony dzielnik czyli nie podaje sygnału zegarowego na licznik. A w ogóle działa Ci ten transoptor, program dochodzi do wyświetlania na LCD?
Nieprawidłowo zatrzymujesz timer1 w przerwaniu TIMER1_CAPT_vect: [syntax=c]TCCR1B = TCCR1B | B00000000;[/syntax] Dodatkowo po wykonaniu pomiaru nie zerujesz TCNT1 i preskalera Timer1. W jakim celu wykorzystujesz TSM? EDIT: Dodałem Ci 25 punktów bo miałeś 0,25. PS. Twój kod to praktycznie już C :)
Wydaj mi sie że brakuje ci polecenia => gate=internal Sprawdź: Config Timer1 = Timer , Gate = internal, Prescale = 1 Enable Interrupts : Enable Timer1 Aha, jeszcze => Start Timer1 hmmm... nie ustaliłeś trybu pracy licznika a instrukcja Load jest dla timera w trybie z automatycznym przeładowaniem
Czyli coś takiego ?: http://obrazki.elektroda.pl/6538916500_1... Czyli mam rozumieć, że OCcośtam to jest wyjście timerów i OCzero czyli OC0 jest tylko jedno natomiast OC1 są dwa: A i B czyli OC1A i OC1B. I tak jak timer0 ma tylko jedno wyjście: OC0 timer1 ma dwa: OC1A I OC1B, tak ? No i przeczuwam, też że timer0 róźni się czymś od timer1...
Zobacz tak. Napisałem na kolanie bez sprawdzania, ale może zafuczy ;) Na marginesie funkcja Getrc5() używa Timer0 i powinieneś zostawić go w spokoju czyli do innych rzeczy, jeśli potrzebne, użyć Timer1 lub Timer2. [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $hwstack=64 $swstack = 32 $framesize=128 $baud = 9600 Config Portb = &B11111111...
Czesc, No niestety nie hula... probowałem tego. Myśle ze atmega jest zryta jakos... Mimo tego, ze mam obsługe przerwań i tak, wiem ze to musi działać bo skopiowałem to z mojego poprzedniego projektu, to mi się restartuje atmega. Zwrać na płytce nie ma. [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
Witam, Próbuję wygenerować za pomocą mikrokontrolera Atmega 8 dwa przebiegi prostokątne przesunięte w fazie o 90 stopni. Mam timer1 ustawiony w tryb CTC i wyjścia OC1A oraz OC1B ustawione w tryb toggle. Czy istnieją jakieś bity w rejestrach konfiguracyjnych timera1, które definiowałyby stany początkowe wyjść OC1A i OC1B? Chodzi właśnie o przesunięcie...
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...
Witam Mój problem wygląda następująco: -układ na jakim pracuje to atmega 8 a srodowisko programowania Bascom Po zalaczeniu i skonfigurowaniu countera w sposob następujący Config Timer1 = Counter , Edge = Rising , Noise_cancel = 1 Enable Interrupts Enable Timer1 Podczas odczytu wartości countera licznik szaleje (sam nalicza jakies nie stałe wartości)...
Witam! Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry: TCCR1A |= (1<<WGM12); //tryb ctc , timer1 TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 / OCR1A = 7813; // 8MHz/1024 TIMSK |= (1<<OCIE1A);...
Witam, Przesiadłem się właśnie z procka ATmega 16 na Atmegę 162 z powodu nie wystarczającej liczby portów. Napisałem program który ma za zadanie włączyć TIMER1 w tryb licznika z sygnałem taktującym na porcie PB1(T1). [syntax=asm].include "m162def.inc" .cseg .org 0 rjmp reset reset: cli ldi R16, low(ramend) out SPL, R16 ldi R16, high(ramend) out SPH,...
Mam mały problem chcę zrobić prosty miernik częstotliwości w bascomie do ok. 600KHz Warunek ma mierzyć z dokładnością 1Hz i niestety nie wychodzi mi to. Taimer 1 mam skonfigurowany jako taimer (Config Timer1 = Timer , Prescale = 8) taimer 0 skonfigurowany jako licznik (Config Timer0 = Counter , Edge = Falling ) z resztą zamieszczam fragment kodu [syntax=basic4gl]$regfile...
Kod jest prosty, bo siedze nad nim od dawna i już wyrzuciłem wszystko co było zbędne. Zależy mi na tym by na wyświetlaczu pojawił się napis "Timer0 OK". [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "LCD/lcd44780.h" void timer_start (void); volatile uint16_t...
Problem rozwiązany. PWM'y reagują prawidłowo na zadawane wartości. Dla potomnych zamieszczam działający kod. Dziękuje wszystkim za pomoc. [syntax=c]/* Wykorzystanie sprzętowego PWM AVR ATMEGA 88 (1MHz) */ #include <avr/io.h> #include <util/delay.h> int main(void) { // Konfiguracja portów we/wy DDRB = (1<<PB1)|(1<<PB2)|(1<<...
W atmega ustawiasz licznik w tryb pwm, i wpisując wartosci do jednego z OCR uzyskujesz zmienne wypełnienie. do proca podłącz tranzystor/dławik i powinno chodzić. No i wrzuć sobie oscyloskop na wyjście i zobacz jakie napięcie dochodzi do silnika i co wychodzi z proca.
Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler...
I dokładnie to samo można zrobić z wyjściem, generować PWM-em 0 do 5V, przy pomocy wzmacniacza operacyjnego przesunąć to wyjście i wzmocnić do poziomu +/- 10V, gdzie 2,5V z PWM Atmegi oznaczać będzie 0V na wyjściu układu. Rozdzielczość to 20V/256 = najmniejszy skok napięcia to 0,078V, przy PWM 8-bit. Można wykorzystać TIMER1 w trybie PWM 10bit - wtedy...
Witam, Nie będę zakładał nowego tematu. Mam podobny problem. Atmega 2560 + 16Mhz. Przy tym ustawieniu timera przerwanie powinno być generowane co 0,5s. Natomiast jest generowane co 1s. 256/16000000= 16us*65536=1,048576s 65536-31250=34286 co daje 0,5s [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Portg.5 = Output : Portg.5 =...
Witam jestem początkujący w tej dziedzinie a otrzymałem zadanie złozone z 2 członów a mianowicie mam napisac program naciskam przycisk dioda sie zapala naciskam znów dioda gaśnie naciskam ten sam przycisk i go trzymam to diody sie zapalaja po kolei wykonałem płytke i na mikro. atmega 8 wykonałem równiez te programy tylko sek w tym ze sa w osobnych kodach...
Witam W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string...
Witam, Przechodząc szybko do sedna tematu. Program pisany do 10 kanałowego sterownika oświetlenia DC. Timer0 służy do generowania programowego PWM. INT0 oraz TIMER1 CTC ma obsługiwać transmisje danych(tymczasowo kod usunąłem myśląc że to on jest problemem). Problemem jest to że przy kodzie jak poniżej mam na PD2 prostokąt o wypełnieniu ok 20% Co uniemożliwia...
Sorry, że wam się wtrące ale też pracuje nad komputerkiem dla Vectry B Silnik na wtrysku paliwa więc wysarczy zmierzyć czas otwarcia wtryskiwacza i tu moje pytanko. Jak najlepiej odmierzyć czas otwarcia wtryskiwacza oraz ilość wtrysków na jednostke czasu? Wtryskiwacz jest sterowany masą wiec spoko można użyć przerwań z końcówki INT1 do wykrycia otwarcia...
Witam serdecznie, mam pytanie odnośnie kwarcu, tworze coś na zasadzie stopera używam wewnętrznego kwarcu 8Mhz i Atmega8, niestety atmega coś spieszy o parę sekund na minutę, zauważyłem że wiele osób do tego typu projektów używa zewnętrznego kwarcu 32Mhz. Czy stosowanie zewnętrznego kwarcu w tego typu projektach jest konieczne? Czy da się w jakiś sposób...
Postawiłem sobie zadanie opracowania licznika prędkości. Powiedzmy, że do roweru. Konstrukcję i jej sens odłóżmy na razie na bok :) Zadanie dla procesora niby banalnie proste - liczyć prędkość przez badanie impulsu na pinie. I teraz zaczynają się schody. Mogę to zrobić na kilka sposobów (te które znam): 1) mierzenie czasu między impulsami 2) mierzenie...
Jesli chcesz aby bylo jak z pierwszego obrazka z wypelnieniem 50% (czyli zawsze jeden z nich bedzie w stanie wysokim) to ustaw timer1 na tryb 8. Rejestrem ICR1 regulujesz czestotliwosc (wraz z preskalerem), bity COM1A i COM1B ustawiasz tak zeby kanal a wlaczal sie przy przechodzeniu licznika w gore a kanal B wtedy wylaczal.
Witam Czy ktoś może mi powiedzieć gdzie jest błąd w kodzie zamieszczonym poniżej? W tym projekcie atmega ma sterować obrotami wentylatora (wolniej/szybciej) po naciśnięciu przycisku. Tu konfigurujesz Timer1 do pracy w trybie (1) 'Phase Correct PWM, 8-bit'. mniej/więcej jak na poniższej ilustracji: http://obrazki.elektroda.pl/3601105700_1...
Witam Czy ktoś ma jakiś pomysł jak programowo zliczać impulsy timerem0 większe od 256 ? Timer1 chciałem wykorzystać jako PWM więc on odpada. Pozostaje timer0 ale on zlicza tylko do 256, a ja potrzebuję zliczyć do 390. Jak to zrobić programowo, żeby jak counter0 się zwiększy o 1, to żeby zwiększył jakąś zmienną o jeden. W ten sposób mógłbym zliczać większą...
Na kwarcu 8Mhz zawsze będziesz miał nie dokładny zegar. Jak się bawiłem zegarem to na 40min koło 1s już przekłamywało. Byś musiał zainteresować się "REZONATOR KWARCOWY 32.768kHz ZEGARKOWY". Kwarc wewnętrzny jest strasznie niestabilny, daj sobie z nim spokój. Wpisz sobie w google: Bascom real time clock atmega Gdzieś na elektrodzie krąży taki kod, zacznij...
[syntax=vbnet]'ja wykorzystałem pętle FOR NEXT 'oczywiście możesz dostosować do twoich ptrzeb 'po zwarciu pinu B4 o masy wykonuje się podprogram Pwm_ $regfile = "m8def.dat" $crystal = 8000000 Dim Zm_pwm As Byte Declare Sub Pwm_ Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up Enable Interrupts Ddrb...
Witam Buduje sterownik oświetlenia i mam pytanie co do wewnętrznego oscylatora do procesorów ATmega(ATmega8). Chcialbym użyć wewnetrzny osc. gdyż: 1. Nie musiałbym grzebać w fuse bitach,gdyż fabryczne ustawienie na 1MHz mnie pasuje bo przy prescalerze=1 mam timer1 zwiekszany co 1us (upraszcza to obliczenia) 2.Upraszcza mi płytke. Mam jednak watpliwość...
Witam Zadeklarowałem przepisowo Timer1 jako PWM: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Up , Prescale = 8 Obciążyłem wyjście również przepisowo rezystorem 4k7 (dalej jest baza tranzystora) i teraz czary: wszystko działa ale jak wpisuję do PWM1B = 0 (zero) to procek pobiera 150mA i się gotuje (ale działa)....
timer1 atmega atmega timer1 przerwanie timer0 timer1 atmega
bootowanie laptop wkładka menuet smart pilot samsung
naped elektrobim kompresor kowal
Tabela smarowania IHC D-324 – punkty, oleje, interwały, pojemności Bauknecht suszarka z pompą ciepła nie suszy – czyszczenie, diagnostyka, typowe usterki