OCnX to wyjścia, nie wejścia. Skoro nie możesz odblokować timera0 (bo T0 i T1 można taktować z zewnątrz) to są opcje takie: 1. Zastosowanie przerwań INT0 i INT1 z detekcją odpowiednich zbocz i zliczanie imp. w przerwaniach 2. Polling pinów z odpowiednią częstotliwością Poza tym jaka częstotliwość impulsów?
Pytanie pomocnicze brzmi - po co zliczać przerwania w C, skoro od tego ma się sprzętowy licznik?
ad 1. Użyj timerów - taktując je zegarem o odpowiedniej częstotliwości licznik timera będzie zliczał czas. ad. 2. Użyj timera :) Tylko w trybie input capture - w tym trybie licznik zlicza impulsy zegara taktującego i jest stopowany zboczem sygnału doprowadzonego do wejścia ICP timera.
Uruchamianie timera przed zaprogramowaniem okresu nie jest najlepszym zwyczajem. Wartość wpisywana do OCR to okres - 1. Napisz po prostu: OCR1A = FCLK / 256 - 1; (O ile częstotliwość zegara jest zdefiniowana pod nazwą FCLK - nie pamiętam, bo skończyłem z AVR jakieś 4 lata temu.)
W pdf jest napisane wszystko . Może napiszesz czego oczekujesz a co wychodzi . Pewnie w obliczeniach zapomniałeś o samym liczniku i wychodzi 256 razy mniej . Wielu początkujących robi taki błąd , ze zapomina o tym ze aby licznik się przepełnił musi policzyć tyle impulsów ile ma jego pojemność a w niektórych trybach ta wartość się jeszcze zmienia . Napisz...
A bo tyle stanów potrafi przyjąć licznik 16-bitowy. 2^16=65536.
No tak to na pewno, ale chodzi mi o to czy będzie jakiś dłuższy przestój ? Czy w jakiś milisekundach ? Jak ma się to zliczanie do czasu rzeczywistego ? Ile trwa zliczenie całych 16 bitów dla licznika ???
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
A mam jeszcze takie pytanie, czy ustawiając wypełnienie PWM przykładowo tego Timera2 na np. 77.125 przy trybie CTC, licznik zlicza do 77, czy do 77.125 ?
Nie chciałem się tym zajmować, bo na razie mi to nie przeszkadza, nie zależy mi na dokładnym odczycie, chodzi mi o obsługę samego timera bardziej;> a, że później chciałem liczyć częstotliwość zewnętrznego przebiegu to to może być pewnego rodzaju wstęp :P
...i do tego wszystkiego trzeba jeszcze zablokować przerwania, bo obliczenia się rozjadą. Do takich długich czasów w 99% przypadków używa się timerów - odpowiedni podzielnik razy licznik w przerwaniu i bez skomplikowanych obliczeń masz dokładny wynik.
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
Ustawiłeś tryb fastPWM i preskaler na 256. A zatem częstotliwość sygnału PWM będzie w okolicy: F_PWM = F_CPU/(preskaler * TOP ) = 8MHz/(256 * 256) = 122Hz Dodatkowo wpisałeś do rejestru OCR0 wartość 104 . Na początku gdy licznik ma TCNT0 = 0 wyjście PB3 jest w stanie wysokim. I dopiero jak licznik zliczy do TCNT0 = 104 zmieni się stan wyjścia PB3 z...
zliczanie impulsów z dwóch enkoderów Jeżeli to są enkodery inkrementalne z sygnałem A, B i ew. Home, zrezygnuj z megi64/128. Xmegi mają wsparcie sprzętowe do obróbki sygnału z takich enkoderów przez użycie liczników w połączeniu z eventami. Na STM32Fxxx zrobisz to łatwiej i być może szybciej korzystając z gotowców. generowanie dwóch przebiegów PWM...
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
Rzeczywiście na oscyloskopie z przeliczenia częstotliwość wynosi około 100Hz... Dodano po 41 Posiadam dwa silniki, także wykorzystuje licznik T0 i T1 ...
Witam, pracuję nad projektem systemu bilansowania mediów, a konkretnie koncentratorem. Chcę połączyć licznik: F&F LE-01M do ATMEGI32 i zapisywać w wewnętrznym EEPROMIE odczyty z licznika. -Częstotliwość odczytów i inne parametry będzie ustalał użytkownik (do tego LCD i przyciski). -Odczyty będą zawsze o określonej porze dzięki RTC. -Do komunikacji z...
Witam! Mam mały problem z licznikami w Atmedze32. Na początek kod: void IR_Generuj() { //TUTAJ WŁĄCZAM TIMER KLUCZUJĄCY SYGNAŁ// TIMSK|=1<<OCIE2; OCR2=75; TCCR2 = 1<<WGM21 | 1<<CS21; //PRESK 8 |TRYB CTC //TUTAJ GENERUJE SYGNAŁ 36kHz// OCR0=13; //(int)(1000000*(1/76000... TCCR0 = 1<<CS00|1<<COM00|...
Ale o co Ci chodzi z tym zdefiniowaniem pinu? A z tym wyrzucaniem wartości licznika na cały port to tmf dobrze gada. Ale do tego jeszcze dojdziemy, na razie wytłumacz o jakie definiowanie chodzi. Bo chyba nie o #define? Żeby na każdym pinie mieć inną częstotliwość to tych pinów nie trzeba "definiować" czy "rozdzielać". Po prostu na każdym zmieniasz...
Tryb fast PWM działa w ten sposób, że licznik zaczyna zliczać od 0 do wartości 255 (w przypadku licznika 8 bitowego), przy każdym takcie zegara oprócz zwiększenia wartości licznika porównuje tę wartość z wartością rejestru OCR, jeżeli wartości są równe to neguje przypisane wyjście jednego z portów. Co z tego wynika - licznik zawsze zlicza w pełnym zakresie...
Dlatego, że podczas symulacji Atmel Studio symuluje procesor, w efekcie wie ile wykonał instrukcji i jakich - program jest wykonywany instrukcja po instrukcji, nawet jeśli dajesz mu run. W trybie debugowania sprzętowego pomiędzy pułapkami sprzętowymi może minąć dowolna liczba, dowolnych instrukcji. W efekcie nie ma jak ich policzyć i cycle counter nie...
Opóźnienia nie są krytyczne - masz przecież zegar sterujący transmisją. Więc zamiast 4us (o ile to opóźnienie istotnie tyle miało) możesz dać większe - chodzi tylko o to, aby CLK nie miało częstotliwości wyższej niż akceptowana przez SHT dla danego rezystora podciągającego. Co do samego delay - działa ono w ten sposób, że wartość opóźnienia jest przeliczana...
Chciałem zrobić tak ze jak odczytam wszystkie próbki z bufora to ustawiam zmienna read na 1 wtedy następuje wczytanie kolejnych próbek z pliku do bufora i znowu wysyłanie tych próbek na pwm W czasie 125us to raczej za wiele na tym nie odczytasz. :) Jeśli jesteś pewien że timery i odczyt z karty działa, to zrób sobie przebieg 8000/32 = 250Hz. Odczytaj...
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz zliczyć 250 000 impulsów, Jako, że Timer0 jest 8 bitowy...
Przecież możesz to zrobić tak: Zaprogramować timer aby zglaszał przerwanie co np 1us ( trzeba by było dać kwarc o dużej częstotliwości). W przerwaniu tylko Licznik++, gdzie Licznik jest typu long. W głównym programie wystarczy tylko przeliczyć częstotliwość na okres w us i porównywać ze zmienną Licznik. Jeśli Licznik > Okres zerujesz zmienną Licznik...
Nie tak źle z dostępnością, układy analoga są w RS-sie. A tak ogólne zapytanie. Robił ktoś miernik mocy 3F? Zrobiłem miernik COP do pomp ciepła, moc odczytuje z impulsów liczników ogólnodostępnych. Dobrze by było jednak użyć własnego układu a już brak mi czasu na tworzenie tego od podstaw.
Witam i dzięki za zainteresowanie problemem, ale niestety nie może (99%) to być wina potencjometrów i przetwornika. Wykasowałem odpowiednią cześć kodu ale zrobiony był jeszcze podgląd wyników na wyświetlaczu. Dodatkowo aby wyeliminować małe wahania wyników dziele je przez 4. Co do tego rozjeżdżania to to wygląda tak że ustawiam jakąś wartość wypełnienia...
Faktycznie, tryby fast-PWM mają swoje ograniczenia, już nie pamiętałem dokładnie. Robisz więc tak: Zegar rejestru podłączasz do OC1B. Ustawiasz tryb CTC, toggle OC1B on compare match. Do OCR1A wpisujesz 2047, lub 4095 - itp. wartość, aby uzyskać okres >= 2ms z wymagana rozdzielczością. Z tym, że najlepiej dobrać tak preskaler, aby częstotliwość taktowania...
ok, poprawiłem i dioda się zapala, ale timer tutaj jest prymitywnie badziewny. Lepiej byłoby to zrobić tak, że dioda zapala się po kilku sekundach. Tylko wtedy trzeba zrobić odmierzanie czasu na timerze...Teoretycznie czytałem o tym i wiem jak to zrobić, preskaler na pewno na 1024, kwarc mam 16MHz, więc dzieląc częstotliwość przez preskaler otrzymam...
Maksymalna częstotliwość jaka mnie interesuje jest uzyskiwana przy OCR1A = 19. Generalnie wszystko mi działa i to całkiem przyzwoicie, ale muszę zliczać wygenerowane impulsy. Myślałem już nawet o jakimś zewnętrznym liczniku - w postaci układu TTL którego wyjścia będę sobie odczytywał w pętli głównej. To już oczywiście abstrakcja.
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
2. Teraz ustawiam np. preskaler na 256 - rozumiem, że wtedy licznik Timera0 mnożę przez wartość preskalera i wychodzi mi jakaś wartość. Zakładam, że nie ładuje to timera żadnej wartości na początku czyli: Np. 255 x 256 = 65280 - pytanie co to za liczba? co ona oznacza? Nic nie oznacza. Zacznij od przeczytania opisu timera w Datasheet. Preskaler dzieli...
Patrzę też, że u Ciebie występuje niepokojąca manipulacja konfiguracją ICP w obsłudze od przepełnienia. W obsłudze od przepełnienia mam tylko konfiguracje timera gdyby był zanik sygnału.. Tak zwany "timeout" gdy nastąpi pod rząd ponad 10 przepełnień timera (400ms) a ICP tego nie skasuje bo brak sygnałów to ustawia timer na zbocze narastające i ustawia...
Hej! Jest możliwe ustalenie konkretnej częstotliwości sygnału PWM w AVR. Da się sterować serwem modelarskim bez problemu. W Datasheet od ATmegaXX znajdziesz opis timerów. Jest tam wiele trybów pracy możliwych do wybrania. Ja pamiętam że do uruchomienia serwa użyłem trybu poprawnej fazy i częstotliwości. Potem na podstawie częstotliwości kwarcu i nastaw...
O właśnie teraz pomyślałem o zewnętrznych przerwaniach, że tak można by to zrobić. Natomiast nie rozumiem co rozumiesz przez stwierdzenie, że tryb PWM skraca cykl zliczania do 256 (czy ileś tam)? Specyfikacja procka stwierdza że dla Fast PWM "The minimum resolution allowed is 2-bit (ICR1 or OCR1A set to 0x0003), and the maximum resolution is 16-bit...
Nie będzie, o ile częstotliwość będzie rozsądna, np. może być synchroniczna z odświeżaniem rejestrów wyświetlaczy. Zacznijmy od podstawowych obliczeń: Optymalny częstotliwość to ~300Hz, czyli jakieś 3,333ms na cykl. 4 cyfry, czyli 0,833ms na cyfrę. 64 bity + zatrzaśnięcie danych dla anody to <11us na bit. Atmega32 może to sterować przez SPI, ale...
Witam! Mam program, który wykorzystuje liczniki do wysyłania impulsów o danej częstotliwości. Częstotliwością steruję za pomocą zmiennej okres1, która jest mnożnikiem preskalera. Np. preskaler=8 clkio=1000000Mhz okres1=127, czyli co 8*128=1024us zmienia się stan na danym pinie przerwania od przepełnienia licznika (dla timera1a jest to pd5), co znaczy,...
Ręce mi już opadają... Zacząłem się bawić ADC, ale nagle coś mi się stało z wyświetlaniem. Mam teraz taką obsługę przerwania: [syntax=c]ISR(TIMER0_COMP_vect) { //static uint8_t dzialanie=0; static uint8_t licznik=1; static int j=10000; WYS_PORT = ~licznik; int temp=liczba%j; if(j==10000)cy1=(temp/1000); if(j==1000) cy2=(temp/100); if(j==100) cy3=(temp/10);...
Przy tak niskiej częstotliwości impulsów lepiej nie zliczać impulsy w czasie, lecz użyć zewnętrznego przebiegu do bramkowania licznika, który zlicza impulsy ze swojego zegara o dużej częstotliwości. Dzięki temu dostaniesz informację o liczbie taktów zegara referencyjnego przypadających na okres sygnału zewnętrznego. Umożliwia to dokonanie pomiaru w...
Witam do postu dołączam kod programu. Problem jak w temacie. Przy "na sztywno" ustawionej częstotliwości pracy f=40000Hz i przy tym timer0 preskaler 8 i OCR0=50. Układ ewidentnie nie wchodzi w obsługę przerwania. Proszę o sugestie i ewentualne pytania co do kodu. Tryb pracy licznika CTC.
Witam Kolegów. Mam mały problem. W zasadzie mój problem polega na tym, że działa coś co moim zdaniem nie powinno działać. Napisałem prosty kod na obsługę timera w ATmega 32. Prpgramik ma generować na 1-szym pinie PORTA sygnał o określonej częstotliwośći. Kod jest następujący: #include <avr/io.h> main() { DDRA=255; //ustawienie PORTA...
Napisałem sobie coś takiego w trybie CTC, z włączeniem nóżki OC0 generującej prostokąt. Generuje sobie jakiś dany ton zmieniając wartość rejestru OCR0. Teraz akurat jest bardzo duża częstotliwość dająca wysoki ton. Pytanie mam takie: jak zrobić aby zmieniać cyklicznie wartość OCR0 ? Aby zagrać jakąś melodie, np 1s jeden ton, potem 2s drugi ton, 0,5s...
Podłącze się do tematu gdyż nie chcę zakładać nowego wątku. Mam timer (ATMEGA32) ustawiony w taki sposób [syntax=c]TCCR0 |= (1<<WGM01); TCCR0 |= (1<<CS02) ; OCR0 |=38; TIMSK |= (1<<OCIE0);[/syntax] Procedura obsługi przerwania zawiera funkcje komunikacyjne i zwiększa licznik. Problem polega na tym, że z wzoru podanego w nocie katalogowej...
Pisałem ostatnio zegar na attiny2313 również popędzany z 8Mhz. Ponieważ musiałem ograniczyć się do 8bitowego licznika wykorzystałem: prescaller 64, zliczanie do 250 w trybie z maksymalną wartością licznik w rejestrze OCRxx i generowanie przerwania przy przepełnieniu. Otrzymałem generowanie przerwania z częstotliwością 500Hz. Teraz tylko programowy podział...
Mniej więcej co 2 tygodnie ktoś tu próbuje obsługiwać przycisk na przerwaniu portu i co dwa tygodnie próbujemy takiemu delikwentowi wybić ten nierozsądny pomysł z głowy. Przeszukaj archiwum. Przycisków NIE obsługuje się przy użyciu przerwań portu, a przy użyciu przerwania timera. Jak chodzi o mikrokontolery jestem początkujący. Tego typu obsługa była...
1Hz to raz na sekundę. 8MHz to osiem milionów razy na sekundę. Sekunda jest tu kluczowa. W ciągu sekundy procesor taktowany 8MHz przetworzy około 8mln instrukcji (pomijam te które wymagają dwóch taktow) no a jak podłączysz do procesora taktowanie 16MHz to odwali dwa razy tyle roboty w ciągu sekundy . Zerknąłem na twoje kody i mam kilka rad. W Bascom...
dziekuje bardzo, teraz wszystko dziala :) Dodano po 2 a teraz następne pytanie: fusebitami mam ustawione 8MHz. Preskalerem dzielę na 1024, więc wychodzi 7812,5Hz. Jako że jest to timer0 to ma rozdzielczość 256, więc częstotliwość wychodzi 30,517... Hz. Z tego by wynikało, że mój licznik powinien dochodzić do 30 i powodować świecenie diody przez ~1s....
Narazie nie mam scalaka (wzmacniacza) żeby podłaczyć sie. Na wyjściach XTAL1 i XTAL2 mam tylko składową stałą ok2,5V żadnego przebiegu zmiennego. Na wyj licznika ciągle cisza :(((( Dodano po 30 A może fakt że kwarc i kondensatory są ok 5cm od uC ma tak duży wpływ przy tych częstotliwościach- kwarc 15MHz, bo juz mi pomyslów zaczyna brakować, może poprostu...
Jeśli jeszcze aktualne :) W ten sposób to obliczasz częstotliwość sygnału, a nie wypełnienie. Powinno być raczej: ts zawiera (bez konieczności przeliczania) czas trwania impulsu w mikrosekundach.
Witam, Od jakiegoś czasu w ramach wolnego czasu uczę się programowania mikrokontrolera ATmega32. Koduję w C (pracuję jako programista wiec ten język jest mi bliższy niż asembler), dotychczas nie miałem jakichś większych problemów, udało mi się nawet obsłużyć wyświetlacz LCD i sądziłem, że obsługa czujnika temperatury DS18B20 nie sprawi mi większych...
Kiedy w obsłudze przerwania detektorów przejścia przez 0 umieściłem licznik liczący do 600, który po każdym zliczeniu wysyłał czas po RS232 do kompa i to samo zrobiłem z timerem okazało się że timer po ok. 10 min jest opóźniony o prawie 1 s w stosunku do licznika przerwań od detektorów... Siedzę już nad tym od kilku ładnych chwil i nie mogę dojść do...
Dziękuje za opis ale chyba mnie to przerosło :) Zrobiłem programowy PWM, oto kod: [syntax=basic4gl] '************** Petla glowna ****************** '***************************************... Do '(at)(at)(at)(at)(at)(at) Obsługa klawiszy (at)(at)(at)(at)(at)(at) If Przycisk > 0 Then Przycisk = 0 If L1 = 0 Then L1 = 20 If Wybor = 0 Then If K_wybor...
Jesteś pewien co do tego PWM? Sterowanie wskazówką w licznikach najczęściej zrealizowane jest w oparciu o specyficzny rodzaj silnika - air core gauge. Tam wychylenie wskazówki uzależnione jest od relacji prądów płynących w dwóch przesuniętych o 90* cewkach. Próba odczytu napięcia/prądu tylko z jednej cewki da błędny wynik. Co do najprostszej implementacji...
Witam! Potrzebuję wygenerować falę prostokątną o różnych częstotliwościach (w zakresie 3k - 50kHz) na jednym z pinów Atmegi328p w celu obsługi filtra przestrajanego zewnętrzną częstotliwością. Wiem, że można łatwo ustawić preskaler, jednak nie to rozwiązanie daje zbyt małą ilość dostępnych częstotliwości. Chcę ustawić w trybie CTC w rejestrze OCR1A...
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
Nie jestem w stanie tego zrobić w procedurze przerwania gdyż bufor do którego odczytuje wartości z karty sd posiada dane tyko wewnątrz funkcji read file (przekazywany jest wskaźnik do tablicy, przez to jest ona wypełnina danymi "wewnątrz tejże funkcji" - chyba że się myle ) Mylisz się. Przecież do funkcji podajesz wskaźnik . Pod tym wskaznikiem masz...
Zacznij od oszacowania typowych częstotliwości impulsów - jakie są spodziewane minimalne/maksymalne przepływy? Jaka jest wymagana dokładność pomiaru? Do tego dobierz okres zliczania impulsów. Oczywiście nie potrzebujesz żadnych danych zmiennopozycyjnych, na których obliczenia skutecznie zarżną mikrokontroler. Możesz przecież zliczać przepływ np. w...
Witam Problem rozwiązany. W programie zmniejszałem wartość rejestru OCR1A o 100. Podczas takiej dekrementacji mogło dochodzić do przypadku jak niżej OCR1A=10000 wartość timer1=9940 jeżeli w tym momencie zmniejszyłem wartość OCR1A do 9900 to licznik liczył dalej do wartości 65536 i następowała przerwa na czas około 1-2 sekund Wystarczyło przed każdą...
Od czasu napisania posta zmieniłam częstotliwość SCK (w fukcji "InitSpiMaster") z fosc/128 na fosc/4 . Teraz otrzymywane wartości z rejestru napięcia zachowują pewną zależność: pierwszy odczyt to liczba ok 20 000, następnie z każdym kolejnym odczytem liczba spada aż do wartości ujemnych i ponownie rośnie. Sprawdziłam też zachowanie układu w przypadku...
Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include "MK_TERMINAL/mk_term.h" #define REF_256 (1<<REFS1)|(1<<REFS0)...
Dzięki atom i ZbeeGin, Nie będę kopiował Twojego programu, bo go po prostu do końca nie rozumiem. Pisałem wcześniej programy w C, ale nie dla uC. Dlatego powoli poznaję wszystkie rejestry i możliwości jakie niosą ze sobą te układy scalone. Ale zaczynam tak wzorując się na Twoim kodzie: // konfiguracja licznika // generuj przerwania o częstotliwości...
Zwiększenie częstotliwości w Atmedze można zrobić programowo, zmieniając jakieś timery, ale pewnie wiąże się to z jakimiś skutkami negatywnymi. Co o tym myślisz? Skutki są, ale czy one są negatywne? 1. musisz zastosować układ który szybko przełącza tranzystory. 2. zaprojektować układ i płytkę porządnie, tak aby nie promieniować za dużo zakłóceń. 3....
Jednak dla Atmegi328 z 16MHz wychodzi, że Timer2 może pracować najwyżej na 61Hz co może być za duże dla serw które lubią 50Hz. Gdyby 61Hz było "najwyżej", to mógł by pracować niżej a więc na 50Hz. Poza tym serwa nie wymagają konkretnie 50Hz. Zdecydowana większość pracuje dobrze od 10Hz do kilkuset Hz. Objaw który opisujesz pasuje raczej do serwa które...
Rozumiem, że ustawiam Timer0 na Fast PWM, a wartość OCR0 podstawiam z wyliczeń na podstawie czasu trwania impulsu wejściowego sygnału RC. [syntax=c]TCCR0 |= (1 << WGM00) | (1 << WGM01); // tryb PWM , prescaler = 8 TCCR0 |= (1 << COM01) | (1 << COM00); TCCR0 |= (1 << CS01); OCR0 = // wartość podstawiana z wyliczenia;[/syntax]...
odpaliłem dwa timery jeden miał dawać sygnał 20 Hz a drugi miał odświeżać mi wyświetlacz 7 segmentowy 100 Hz i niestety nie działa, zrobiłem dwa różne przerwania... ISR(TIMER1_COMPA_vect) // przerwanie dla porownania { PORTD ^= 0x01; // zapalić/zgasić diode ICR1 = 1000000/(16*(0.0234*ADC + 0.9765)); // oblicza nowy szczyt...
Witam!! Napotkałem się na dosyć dziwny problem... Dotyczy on zliczania impulsów i ustawieniu wyjścia po przejściu warunku. Poniżej przedstawiam kod który dotyczy tego problemu. #include <avr/io.h> #include <avr/interrupt.h> int imp=0; #define tau 251; double kat=0.0,x=0.0; unsigned int licznik=250; ISR(INT0_vect) { x++; kat=x*0.9;...
(at)deus.ex.machina - oczywiście, że jest układ czasowo-licznikowy, kwestia tego jakie tryby obsługuje i w jaki sposób można wykorzystując go otrzymać 1.8MHz sinusa. Jestem ciekaw tego jak Twoim zdaniem to ma wyglądać, bo ciągle rzucasz ogólnikami a dowodów na "działanie" ciągle brak. Więc zamiast zarzucać adwersarzom dyletanctwo bądź szablonowe myślenie...
Poprawiłem warunek else na następujący [syntax=c] else PORTA&=~(1<<PA2); // Jeśli nie zgaś LED [/syntax] zaś flagi zdeklarowałem następująco [syntax=c] volatile uint8_t flaga1=0; volatile uint8_t flaga=0; [/syntax] co w efekcie dało cały kod następujący [syntax=c] #include <avr/io.h> //dołączenie podstawowej biblioteki #include <util/delay.h>...
Dzień dobry! Mam taki o to problem, przerzuciłem notę ale nie mogę jakoś ogarnąć jak uruchomić drugi timer 8 bitowy, przykładowo: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
Dzień dobry kolegom. Napisałem program na ATMegę32 w którym dokonuję odczytu trzech napięć (U1, U2 i U3) poprzez piny ADC mikrokontrolera i wystawiam na wyjście PWM wartośc napięcia wynoszącą U_WYJ=U1-U2-U3. Wartość napięcia U_WYJ na wyjściu przy podanych zerowych napięciach U1, U2, U3 na piny ADC nie utrzymuje stałej wartości a zmienia się w zakresie...
Nie wiem dziwne to, wydaje się, że WINAVR przyjął zmianę częstotliwości taktowania, a temperatura się nie wyświetla. No rzeczywiście to bardzo dziwne i zastanawiające. Skoro wydaje ci się że WINAVR przyjął zmianę - to przecież musi działać no bo jak inaczej? Hmmm dziwne. Bardzo dziwne. Program przecież jest napisany idealnie, więc tym bardziej dziwne....
http://obrazki.elektroda.pl/4102413500_1... Wyświetlacz matrycowy LED 8x80 - mój projekt magisterski. W ludzkiej naturze tkwi fascynacja wszelkiej maści kolorowymi, mrugającymi świecidłami, stąd też chyba popularność wyświetlaczy matrycowych. Można je spotkać zazwyczaj na dworcach, w autobusach, albo w witrynach sklepów. Od dawna chciałem...
Dodano po 1 Cytat: Gdzie timer realizuje zliczanie ? Timer zlicza automatycznie zwiększając wartość rejestru TCCR0. W tym przypadku TCCR0 jest zwiększany od zera do 255. Gdy nastąpi przepełnienie czyli przejście z 255 na 0 następuje wywołanie procedury przerwania. Cytat: Widać też lekkie miganie wyświetlaczy... Najwyraźniej częstotliwość 'przełączania'...
Hej Już teoretycznie wiem o co chodzi. Odwiedziłem FAQ i znalazłem coś takiego: //PWM dla wyjscia PB3 (OC1B). //PB3 wyprowadza sygnal PWM, ktory nalezy podac na uklad calkujacy RC, aby otrzymac sinusoide. //Zastosowano AVR ATtiny26. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h>...
Teoretycznie timer1 mógłbym włączyć dwa kanały PWM, ale i tak będę potrzebować dalej 2 timerów w trybie CTC zliczania. Dodatkowo potrzebny jest jeszcze timer który będzie wysyłał co kilka sekund dane poprzez RS232 na aplikację do komputera (wilgotność, temperatura, obroty wentylatorów, itp). Uważam, ze ATmega32 starczy. W przerwaniach od CTC spokojnie...
Skąd wnioski, że źle działa ? Tz. opisz dla konkretnego stanu : oczekuję .... mam .... Albo [url=https://pl.wikipedia.org/wiki/Wikip... funkcję od ADC niech zwraca jakąś przewidywalną wartości i ją wpisz do OCR1A. [syntax=c] uint16_t ADC_val; (...) //OCR1A = ADC ; // przepisanie danych z ADC do rejestru porównania licznika OCR1A...
Zrobiłem narazie przesuwanie sekwencji o stałej częstotliwości na timerze0 w trybie normalnym. Rozumiem, że teraz aby dodać skanowanie z przycisków muszę przestawić licznik w tryb CTC i ? właśnie co. W pętli głównej czyli w mainie, muszę dać skanowanie portu z przyciskami na wejściu, teraz jak to miałoby działać ? Jeśli wcisnę powiedzmy przycisk 0 to...
http://obrazki.elektroda.pl/9114516200_1... Autorski projekt wyłącznika zdalnie sterowanego za pomocą pilota RC5. Cały układ kontrolowany jest za pomocą mikroprocesora z rodziny AVR, ATtiny2313. Na uwagę zasługuje zasilanie układu bezpośrednio z sieci elektroenergetycznej o napięciu 230V, zrealizowane przez zasilacz bez transformatorowy....
Witam Zmontowałem sobie układ Atmega32 z pojedynczym wyświetlaczem 5x7 i wszystko działa tak jak należy ale problem zaczyna się w innym miejscu. Potrzebuję połączyć 3 takie wyświetlacze, lecz nie mam pojęcia w jaki sposób to zrobić. Proszę o pomoc Tutaj podaję listing programu http://obrazki.elektroda.pl/2811327600_1...
Jest możliwe, ale zależy na jakim mikrokontrolerze i pracującym z jaką częstotliwością... PWM bazuje na timerze, więc siłą rzeczy, ma 2^n stopni. W najniższej rozdzielczości ma 256 poziomów. Dla Arduino UNO/Nano (ATMega328P(at)16MHz) graniczna częstotliwość Fast-PWM to 16 MHz/256 = 62,5 kHz. Można jeszcze zwiększyć częstotliwość PWM ale kosztem ograniczenia...
Witam, mam mały program napisałem przy użyciu książki Pana Marcina Wiązania oraz przy użyciu elektrody do obsługi matrycy led, lecz mam nieporządany efekt stroboskopowy. Nie widać liter, tekstu, tylko wszystkie diody mrugają. Czy to jest spowodowane zasilaniem czy też błędem programu? Dorzucam dwa programy, przy których pracowałem i schemat, schemat...
https://obrazki.elektroda.pl/7186671300_... Od kilku lat programuję 8-bitowe mikrokontrolery AVR i przez ten czas zdobyłem trochę wiedzy na ich temat. Poniżej znajduje się kilka ciekawostek o tych układach. Jeśli znacie jakieś inne interesujące informacje, to piszcie. Najnowsza wersja artykułu jest również dostępna na mojej stronie:...
To co z waszą pomocą spłodziłem działa świetnie na napięciu stałym. Wyniki są praktycznie bezbłędne i bardzo stabilne. Jednakże na AC jest beznadziejnie. Wyniki są totalnie losowe. Wnioskuję, że próbkowanie jest nierównomierne i stąd te problemy. Ustawiłem OCR na 2 przy preskalerze 1024 daje 2604 Hz. Przy częstotliwości sieciowej da to 52 próbki na...
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555) $regfile...
Wybacz Kolego ale można się załamać - nie znasz podstaw programowania! Weź sobie jakąkolwiek książkę do C i przeczytaj chociaż KILKA PIERWSZYCH ROZDZIAŁÓW... Bardzo uprzejmie proszę. Forum nie jest od nauczania C, nawet na przykładach! Najprostszy program ma postać: #include <stdlib.h> #include <stdio.h> int main(void){ sleep(1);...
https://obrazki.elektroda.pl/6692889600_... Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX...
DEX - no cóż dlatego, bo taki układ już jest i nic nie da się teraz zrobić. Kolumny i wiersze są podpięte bezpośredni pod wymienione porty.. Więc bezpośrednie wykorzystanie zewnętrznego przerwania nie wchodzi w rachubę. mariuszlorenc - no wlasnie może o to mi chodzi, ale jak to się robi, bo to moje naprawdę pierwsze doświadczenie z Timerami, flagami...
Witam. Mam problem, podejrzewam z opóźnieniami w inicjacji LCD. Mam do zrobienia komunikacje szeregową pomiedzy ZL10AVR z ATmega32 a komputerem PC. Program działa tak, że jak nacisnę przycisk 1 (S12) to na komputerze uruchamia sie program notatnik (to zrobilem w programie LabView - ale to nie wazne). Chodzi mi o to - jak nacisnę ten przycisk to na wyświetlaczu...
pozmieniałeś nieco moje fragmenty, i dlatego nie działa dobrze. oto gotowy kod według mojego pomysłu i w miarę prosto. Pętla główna pusta. Testowałem na atmega644p i działa jak należy. Przeanalizuj różnice między swoim a moim kodem i zobaczysz dlaczego nie działało $regfile = "m644pdef.dat" $crystal = 16000000 '$baud = 9600 Config Timer1 =...
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...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
https://obrazki.elektroda.pl/4689387300_... Jak niedawno zapowiadałem, prace nad projektem efektora do miksera Behringer DJX700 praktycznie zostały zakończone. Na chwilę obecną mam działający układ wraz z devboardem i ukończone programy efektów. Ale po kolei. O samym procesorze FV-1 możecie poczytać w innych moich tematach; konkretnie...
https://obrazki.elektroda.pl/5452004500_... W temacie: https://obrazki.elektroda.pl/5131004200_... I już widać, że wynik jest raczej mało prawdopodobny, odchyłka 1Hz jest mało prawdopodobna w zestawieniu z danymi za 2015r. Na stronie https://obrazki.elektroda.pl/1500445700_... Efekty pomiarów zostały...
witam Próbuje napisać program który po wgraniu do atmegi będzie pokazywał napięcie i prąd. 10 bitowa rozdzielczość przetwornika A/D jest dla mnie nie wystarczająca, Postanowiłem sięgnąć po technikę zwaną nad próbkowaniem (oversampling) Atmege programuje w bascomie znalazłem artykuł w nowym elektroniku z 2007 roku opisujący to zagadnienie.Przepisałem...
Witam Próbuję zrobić miernik częstotliwosci na atmega16 poprzez zliczanie impulsów w czasie 1s. Max częst. to 20kHz (min. 20Hz) a więć po 1s będze 20 000 impulsów dla max częstotliwości. Dlatego do zliczania ich wykorzystuje licznik 16 bitowy T1. Do odmierzania czasu 1s chciałem wykorzystać licznik T0 z ustawionym preskalerem na 1024. Kwarc uk to 8MHz...
co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
Witam Odświeżę wątek. Dodałem układ UDN2981A pomiędzy Atmege a wyświetlacze, wyrzuciłem tranzystory które sterowały anodami oraz ich rezystory z baz. Działa całkiem nieźle. Jest jedno ale... jasność. Steruje to takim kodem: [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 64 ' rozmiar...
Witam. Mam następujący problem z SPI (i nie tylko) Najpierw opis układu: Atmega32A master SPI Atmega8 Slave. (przerwania) Wszystko taktowane wewnętrznie na 8MHz Do atmegi8 są przyłączone 4 wyświetlacze 12 diodowe WA przez tranzystory. Katody do portów (oczywiście z R) Wyświetlanie multipleksowane. Do tego 8 przycisków - jako, że brakło portów to "klawiatura"...
https://obrazki.elektroda.pl/4760563300_... W ramach trwającego konkursu Czujnik wilgotności i temperatury AM2302 (DHT22) Czujnik AM2302 może pracować z napięciami 3.3-5.5V posiada 4 wyprowadzenia (jedno niewykorzystywane). Trzy wyprowadzenia wykorzystane są jako zasilanie (1), transmisja danych (2), oraz masa (4), więcej znajdziecie...
(at)Marek_Skalski Marku, trochę kreatywności. Pamięć SPI z prockiem nie musi być łączona przez QSPI, skoro tylko rzadko chcemy wpisywać do niej nowe próbki. QSPI powinno być pomiędzy pamięcią a DACem. Są pamięci, które umożliwiają dynamiczną zmianę interfejsu. Mając taką pamięć, która pracuje jako FIFO/LIFO, wystarczy z MCU zapodać taktowanie i reszta...
licznik atmega32 licznik częstotliwość licznik impulsów atmega32
intel celeron t3500 h2testw karta plamy ekranie
eltax atomic kable modus głośników
Konwersja skrzyni biegów w Peugeot 307 2.0 HDI Exacontrol 7 C - Czy współpracuje z innym sterownikiem?