Procesor ATmega8515. Silnik sterowany PWM z portu OCR1B z płynną regulacją prędkości. Działa ładnie i jak należy, ale chciałbym w pewnym momencie wyłączyć pwm i całkiem zatrzymać silnik. Robiłem to na dwa sposoby: 1) TCCR1A - zerowałem najstarsze 4 bity żeby odłączyć od pwm port oc1a i oc1b 2) TCCR1B - zerowałem 3 najmłodsze bity żeby zatrzymać timer....
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). A teraz chciałbym go wam zaprezentować. Na początek podręcznik języka C w formie pliku pdf -> 'C.pdf' i plik -> 'atmega16mmr.pdf' ,oraz obrazki -> 'Atmega8.gif'...
Chciałbym zrealizować sterowanie diodą led rgb. Atmega8535 ma w sumie 4 kanały PWM Na razie udało mi się wykorzystać tylko jeden kanał pwm z zegara t1. Ale sterowanie dioda rgb nie było dokładnie takie jak chciałem. Ogólnie chciałem zrobić tak aby móc wybrać kolor w standardzie rgb (czyli dla każdego segmentu wartość od 0 do 255). jednak uznałem, że...
Witam, Robiłem to kilkanaście razy na innych procesorach, a nie mogę zrobić na ATmega88PA. link do DSa: opis rejestrów TIMER0 na stronie 105 Timer1 i Timer2 mam ustawione w trybie PWM i działają bez zarzutu. Walczę już 2 dzień i nie rozumiem pewnych mechanizmów. - włączenie Timera0 powoduje, że pętla główna nie działa... Do portu PC0 (TQFP32) mam podłączoną...
Skoro układ jest na etapie budowy to IMHO najlepszym rozwiązaniem jest dobrać właściwy procesor do zadania, a nie na siłę udowadniać, że M8 też da radę :) Są serie ATTiny dostosowane do takich zadań, czemu z nich nie skorzystać? Chyba jednak to okazało by się najlepszym rozwiązaniem. Poprzedzanie odpowiedzi również okazały się pomocne, ale problem...
Witam, próbuje zrobić sterownik silnika BLDC z wykorzystaniem uC Atmega8. Schemat i program zaczerpnąłem ze strony mikrokontrolery.blogspot. Układ został złożony zgodnie ze schematem: Jedyną różnice stanowią dolne tranzystory, ja użyłem IRFZ44N oraz zamiast dławika 10uH użyłem rezystor 10ohm. Ponad to zmodyfikowałem trochę program wydłużając czas rozruchu...
Cześć, właśnie próbuje zrobić PWM na atmedze8 za pomocą Timera1 i chce uzyskać ten sam Pwm na obu wyjściach oc1a i oc1b i nie wiem jak ustawić rejestry tego licznika. Na wyjściu oc1a uzyskałem już pwm'a ale nie wiem jak uzyskać go równocześnie na wyjściu oc1b...???
Witam serdecznie, poszukuję informacji na temat płytki PCB z czujnikiem ultradźwiękowym. Niestety płytka nie ma na sobie żadnego oznaczenia, z wyjątkiem napisu "Sonar", więc napiszę ile informacji udało mi się uzyskać z samego patrzenia na nią ;) PCB zawiera mikroprocesor atmega8l8au, wzmacniacz ne5532d i podwójny (nadajnik i odbiornik) ultradźwiękowy....
Witam. Jak widać jest to mój pierwszy post na tym forum. Na wstępie chciałbym prosić o wyrozumiałość - jeżeli temat znalazł się w nieodpowiednim miejscu, popełniłem jakiś błąd w składni tytułu czy coś tego typy, prosiłbym moderatora o poprawkę i pouczenie jak w przyszłości uniknąć powielenia problemu. Jestem w trakcie pisania pracy inżynierskiej dotyczącej...
Pisał ktoś może program w bascomie obsługujacy dwa niezależne kanały PWMa na oc1a i oc1b, da rade to zrobić na timerze1.Chodzi mi o niezależną zmiane wypełnienia poprzez dwa przyciski dla każdego kanału.Chce sterować dwa silniki niezależnie .
Dwa kanały PWM masz w timer1... Jeden kanał to rejestr OCR1A i wyjście OC1A... Drugi kanał to rejestr OCR1B i wyjście OC1B... Sprawa jest dość prosta... Wypełenienie dla danego kanału ustawiasz zmieniając wartość rejestru który mu odpowiada... Nową wartość podstawiasz w obsłudze przerwania od przepełnienia...
Hej. Po pierwsze Timer0 w atmedze8 nie ma PWM A więc do PWM możesz korzystać tylko z Timera 1 oraz Timera 2. Po drugie twój problem leży w nazwach poszczególnych rejestrów konfiguracyjnych atmegi 8 sprawdź w dokumentacji atmegi8 jak w rzeczywistości nazywają się rejestry TCCR0A, TCCR0B, OCR0A bo tego dotyczy komunikat błedu. Poza tym pamiętaj że port...
Jeżeli chcesz wykorzystać atmegę w obudowie DIP, to suma prądów dla portów B i D nie powinna przekraczać 100mA -> ok. 6,5mA na diodę. Czyli wskazane użycie diod super-jasnych. Przy łącznym sterowaniu jasnością można rozważyć wykorzystanie sprzętowego PWM i podłączyć bazy do wyjść OC1A i OC1B.
Zacznij od początku, podłączenie mikrokontrolera, miganie diodą, itd.: A dopiero za tydzień weź się za robota - szkoda czasu - taki projekt uruchamia się po kolei, mając już podstawową wiedzę. Problemy zbyt słabego źródła zasilania - sam doszedłeś do właściwego wniosku, więc usuń ten problem. Jeżeli nie przez zmianę źródła zasilania, to może przez zmianę...
Witam, jako że po raz pierwszy próbuję zrobić coś z wykorzystaniem sygnału PWM i timerów, chciałbym zapytać się bardziej doświadczonych kolegów o to czy ten program ma szansę zadziałać. Z założenia ma to być sterowanie silnikiem krokowym poprzez : - podawanie sygnału PWM na wejścia ENABLE A i B układu l298 tak aby sterować prądem baz - Podawanie sygnału...
W sumie możliwe że karta zniekształca przebiegi w końcu to nie jest profesjonalny pomiar. Czy ta wartość 1000-2000 zawsze musi się przekładać na 1ms - 2ms? Odnoszę wrażenie, że fala zaczyna się zniekształcać kiedy zaczynają się zbyt małe lub zbyt duże wypełnienia. Wtedy chyba mechanizm ledwo co się obraca a nawet wcale, tylko coś w nim jedynie "buczy"....
Czesc Stworzylem sobie robota- line follower. Zostało mi go tylko oprogramować. Czytalem datasheety, rozne posty na forach i napisałem sobie program w c. Jest to moj pierwszy program jesli chodzi o programowanie mikrokontrolerow. Jestem świadomy, że ten program nie będzie działał :P, ale chciałbym abyście zerkneli fachowym okiem na te bazgroły i wyrazili...
Moim celem jest regulowanie prędkości obrotowej wiatraczków podłączonych do wyjść PB1 i PB2 za pomocą trybu PWM. Napisałem taki kod jednak coś nie gra. #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h> //ustawienie pinow na wyjscia wiatraczkow #define SET_FAN_OUTPUTDDRB|=(1<<PB1)|(1<... //wlaczenie...
witam po pierwsze pd4 (oc1b) i pd5 (oc1a) to 2 osobne PWM'y. strujesz nimi z bascoma poprzez PWM1A i PWM1B. teraz OC2 to też wyjście PWM a dlaczego bascom go nie rozumie to nie wiem. być może w nowszych wersjach został oto poprawione. można też skonfigurować go ręcznie wpisując wartości do rejestrów. polecam notę katalogową tam jest wszystko pisane....
a gdzie masz Prescale?? i napisz sobie w programie że PWM1a=A i przy ustawianiu portów jako wyjściowych usuń " ' " bo masz napisany i to Ci knoci wszystko Do For A = 0 To 255 PWM1a = A PWM1b = A waitms 4 Next A For I = 255 To 0 Step -1 Pwm1a =A Pwm1b =A Waitms 4 Next I Loop cześć kodu z książki Marcina Wiązania A z tego co zrozumiałem z twojej wypowiedzi...
.---[ 1K ]-+------- E (PNP) C -------------------+---+---. | /|\ | B _|_ _|_ _|_ | `----' | \ / \ / \ / | | --- --- --- | .---__---. | | | | (to programmer) --- RESET | | PC5 ----[ 442 ]-----------+---+---|---|--- Red | | | | .-[ 220 ]-' | | (n.c.) PD0 | | PC4 ----[ 442 ]-+-[ 442 ]--- GND | | | | | | | | .----------+-[ 2K ]----- PD1 | | PC3 ----[ 442...
nic to nie daje. Juz nie wiem co mam robić próbowałem jeszcze użyć LED - do portd.7 - w sygnalizacji przepełnienia T2. Przesyłam calutki kod programu: #include <mega8.h> #include <delay.h> int licz = 4; // Timer 2 overflow interrupt service routine interrupt [TIM2_OVF] void timer2_ovf_isr(void) { licz++; } // Declare...
Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
Żeby nie zakładać nowego tematu, chcę się spytać o 1 rzecz: pod pinem 1 (OC0) jest PWM 8 bitowy, zaś piny 15 i 29 (OC1A i OC1B) w sumie dają 16 bitowy PWM czy jak? Bo jeszcze nie rozgryzałem tak PWM.
Ostatnio oprogramowałem sobie aparaturę RC dwukanałową proporcjonalną . Zasada działania : Wysyła 4 paczki 8 bitowe niosące informacje o synchronizacji, wybranym potku/serwie, o nastawie potka/serwa, sumę sprawdzającą adres i nastawę potka/serwa Problem zaczyna się w momencie zaniku sygnału na wejściu odbiornika ... Z założenia odbiornik powinien od...
Już wszystko jasne - jedyne pytanie zadaję na końcu. Przygodę z PWM zaczynam od sterowania jasnością diody. Atmega8 + diody + rezystorki 330Ω Ćwiczenie polega na cyklicznym rozjaśnianiu i ściemnianiu diody 3 diody podłączone do PB1, PB2, PB3 w założeniu tylko PB1 (OC1A) powinna świecić zgodnie z PWM. Ustawiłem tryb Fast PWM 8bit Kod: #include...
Witam szanownych forumowiczów. Wykonywany przeze mnie projekt to prosty sterownik lampek LED RGBW. Lampki sterowane są poprzez 4 kanały PWM, których współczynnik wypełnienia regulowany jest potencjometrami podłączonymi do 4 wejść ADC mikrokontrolera. Wyjścia PWM ustawione są w trybie fast PWM o częstotliwości 490Hz. No i poprawnie wykonana operacja...
Wzorcowy układ : 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 = 8000000 'informuje kompilator o 'częstotliwości oscylatora 'taktującego...
Witam Mam mały problem ze sterowaniem 10-12 V przez tranzystor za pomocą PWM. Tranzystor bc639 Regulator ESC - HW25A - Hobbywing kod z atmegi Problem wygląda następująco: Kiedy robię próbę na LEDzie i 5V zamiast 10V podłączając sygnał PWM do bazy dioda ładnie przygasa jednak zmienię na 10V i podepnę sygnał z PWM na środkowym wyjściu mam dalej około...
Witam, zbudowałem następujący układ: ( Potencjometry mają po 100kilo ohmów. ) Układ jest generatorem z regulowaną częstotliwością i długością pulsu, regulowaną za pomocą potencjometrów. Niestety mam dziwny problem z jego obsługą. Kiedy programowo WYŁĄCZĘ wyświetlacz wszystko działa elegancko. Kiedy jednak wyświetlacz jest włączony pojawia się problem!...
Witam. Posiadam następujący kod [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define LED1 (1<<PB1) #define LED2 (1<<PB2) #define PWM_START 125 void timer1_pwm() { TCCR1A |= (1<<COM1A1) | (1<<COM1B1); OCR1A=PWM_START; OCR1B=PWM_START; TCCR1A |=(1<<WGM10); TCCR1B |=(WGM12) | (1<<CS10); } int...
Witam, Chciałem przeanalizować pewien program zaczerpnięty z bloga o mikrokontrolerach, podłączyłem wszystko, skompilowałem, zaprogramowałem uC i niestety nie działa on u mnie poprawnie. Problem polega na tym, że założeniem programu miała być płynna zmiana jasności LED przy użyciu PWM, u mnie natomiast diody mrugają. Domyślam się, że problem leży w...
Witam. Może takie coś:zmiana częstotliwości PWM [syntax=basic4gl]' dokonasz tego ręcznie, bezpośrednio edytując jego rejestry; np w takiej formie: Tccr1a = &B00100001 'See datasheet for details. Tccr1b = &B00010010 'See datasheet for details Abo Rownoważna Forma: Tccr1a = Bits(wgm10 , Com1a1) Tccr1b = Bits(wgm13 , Cs11) Sygnał Pwm Otrzymasz Na Wyściu...
Witam Mój problem polega na tym, że muszę odczytywać z ADC, a następnie wysyłać dość duże paczki danych. Wymyśliłem tak jak poniżej (wiem, że nie najlepiej), że wezmę puszczę przetwornik w FRM, tak żeby generował przerwanie po każdym pomiarze i w tym przerwaniu wysyłam to prosto po USART. [syntax=c] //pliki nagłówkowe #include <avr/io.h> #include...
Witam, jestem załamany współpracą z atmegą8A i próbą uzyskania oczekiwanego sygnału PWM. Po kilku godzinach siedzenia nad tym mam już dość i liczę już chyba tylko na waszą pomoc :cry: Po pierwsze zacznę od tego że zagadnienie wydaje się bardzo proste, zatrudniamy jeden z timerów aby odliczał od zadanej wartość A (najprościej chyba od zera) do B (np....
Witam, proszę o wyjaśnienie zasady działania sygnału PWM [syntax=c]int main(void) { DDRB |= LED1 | LED2; //Wyjścia LED //Inicjalizacja Timer1 (PWM) TCCR1A |= (1<<COM1A1) //Zmiana stanu wyjścia OC1A na niski przy porównaniu A | (1<<COM1B1) //Zmiana stanu wyjścia OC1B na niski przy porównaniu B | (1<<WGM11); //Tryb 14 (FAST PWM, TOP=ICR1)...
ad. 1 przeanalizuję FOC1A, bo masz rację, hahaha w końcu autor ad.2 tak, okres jest 0,5 Hz ale wedle wzoru zrozumiałem, że zdarzenie Toggle OC1A/OC1B on compare match winno wystąpić zgodnie ze wzorem określającym częstotliwość zdarzenia jak tłumaczysz - ta 'dwójka' właśnie 'robi' 0,5 HZ dzięki, jarzę
Oto reszta kodu. Jak policzyłeś dokładność? Tzn. jak uzasadnić to, że dla 4 impulsów mam 25% dokładności? Rozumiem, że 4 impulsy to w sumie 100%, ale nie rozumiem źródła tej niepewności. Gwoli wyjaśnienia - kilku zmiennych nie używam, to pozostałości po starych kodach (wiem, że powinienem je skasować :) ) a przetwornik ADC jest po to, że uruchamiam...
potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Moim licznikiem jest timer1 pracujący w trybie CTC. Nie analizowałem kodu, bo przekombinowałeś. Jak chcesz mieć zmienne wypełnienie to użyj trybu FastPWM (tryb 15 z wartością TOP w OCR1A), a nie CTC. W trybie tym częstotliwość zmieniasz za pomocą rejestru OCR1A, wypełnienie...
Znalazłem działający program w innym wątku. Co prawda jest to konfiguracja dla Fast PWM, ale taka sama powinna być dla Phase Corect PWM mode. Program napisał Zumek w temacie: .include "m8def.inc" .macro load16 ldi r16,high((at)1) out (at)0+1,r16 ldi r16,low((at)1) out (at)0,r16 .endm .equ res=65535 ;rozdzielczość .equ pwm=30000...
Witam! Staram się wysłać komendy przez Bluetooth (za pośrednictwem BTM-222 przy prędkości 38400bps) do mikrokontrolera ATmega8 odnośnie zmiany PWM silników. Z początku chciałem robić to tak: komendy nie docierały w pełni (np. zamiast "255y" dochodziło "25y"). Dlatego dodałem 28ms opóźnienia : 118ms! Jest to zdecydowanie za długo! Program po stronie...
Witam, mam problem z działaniem obu tych układów razem. Sterowanie wentylatora odbywa się przez PWM które jest wyliczane na podstawie zmierzonej temperatury z ADC. Posiadam dwa wentylatory, dwa czujniki LM35, korzystam z licznika 1 (rejestry OCR1A i OCR1B). I tu pojawia się problem. Wraz ze wzrostem wartości PWM odczyt temperatury skacze i gdy PWM jest...
Witam, mam problem z danymi przesyłanymi przez usart. Projektuję kontroler obrotów wentylatorów. Co 1s wywoływane jest przerwanie od timera0, w którym wysyłane są dane o temperaturze i wypełnieniu PWM dwóch wentylatorów (dane w HEX, niebieskie cyfry i litery w terminalu na zdj. 2). Chciałbym, aby dane te były wpisywane w odpowiednie pola do tego przeznaczone...
Witam wszystkich serdecznie, używając Timer1 w Atmega8 chciałem wygenerować 2 przebiegi prostokątne na wyjściach OC1A i OC1B (każdy z wypełnieniem 50%). Na razie skonfigurowałem licznik w trybie 4-CTC. Zmieniając wartość w rejestrze OCR1A - zmieniam częstotliwość przebiegu na wyprowadzeniu OC1A - wszystko idzie gładko. A teraz pytanie - jak mogę równolegle...
Witam, jestem w trakcie budowy robota. Będzie to połączenie line follower'a z robotem, którego zadaniem będzie omijanie przeszkód. Jako czujniki linii zastosowałem TCRT5000, a moduł odpowiedzialny za wykrywanie przeszkód to dwie diody IR oraz odbiornik TSOP. Częstotliwość dla diód generowana jest przez ATTiny13A. Która wysyła sygnał na piny PD2 i PD3...
Witam, jestem w trakcie budowy robota line follow'era. Mój mikrokontroler to ATmega8, za czujniki wykorzystuję zaś trzy transoptory TCRT5000. Schemat podłączenia: Każde z wyjść czujników podłączam do pinów PC5, PC4 oraz PC3 mikrokontrolera (adc5, adc4, adc3). W algorytmie wykorzystuję PWM, by sterować prędkością robota w zależności od położenia w stosunku...
Witam Mam taki oto problem do rozwiązania. Do Atmegi8 do wyjść OC1A, OC1B oraz PB3 podpięta jest trzywejściowa bramka "OR" (4075). Wyjścia OC1A oraz OC1B pracują jako PWM, natomiast wyjście PB3 przyjmuje stan wysoki lub niski w zależności od potrzeby jako kluczowanie bramki "OR". Sygnały z wyjść OC1A oraz OC1B są doprowadzone w układzie do oddzielnych...
Tak, musisz podłączyć wszystkie piny zasilające, nie ważne czy używasz wewnętrznego ADC czy nie. już dodane na schemacie, dzięki. Wypada dać tranzystory gdyż prąd w każdej z gałęzi bedzie wynosił 100mA (przy założeniu, że kazda struktura dostanie 20mA) a tego linia portu procka nie wytrzyma... bałem się właśnie o prądy, dzięki :) Jeżeli mikrokontroler...
Dlaczego nie mogę tego uzyskać na porcie PB1A, on też pełni podobną funkcję - OC1A. W kodzie jest zdefiniowany port PB1A jako Output - rejestr DDRB.1 = 1 (DDRB = (1 << PB1)) Tutaj mnie zaskoczyłeś pisząc że rejestr OCR1A odpowiada za rozdzielczość, a OCR1B za wypełnienie. Sprawdzę to Faktycznie działa a możesz jeszcze mi wyjaśnić dlaczego to działa...
Tadzik jak bym wiedział gdzie to sprawdzić... Ogólnie wyświetlacz na początku wyświetla napis na dolnej części a potem już nie. Jest to napisane w main.c prawie na samym końcu, #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/wdt.h> #include <avr/eeprom.h> #include <util/delay.h>...
Udało mi się między czasie rozwiązać samemu problem. 3 PWMy takie same potrzebne mi są do regulacji oświetlenia RGB. Oto funkcja inicjująca PWMy: [syntax=c]void PWM_Init(void) { _1(TCCR1A,COM1A1);//Clear OC1A on Compare Match, set OC1A at BOTTOM _1(TCCR1A,COM1B1);//Clear OC1B on Compare Match, set OC1B at BOTTOM _1(TCCR1A,WGM10);// _1(TCCR1B,WGM12);//Fast-PWM,...
Ojojoj ... myślę sobie ... :) Tu masz pełne sterowanie silnikiem DC za pomocą timerów i pwm : Oraz kod : #include <avr/io.h> #include <delay.h> /* quartz crystal frequency [Hz] */ #define xtal 1000000L #define increaseButton_PRESSED !(PIND & 0x40) #define increaseButton_OPEN (PIND & 0x40) #define decreaseButton_PRESSED...
Witam, potrzebuje zbudować generator z 2 częstotliwosciami rzędu kilku 1-2kHz. Do tego celu przeznaczyłem Timer1 i rejestry OCR1A i OCR1B i tryb CTC. Generator będzie miał dodatkowo zmieniane wypełniania impulsów, wiec zbudowałem sobie taki odo program: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 'Stos Systemowy , Gosub...
Witam, ponieważ jestem można powiedzieć, że laikiem w temacie programowania Avr-ów w C, to mam taki problem z którym nie mogę sobie poradzić (a kombinowałem na różne sposoby), mianowicie: Konstruuje sobie sterownik LCD2USB wstępnie na płytce stykowej i on działa. Skonstruowany jest według schematu z Pytanie: czy mogę do pinu (PB0 lub jakikolwiek inny...
Tylko ty nigdzie nie czytasz cyfr. case '0' || '1' || itd. to dokładnie to samo co case 1: Raczej w default: daj if (c >= '0' && c <= '9'). No i coś nie widzę tych dwóch stanów skanowania wejścia, ale może jakimś cudem to działa. Po co Ci te procedury z jednym podstawieniem? Koszt wywołania procedury jest znacznie większy niż koszt wykonania...
Witam. Jestem w trakcie tworzenia pewnego projektu wymagajacego uzycia graficznego wyswietlacza. Zakupilem sobie JM240128 o matrycy 240x128 puntkow i sterowniku T6963C. Udalo mi sie go obsluzyc, ale napotkalem na pewien problem. Otoz, podczas wyswietlania danych, gdy wyswietlacz sam zwieksza sobie Adress Pointer a ja tylko wysylam mu kolejne bajty,...
Dzięki za pozdrowienia i za odpowiedź . A co do układu to jest automat do pokoju i ma sterować światłem rgb , halogenami , klawiatura umieszczona we włączniku+ dioda rgb ma sygnalizować jaka funkcja światła zostanie zmieniona , odczytać i zapisać i2c to zadanie dla attiny2313 . A atmega8 ma wyświetlać na wyświetlaczu co jest obecnie za funkcja , pobierać...
Wystarczy atmega8 która posiada 4 kanały PWM. Do każdego kanału podłączasz mosfeta i wentylator. Wpisujesz do odpowiedniego rejestru pożądaną wartość i tyle... Po co bawić się w bramki... A moglbys mi powiedziec jakie piny sa wtedy uzywane? Z tego co widze, to wydaje mi sie ze : OC1A, OC1B, OC2, i jaki jeszcze? I jak wyglada konfiguracja w programie?...
Męczę się już z tym trochę i mimo prób znalezienia rozwiązania - porażka. Układ ma być niby nic specjalnego : - sterownik jakiegoś tam urządzenia, - oparty na ATMega8, - ma sterować głównie przekaźnikami, które będą coś tam załączały (niby proste dwa stany włącz/wyłącz) według schematu : - wyświetlacz LCD, - magistrala I2C - klawiatura 4x4 - no i dwa...
Witam, Postanowiłem napisać ponieważ samemu nie udało mi się nic wygooglać ani znaleźć na forum tego czego potrzebuję :cry: A potrzebuje sterować diodą RGB za pomocą pwm, ale w taki sposób by każdym kolorem dało się sterować osobno. Jako, że mam płytkę ewaluacyjną EVBavr04 z mikrokontrolerem atmega8, to właśnie jego postanowiłem użyć. W dokumentacji...
Tryb CTC jest w atmega8 na timer1 i timer2, Jeżeli chcesz mieć dokładnie to zastosuj któryś z powyższych timerów. przy odpowiednim skonfigurowaniu timera może on automatycznie zmieniać stan na odpowiednim wyjściu. (dla timer 1 jest to OC1A/PB1 OC1B/PB2, a dla timer2 OC2/PB3) W trybie CTC nie musisz ciągle wpisywać wartości do TCCRx.
Poprawione ldi r16 , ((0<<WGM11)|(0<<WGM10)|(1<... ; praca w trybie Fast PWM ; WGM11 = 0 , WGM10 = 1 , ;Ustawienie bitów COM 10 powoduje, że TOP jest w ICR1A out TCCR1A , r16 ; zapis do rejestru Mam jeszcze takie pytanie. W Atmega8 jest możliwość osiągnięcia 3 przebiegów pwm i sterowanie ich wypełnieniem ? Są...
Witam mam dwa układy RFM12 i atmega8 oba komunikują się ze sobą problem pojawia się gdy chce zmienić linię nSEL podłączoną do pinu SS na np pin PB0 gdzieś czytałem że linia nSEL nie musi być podpięta do tego konkretnego pinu. Pin PB2 (SS/OC1B) chce wykorzystać do sterowania silnikiem . Kiedy w kodzie zmienię definicje SPI_CS z portu PB2 na PB0 modułu...
Witam. Potrzebuję W tym liczniku obrotów: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" //tutaj ustaw własne zasady pomiaru #define POMIAR_ILOSC_IMPULSOW_NA_OBROT 4 //ilość inpulsów na jeden obrót #define POMIAR_ILOSC_OBROTOW 10 //ile obrotów ma trwać...
Przecież w Normal Mode też można używać rejestrów OCRx. Na przykład do generowania 2 przebiegów 50% przesuniętych względem siebie o dowolną fazę regulowaną właśnie przez OCRx. Czy w Atmega8 i Timer0 też można?
Witajcie, Potrzebuję konfiguracji timera 1 dla atmega8 aby wykonywał funkcję z częstotliwością ~244Hz (zegar 16MHz i preskaler 2^16). Chciałbym uniknąć używania dodatkowych bibliotek. Będę wdzięczny za przykładowy kod :) Przy okazji; jeśli użyję do tego celu timera 1, mogę równocześnie używać wyjść OC1A oraz OC1B jako zwykłe wyjścia I/O?
Witam... "Guru" nie jestem ale powiem ci, że nie musisz wykożystywać dwóch niezależnych timerów... Można ustawić jeden timer i dwa wyjścia (OC1A i OC1B)... Każde wyjście może być odmiennie skonfigurowane w obrębie jednego timera... Tzn. jeden np OC1B może być odwrócony względem OC1A albo oba jednakowe...
PC6 (RESET) - opcjonalnie nóżka resetująca procesor PD0 (RXD) - odbiornik UARTA PD1 (TXD) - nadajnik UARTA PD2 (INT0) - przerwanie zewnętrzne PD3 (INT1) - przerwanie zewnętrzne PD4 (XCK/T0) - taktowanie USARTA albo impulsy dla timera VCC - zasilanie cyfrowe GND - masa PB6 (XTAL1/TOSC1) -do podłączenia kwarcu (wejście) PB7 (XTAL2/TOSC2) -do podłączenia...
moj problem polegał na tym iz nie ustawiłem OC1A oraz OC1B jako lini wyjsciowych. w symulacji wszystko było ok. a układ nie działał. może u ciebie jest ten sam problem.
Skoro jesteście tacy "ciekawi" , to macie gotowca do potestowania :D .include "m8def.inc" .macro load16 ldi r16,high((at)1) out (at)0+1,r16 ldi r16,low((at)1) out (at)0,r16 .endm .equ res=4096-1 ;rozdzielczość .equ pwm=127 ;wypełnienie .if pwm>res .error "stala pwm jest wieksza od rozdzielczosci" .endif .cseg .org...
a tak przy okazji nie lepiej zamiast opisywać wektory wartościami w hexie to otworzyć sobie na sekundkę plik definicji procka którego się używa w tym przypadku m8def.inc i stamtąd zassać sobie zdefiniowane nazwy wektorów - dzięki temu naprawdę trudno później sobie coś popsuć a na dodatek bardzo przejrzyście to wygląda np: ;**************************************....
Do tej pory nie miałem większych problemów z bascomem, ale jeden się pojawił. Wpadły mi w ręce duże diody RGB i postanowiłem coś z nich sklecić. Chciałem wykożystać 3 wyjścis PWM Atmegi: OC1A, OC1B i OC2. No i pojawił się problem co z tym OC2. Timer1 go nie obsługuje. Czy mozna wykożystać 3 wyjście PWM z poziomu bascoma? Jak inaczej wysterować diodę...
Witam serdecznie. Mam problem z ds1820. Mianowicie po zaprogramowaniu procka "ustawieniu wewnętrznego oscylatora na 8Mhz" programem przedstawionym poniżej wyświetla mi cały czas że "t1=+85.0`C". Proszę o pomoc. Z góry serdecznie dziękuje. #include <mega8.h> // 1 Wire Bus functions #asm .equ __w1_port=0x12 ;PORTD .equ __w1_bit=3 #endasm #include...
Witom:D Ja znam rozwiązanie :D Niestety kiepskie :( ... OC1B nie działa bo domyślnie Atmega ma włączone ISP ;) Więc pozostaje wyłączyć ( i zablokować ) interfejs ISP i używać programatora równoległego, tylko gdzie taki ukraść ?? :| Mnie ten 3 PWM zmusił do przesiadki na atmega16, w sumie i dobrze bo flasha ciągleeeeeeeee mało ;) Pzdr.
domyślam się że chcesz każdą oś napędzać osobnym silnikiem będzie Ci trudno utrzymać prostoliniowość , praktycznie nie ma 2 takich samych silników ( obroty ) co dopiero 4 Wydaje mi się, że w tak prostych konstrukcjach ten problem można zupełnie pominąć. Poza tym nawet jeśli wszystkie silniki będą miały jednakową prędkość nie da się zachować prostego...
chcialem zrobic sterowanie dioda rgb za pomoca 3 wyjsc pwm i tu jest problem bo chyba w bascomie nie mozna ustawic timer2 jako pwm za pomoca: config timer2 = pwm, pwm=8, compare a pwm= clear up" dlatego sam starem sie ustawic reczenie rejestry wedlug: , ale cos mi nie idzie i prosze o pomoc (moga byc jakies wskazowki) $regfile = "m8def.dat"...
Witam. Niestety mam problem dotyczący wygenerowanie przebiegu prostokątnego ALE przy użyciu tylko Timerów bez PWMa. Musze Wygenerować sygnał o okresie 270ms i wypełnieniu 90%( czyli po 243ms wartość na wyjściu musi być 0 przez resztę czasu) Później po naduszeniu przycisku okres ma sie zwiększyć do 810ms.Problem juz mam na samym początku z kodem: ...............
Używasz PWM z wyprowadzenia PORTB.1(wyjście PWM OC1A) A buzer z wyprowadzenia PORTB.(wyjście PWM OC1B). Teraz jeśli masz włączone PWM to na tych 2 wyprowadzeniach występuje przebieg PWM i stąd sygnał na buzerze. Tak mi się wydaje choć masz Compare B Pwm = Disconnect, więc dla pewności na chwile podłącz buzer gdzieś do portu C, albo zmień też na COMPARE...
Witam serdecznie bo to moj 1 post na forum. AVcc zwarte z Vcc Aref do amsy przez 100nF PB1 - dioda sterowana PWM PC0 - wejscie z czujnika CNY70 Układ ma sciemniac i rozjasniac diode w zaleznosci od napiecia podawanego na ADC0. Woltomierz poakzuje 1.5-3.5V Całosc zasilana z 3 baterii AA ("paluszkow") Sam PWM działa. W połaczeniu z ADC juz nie. Moge prosić...
Dzięki za pomoc. Mam jeszcze jedno pytanie; na którym wyprowadzeniu OC1A czy OC1B otrzymam PWM podczas pracy w trybie 11-bit pwm? W datesheecie jakoś nie mogę się tego doszukać.
Witam, MAm taki oto problem... zainicjowalem sobie PWM do sterowania silnikiem DC za pomoca L298. Mam problem bo jak podpialem do oscyloskopu to nie generuje mi sie prostokat (50% wypelnienie) ... Nie wiem na jakiej zasadzie powinienem dobrac parametr OCR1x ... Czy moglby ktos mi wyjasnic na jakiej zasadzie zmieniac moge wypelnienie ? // Incjalizacja...
Jak Ci się może wywołać przerwanie z OC1B skoro licznik nie ma szans nawet doliczyć do tych 5000 w trybie CTC... Czytać i analizować noty katalogowe!
.. Czy moje założenia są poprawne? Przerwania nie będą potrzebne jeżeli: a)serwo masz podłączone do wyjścia OC1A i nie korzystasz z przechwytywania - tryb Fast PWM(Mode 14) b)serwo możesz podłączyć do wyjścia OC1B - tryb Fast PWM(Mode 15)
Dzięki chicken123 ;) Mam problem z tym wyświetlaczem ;/ tak jak u poprzedników wyświetlają się tylko kwadraty :/ próbowałem już chyba wszystkiego... wgrywałem 3 różne wsady do atmegi... nóżka 5 jest podłączona do masy (wersja pcb z której korzystałem ma (chyba) 2 babole które poprawiłem tj. rezystor 10k zamiast 990k i nóżki stabilizatora 7909) Ma ktoś...
Korzystam z Fast PWM, tryb 14, bez preskalera. Czyli na dwóch kanałach OC1A i OC1B otrzymuje regulowane wypełnienie o rozdzielczości 16bit przy ~122Hz (zegar uC to 8MHz). Działa to bardzo ładnie, jednak przy zerowym wypełnieniu (pwm1a = 0) na wyjściu są jakieś śmieci. Czas trwania to tylko 230ns, ale to wystarczy żeby na wyjściu filtra RC dostać 8mV...
Początek zabawy, i bliski jestem stwierdzenia, że to nie dla mnie. A więc, albo ktoś podpowie, albo pogryzę tego procka. Problem jest następujący: Po przerwaniu, program zapala leda i wychodzi z pętli WHILE (zaczyna main()) czyli mój LED zgaszony. Lub bez przerwania, prog. wchodzi do petli WHILE opuszcza ją i zaczyna od main(). czyli na terminalu widzę...
Witam. Robię miernik częstotliwości na ATmega8 z wyświetlaniem na LCD HD44780 w trybie 4-bit (mam zrobiony prototyp). Opanowałem już wyświetlanie (z obsługą BF), ale teraz przystawiło mnie z pomiarem liczby impulsów zliczanych na wejściu T1 mikrokontrolera. Wynik co prawda jest wyświetlany, lecz jest on niestabilny w taki sposób, że skaczą 2 ostatnie...
Witam, proszę o pomoc w dokończeniu kodu do pomiaru temp. Wyświetlacz LCD 2x16 podlaczyłem do portu D atmega8. Czujnik temp. DS18s20 podlaczylem do pinu 2 Port B. Rezustor podciagajcy 4,7k s szyny danych DQ na zasilanie 5V. Wygenerowałem sobie kawałek kodu w codevision. Próbowałem rózne funkcje znalezione w necie ale nie działa wiec proszę o pomoc....
Rozwiązałem problem. Poszedłem na łatwiznę tzn. wynik np 2458 jt faktyczne 2.458V podzieliłem przez 1000 potem przez 100, następnie przez 100 bez reszty % i tak dalej. Zrobiłem jeszcze dzielnik napięcia/10 z rezystorami 24k oraz 3 k tak aby zwiększyc zakres napięć wejściowych do 22V bodajże. Oto mój kod: [syntax=c]/*****************************...
To właśnie zostało uruchomione - musi działać. Pisane pod WinAVR [syntax=c] #define SET(port, bit) port|=(1<<bit) #define RESET(port, bit) port&=~(1<<bit) #define NOT(port, bit) port^=(1<<bit) //Przerwanie wywolywane 100 razy na sekunde ISR(TIMER1_COMPA_vect)// == SIG_OUTPUT_COMPARE1A { NOT(PORTD,PD6); } int main (void) { SET(DDRD,PD6);...
WItam, mam problem z użyciem funkcji sprintf. Kiedys pisałem program na atmege i działało idealnie(symulacja w proteusie). Symulacja działa do dziś. A kiedy zaczynam pisać nowy program symulator nie odczytuje mi funkcji sprintf. Zawarłem wszystkie biblioteki, i prawidłowo definiuje zawartość samego sprintf. Chwale sobie proteusa bo nie musze tracić...
Nie chciałem tworzyć kolejnego tematu tak więc dołączam się do tego. Mam problem z ruszeniem serwa RC sterowanego przez Atmege8. Zasilanie serwa puszczam bezpośrednio ze stabilizatora L7085: +5VDC podłączam pod czerwony przewód serwa GND podłączam pod brązowy lub czarny przewód serwa (mam 2 różne serwa) OC1A (wyjście PB1 z Atmegi) podłączam pod pomarańczowy...
Witam wszystkich serdecznie. Mam taki oto sobie układzi. A mianowicie: W bascomie steruję przez pwm dwoma silnikami DC. Jeden pobiera ok ............... Normalnie, dwa kanały wyjścia PWM (OC1A, OC1B) z ATM8 masz odpowiednio na pinach:15 i 16. Pin 17 jest MOSI - potrzebny, w miarę bez zakłóceń do programowania ISP. U ciebie jest on podłączony przez...
udało mi się złapać profesora i przedstawiłem mu problem wynikający z zasilania z baterii. Powiedział, że rzeczywiście w takim wypadku nie ma sensu i że mogę zrobić zasilanie z sieci.Sprawia to, że: - mogę zastosować spokojnie stabilizator LM7805 nie kombinując już z przetwornikiem Tak zrób. Tylko daj temu stabilizatorkowi radiator, np. nie muszę ograniczać...
Od pewnego czasu próbuję wykonać prosty falownik aby uruchomić silnik 3 fazowy. Ponieważ falownik nie ma mieć żadnych "wodotrysków" postanowiłem użyć do tego celu Atmegi8. Atmega steruje trzema sterownikami MOSFET IR21094. Generuje sobie trzy przebiegi przesunięte o 120 stopni korzystając z 3 wyjść PWM (OC1A, OC1B, OC2). Co mogę robić źle? Poniżej kod...
Napisałem sobie program lecz jak rozjaśniam to bardzo duzo razy trzeba klikać przycisk aby na maxa rozjaśnic lub ściemnić. Chciał bym aby tak rozjaśniało do maxa przy np 10 kliknięciach , takie 10 stopni rozjaśnie. Prosze o pomoc jak mam zmienić moj kod. Wsad: [syntax=basic4gl] Config Pinb.1 = Output '................ If........ Incr R '.................
Witam. Nie mam już pomysłu na rozwiązanie mojego problemu. Program działa, ale przy przesuwaniu tekstu w tablicy do prawej AVR GCC generuje dużo mniejszy kod (1002 bajty) niż jeśli zakomentuję tę część pętli głównej programu (1366 bajtów). Kompilacja przechodzi bez warningów w obu wypadkach. Dodatkowo po zaprogramowaniu układu program nie wraca do głównej...
Podobny efekt można uzyskać podpinając się do wyjść bramek sterowanych w przeciwfazie a układ taki nie będzie miał ujemnych cech prezentowanego rozwiązania. Właśnie coś takiego robiłem u siebie na OC1A i OC1B, tyle że w sumie tranzystory nie są do końca potrzebne bo mogę podpiąć nadajnik od razu pod te piny i będzie wszystko zrealizowane. Zagłębiając...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Dim Sbcd As Byte Dim Mbcd As Byte Dim Gbcd As Byte Dim S As Byte Dim M As Byte Dim G As Byte Dim Corobic As Byte Dim Wart_ac1 As Word 'zmienne do pomiaru temperatury Dim Nap_lm35 As Single Dim Wart_temp As String * 3 Dim Grzalka As Bit Config Pind.0 = Input Config Pind.1 = Input Portd.0 = 1...
Witam, mógłby mi ktoś sprawdzić kod, szczególnie ustawianie adc? Zmiana rezystancji na potencjometrze ma powodować ruch serwa o kat proporcjonalny do zmiany rezystancji. Wcześniej zrobiłem dla jednego kanału adc i było ok ale po zmianach na dwa kanały serwa tylko drgają. enable PWM on port B1 in non-inverted compare mode 2 TCCR1A |= 2 << 4; //...