Witam. Wybacz ale chce mi się rozpisywać. Ustawianie 1 sekundy dla zegara 16MHz [syntax=c] OCR1A = 0x3D08; TCCR1B |= (1 << WGM12); // Mode 4, CTC on OCR1A TIMSK1 |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler to 1024 and start the timer[/syntax] to co wychodzi z prescalera...
Przy odblokowaniu timera weź pod uwagę prescaler. Jeśli jest różny od 1 to on cały czas zlicza - trzeba go wyzerować, bo inaczej pierwszy impuls będzie po dosyć losowym czasie. Włączaj triak na dłużej - szczególnie przy kątach otwarcia rzędu 180 stopni prąd płynący przez triaka może być niewystarczający do jego podtrzymania. Jeśli możesz zmienić schemat,...
[syntax=c]Error RTC_Initialize (struct RTC_init *initParemeters) { Error ret = NO_ERROR; TCCR2 = 0; //stop timer initialized = false; if (NULL != initParemeters) { lastInitParams.onSecChangedCbf = initParemeters->onSecChangedCbf; } else { lastInitParams.onSecChangedCbf = NULL; } //AS2 = 1 - asynchronous mode. ASSR |= 1<<AS2; //OCR2 = 128 -...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
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...
Bity CS00 i CS02 od preskalera są w rejestrze TCCR0B, a nie TCCR0A. Masz preskaler na 0 więc timer nie zlicza.
Po pierwsze, timer liczy od 0 do 255, ale to oznacza 256 impulsów pomiędzy przepełnieniami, czyli powinno być 256, a nie 255 * 128us. Po drugie zaokrągliłeś wynik z 32.64 do 32 przed dzieleniem, co w efekcie dało niedokładny wynik ilości przepełnień. W rzeczywistości częstotliwość przerwań można obliczyć dużo prościej: ( 8000000 / 1024 ) / 256 = ok. 30,5176.....
1000000 dzieli się przez 64: 1000000/64=15625 Masz więc gotowe ustawienia preskalera (64) oraz licznika 16-bitowego T1 (15625). Do dokumentacji i tak Cię odeślemy - nie zasłaniaj się nieznajomością angielskiego - książek po polsku trochę jest, a nawet parę wątków niżej można znaleźć [url=http://www.elektroda.pl/rtvforum/to... atmega32...
...Na tym procku sprzętowo to w zasadzie nie uzyskasz innych czestotliwości PWM jak kombinacja preskalera i częstotliwości zegara systemowego, ale zawsze możesz wyregulować prędkość tego drugiego poprzez zmianę bitów kalibracyjnych... Niestety , ale nie mogę się zgodzić z powyższym twierdzeniem. Proszę zajrzeć do PDF-ka ATmega32 na str.107 i przyjrzeć...
Coś takiego znalazłem. Co prawda na Atiny ale można przerobić. [syntax=c]// // Talking to ultrasonic sensor HC-SR04 with an ATtiny84, and // sending distance data using serial communications. // // electronut.in // #include <avr/io.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 8000000...
Dodatkową niedogodnością jest to że Atmega2560 ma wspólny układ prescalera dla Timerów 0 1 3 4 5. a to nie wystarczy?: Timer/Counter 0, 1, 3, 4, and 5 share the same prescaler module, but the Timer/Counters can have different prescaler settings . Pytam bez analizy kodu. Nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
Poczytaj o preskalerze tego Timera oraz o trybie CTC Po co mi tryb CTC? Doczytałem na stronie 329, że muszę ustawić prescaler=128; Więc teraz, czy taki kod: [syntax=c] int main(void){ ASSR |=(1<<AS2); //zmiana źródła zegara licznika na kwarc zegarkowy TIMSK |=(1<<TOIE2); //zezwolenie na przerwanie po przepełnieniu TCCR2 |=(1<<CS22)|(1<<CS20);...
Masz błąd w ustawieniach prescalera...ustawiając wszystkie bity CS ustawiłeś zewnętrzny zegar jako taktowanie Timera, ustaw na przykład sam CS12 i zobacz czy działa
Po niewielkich zmianach powinno działać też na Attiny85. Wrzucam kod dla Attiny85 (nie testowany; nie mam jak): [syntax=c]//############################... // SPWM implementation for Attiny85 // Clock frequency 8MHz internal clock oscillator // High Fuse: 0xFF, Low Fuse: 0xE2 // // Signals generated: // - SPWM...
Co nie zmienia faktu, że nie dostaniesz 99.900 kHz, ani 99.000 kHz, ani 98.000 kHz itd. :P No właśnie co napisałem w korekcie mojego postu powyżej odnośnie rozdzielczości. Kilka postów poniżej jest 'równoległy' temat : http://www.elektroda.pl/rtvforum/topic24... proponowałbym śledzic jego dyskusję, ewentualnie dołączyc tam.... zamiast...
Może spróbuj sterowania w inny sposób - za pomocą przerwania INT2 (wywoływanego przyciskiem) uruchamiaj i zatrzymuj licznik TC0 (parametry PWM są ustawione u Ciebie poprawnie) tzn ustawiaj bity TCCR0|=(1<<CS00)|(1<<CS01) kiedy chcesz uruchomić licznik i zeruj je jeżeli chcesz zatrzymać. Samo ustawianie wartości wypełnienia czyli rejestr...
Witam! Zawracam się do szanownych kolegów z nietypowym problemem, mianowicie wykonuję aktualnie sterownik bramy dwuskrzydłowej na uC Atmega32 gdzie do sterowania silnikami 24V chciałem wykorzystać PWM(funkcja powolnego startu i domykania bramy). Przy sprzętowym PWM wszystko jest jak najbardziej ok (silniczki pięknie się starują), natomiast gdy do generowania...
Może to co napiszę jest trochę prymitywne ale działa, sprawdziłem :-) No więc można też tak: Start Timer0 Do Loop Until We=1 Timer0=0 Do Loop Until We=0 Wynik=Timer0 We to dowolny pin. Prescaler timera trzeba ustawić tak żeby mierzony impuls zmieścił się w zakresie 0 - Tmax (zależy ile masz bitowy Timer). Nie potrzeba tu żadnych przerwań. Wada jest...
Witam, potrzebuje pomocy z timerem1 w atmega328p. mam taki kod: [syntax=c] // Ustawienie timera 1 TIMSK1 |= (1<<TOIE1); // umozliwenie przerwan od timera1 TCCR1B |= (1<<CS00) | (1<<CS02); // prescaler na 1024 TCNT1 = 60000; // wartość rejestru w którym odbywa się liczenie na 60000 sei(); // przerwanie od timera1 ISR(TIMER1_OVF_vect)...
Witam w przypadku mikrokontrolerów jestem początkujący więc proszę o wyrozumiałość. Próbuję wysterować 2 serwa za pomocą PWM z pierwszym poradziłem sobie na timerze 1 OC1A i wszystko ładnie chodzi jednak niemam pojęcia jak ustawić drugi (OC1B). Serwa są już przerobione na 360*, generalnie chodzi o wysterowanie czy mają się oba kręcić w lewo,prawo lub...
Witam. Rozumiem, że działa to tak: Timer cały czas zlicza czas... 1. Gdy zbocze jest narastajace, przepisuje aktualna wartość timera do zmiennej zbocze1. 2. Zmieniam aby teraz reagował na zbocze opadające. 3. Gdy zbocze jest opadające , przepisuje aktualną wartość timera do zmiennaj zbocze2. albo raczej: 1.Gdy zbocze jest narastajace, zeruję zawartośc...
Chcialbym napisac najprostrzy program aby sprawdzic czy progra mi wogole wchodzi w przerwanie czyli czy zapali diode. Ale zupelnie nic sie nie dzieje. Zarówno symulacja programowa w AVR Studio, jak i program uruchomiony na realnym sprzęcie działa poprawnie. Albo się pomyliłeś co do podłączenia diody, albo procesor jest uszkodzony. Po drobnej zmianie...
Witam. Mam zestaw opisany jak w temacie. Programator STK200. Pojawił mi się problem który nawet trudno wytłumaczyć. Próbowałem juz nawet z drugim ATmegą i tak samo się dzieje. Nadmienię że do układu dołączam oscyloskop Hamega - sprawny i dokładny. Napisałem program z wykorzystaniem Timera T0 - odmierza zadany czas i zapala diodę po czym przy następnym...
Przy użyciu timera2 i trybu CTC chciałem uzyskać przebieg prostokątny o częstotliwości 10Hz. Czy dobrze dobrałem wartość OCR2, aby uzyskać taką częstotliwość? Nie wygląda abyś to zrobił poprawnie i otrzymał spodziewany effekt. Po pierwsze: Jeżeli wyjście kierujesz na pin PD.7, który jest skojarzony z wyjściem Timera2 (OC2) nie ma potrzeby stosowania...
plik wyglada tak: .INCLUDE "m32def.inc" .CSEG reti jmp Reset reti reti reti reti reti reti reti reti rjmp Timer reti reti reti reti reti reti reti reti reti reti Timer: cpi r17, 0x00 breq timer0 ldi r17, 0x00 cbi PORTD, PD5 reti timer0: ldi r17, 0x01 sbi PORTD, PD5 reti Reset: ldi r16, high(RAMEND) ; stos out SPH, r16 ldi r16, low(RAMEND) out SPL, r16...
Witam i proszę o wyjaśnienie, dlaczego jeśli zmienna x w funkcji main jest typu long int to po zakończeniu pętli while ma ona wartość mniejszą (66) niż jeśli jest typu int (86). Dzięki. [syntax=c] volatile uint8_t timer1; ISR (TIMER0_COMPA_vect){ uint8_t x = timer1; if (x) timer1 = --x; } int main (void) { TCCR0A |= (1<<WGM01);//tryb CTC TCCR0B...
1. Pokaż CAŁY kod. 2. Zdajesz sobie sprawę, że parametry timera można zmieniać skokowo co 1 bit - policz sobie jakie wartości będą wpisywane do rejestrów, które nim sterują przy różnych parametrach wejściowych - być może Twoje operacje powodują że np. zmiana częstotliwości o paręset Hz to zmiana o 1 bit - wtedy trzeba inaczej dobrać prescaler itp. Warto...
Witam...Dlaczego przerwania z Timera0 generowane nie sa zgodnie z dokumentacja? chciałbym zrealizować generator sterujący pinami portu PC0-7...w taki sposób aby wartości z tabeli --- unsigned char GenTab DDRC = 0xFF; // port C jako wyjscie 11111111 CLI(); //disable all interrupts TIMSK = 0x01; //timer interrupt sources TCCR0 = 0x00; //stop OCR0...
Note that for newer devices (ATmega88 and newer, effectively any AVR that has the option to also generate interrupts), the watchdog timer remains active even after a system reset (except a power-on condition), using the fastest prescaler value (approximately 15 ms). It is therefore required to turn off the watchdog early during program startup... Jednym...
Udało mi się zapisać pierwszą stronę pamięci, potem modyfikowałem program i chciałem zapisać kilka stron - za każdym razem zapisywała się tylko 1 strona poprawnie aż w końcu zapisuję tylko pierwszą stronę i to błędnymi danymi. Długa noc przede mną... wrzucam w zasadzie cały testowy kod, przepraszam za bałagan bo jest w nim pełno zakomentowanych kawałków...
...Powinieneś użyć rtc ... Ja bym użył tego, który jest na pokładzie M32. Odpada cięcie płytki, bo wystarczy przylutować kwarc zegarkowy do PC6/PC7. Jeśli te piny lub timer 2 nie są dostępne , to timer 0 w trybie CTC, preskaler 256 , OC0=125-1 i mamy 32k cykle zegara pomiędzy przerwaniami. [syntax=c] TIMSK |=_BV(TOIE0); //zezwolnie na przerwanie TCCR0...
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...
W takim razie zaczynam wszytsko od poczatku bede wrzucać programy z kompletnymi komentarzami do tego co bede ustawiac i jak. Pozdrawiam i dziekuje za wytrwalość :) Dodano po 2 A wiec zaczelem od ustawiania portów I/O, następnie funkcja inicjująca ADC_init i Timer0_init, zostala ustawiona tak jak to widać w kodzie. W ADC dalem tryb compare match od timera0...
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...
Witam serdecznie. Próbuje stworzyć generator PWM o zmiennym wypełnieniu i zmiennej częstotliwości. Generator ten chce stworzyć na ATmega32 12MHz w języku BASCOM. Zmian dokonywać będzie można przez dwa potencjometry. Mam już napisany program ale niestety sygnał na oscyloskopie wariuje. Co jakiś czas jest przebicie innych wartości. Walczyłem z tym dość...
Czyli jeśli dla kwarcu 7.3728 Mhz napiszę taki kod to będę miał przerwanie co 1 sekundę - o ile dobrze zrozumiałem: Tylko do pewnego stopnia; t.zn. wynik końcowy może byc zgodny z oczekiwanym 1 sec, ale merytorycznie tok jest błędny. Aby to miało poprawny i zrozumiały sens przestaw te liczby 200 i 144 a wtedy odmierzane interwały będą 5 msec. Latwiej...
[syntax=c] /* * woltomierz.c * * Created on: 19-04-2013 * Author: Michał */ #include <avr/interrupt.h> #include <avr/io.h> #include "woltomierz.h" volatile uint8_t cy1; volatile uint8_t cy2; volatile uint8_t cy3; volatile uint8_t cy4; volatile uint8_t tryb; volatile uint16_t zadana; uint8_t cyfry[] = {0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 0x6D...
Mozesz to zrobic wykorzystując timer z dwoma kanałami np. Timer1 Na jednym kanale kontrolujesz częstotliwośc, a na drugim wypełnienie. Załóżmy że taktujesz processor 8 MHz Timer1 Waveform Generation Mode: Phase and Frequency Correct PWM mode(9) / TOP = OCR1A Timer clock source: I/O Clock / 8 (prescaler=8) OC1B: Clear OC1B on Compare Match when up-counting....
Nie wiem skąd ten upór w stosowaniu PWM do sterowania serwa. Jeśli ustawimy prescaler tak aby podstawowy interwał był 20ms- a tak wymaga serwo- to rozdzielczość regulacji długości impulsu- zasadniczo 1-2ms jest bardzo kiepska. Zwłaszcza przy kilku serwach. Tu masz "gotowca"- ale dla ATMega32- pewnie ustawienia rejestrów dla ATMega8 mogą się nieco różnić....
Witam. Od 3 dni siedzę już nad programowym PWM. Wykorzystuję do tego przerwanie na timerze, ale coś nie działa tak jak powinno otóż jak nie mam ustawionego stanu 1 na ostatnim bicie portu to PWM dziwnie się zachowuje. //Includes #include "avr/io.h" #include "inttypes.h" #include "stdio.h" #include "util/delay.h"...
Witam. Procesor ATmega32 Za pomocą przerwań zewnętrznych chciałem sobie zmierzyć szerokość impulsu ECHO w sonarze HC-SR04. Niestety coś w kodzie nie trybi ponieważ dioda informująca o dokonanym pomiarze się nie zapala. Napisałem już obsługe jednego czujnika za pomocą INPUT_CAPTURE i działa, ale niestety w ATmega32 jest tylko jeden pin do obsługi takie...
Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7 Zacznijmy od tego: timer w trybie CTC, preskaler 1, OCR2A=7, czyli przerwanie co 8 taktów zegara, a ile taktów trwa procedura obsługi tego przerwania? Samo wejście i wyjście z procedury zajmuje więcej czasu.
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.
Faktycznie, nie mam pojęcia po co wpisywałem OCIE1B. Pozostawiłem TIMSK |= (1<<OCIE1A);//zezwolenie na przerwanie od timer1 i jest teraz ok. Tą konfigurację robiłem jakiś czas temu i chyba myślałem że trzeba załączyć A i B. Teraz zmiana i dążenia właśnie do tego co zamierzałem i znów zong. Zliczanie miało odbywać się w przerwaniu. Wiem,...
Witam. Kombinuję już od jakiegoś czasu nad włącznikiem RC ale nie typu on/off tylko w zależności od zapotrzebowań, tyle ma być stanów. Na chwilę obecną docelowo mają to być 3 stany off/1/2. Wygrzebałem w googlu kawałek kodu, który jest odpowiedzialny właśnie za pomiar długości trwania stanu wysokiego na wejściu ICP1 (input capture). Jednak za żadne...
Nie mam niestety kwarcu 8MHZ i nie mam jak sprawdzić. I nie wiem czy mogę użyć wewnętrznego oscylatora. Do kontroli amatorskiego RC-serva nie jest absolutnie konieczny kwarc! Błąd częstotliwości wewn. oscylatora w porównaniu do rezonatora kwarcowego jest mniejszy niż błąd serva. Musisz przyjąc ze zwykłe servo (bez encodera) ma błąd co najmniej 0.5...
Teraz masz prescaler ADC ustawiony tak że zegar ADC ma 125kHz. Zegar ADC- a nie inne zegary. Zegar ADC ma mieć 50-200kHz. Jak Ci mniej zależy na dokładności niż na szybkości- można dać zegar ADC na 250kHz. A oprócz tego- możesz zrobić tablicę albo bufor dla UART-a.
Witam. Piszę program do obsługi LCD. Piszę w asm i pod ATmega32. Przerwy czasowe chcę zrealizować za pomocą liczników. Program dla sprawdzenia inicjacii - nie pełny i nie działa właściwie - napisany dla próby. Napisałem początek programu i chciałem go zasymulować ale wciąż pojawia mi się ten sam błąd z którym po raz pierwszy się spotykam i nie wiem...
#include <mega8.h> #include <stdio.h> #include <delay.h> #include <math.h> // 1 Wire Bus functions #asm .equ __w1_port=0x15 ;PORTC .equ __w1_bit=5 #endasm #include <1wire.h> unsigned int status=0, error=0; int temperatura=0, temperatura_zadana=0; unsigned char rom_codes[5,9]; unsigned char devices, ii; int ds1820_status=1,...
Proszę rzucić okiem na dokumentację ATMega32 w sekcji Timer0/Counter0 and Timer1/Counter1 Prescalers , rys. 39 i porównać sobie z rys. 31 w tej samej sekcji w dokumentacji ATMega8. Czy widać jakąś różnicę? A zatem 2x większe taktowanie wymusi całkowitą zmianę w programie.
Owszem, preskaler jest wspólny dla timerów T0 i T1, ale stopień podziału można ustawić niezależnie dla każdego z timerów. Ponieważ preskaler działa cały czas, niezależnie od wyboru stopni podziału dla timerów, to nie można określić ile cykli zegara systemowego upłynie od momentu włączenia timera z podziałem preskalera większym od 1 do momentu pierwszego...
Witam. Problem który mi się nadarzył był już poruszony na forum (czyli nie jest to odosobniony przypadek), niemniej pozostał bez zadowalającej odpowiedzi. Mianowicie, w ramach przetestowania przetwornika podaję mu napięcie z potencjometru. Przy małych wartościach napięcia (nieco wyższych od zera) przetwornik bardzo zawyża (nawet do pełnego zakresu)....
Bawię się ADC w ATMEGA32. Prescaler ADC ustawiam na 2 lub 4, w zależności czy mam 16 MHz z kwarcu, czy 8 MHz z wewnętrznego RC. Wychodzi mi z obliczeń, że na przetwornik ADC podaję 4 MHz i chodzi. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Dim D As Word Dim T As Word Dim W As Byte Dim N As Byte Dim S As String * 4 Dim L As Byte Ddrc...
Napisałem program który ma odczytywać odległości pomiędzy zboczami narastającymi sygnału PPM z nadajnika modelarskiego. http://obrazki.elektroda.pl/7575026600_1... 1: 41 | 2: 131 | 3: 225 | 4: 314 | 5: 415 | 6: 1107 | 7: 1201 1: 1312 | 2: 2005 | 3: 2099 | 4: 2193 | 5: 2283 | 6: 2376 | 7: 2465 1: 2902 | 2: 2997 | 3: 3090 | 4: 3180 | 5:...
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]...
Witam Napisałem taki program do regulacji prędkości silnika. [syntax=vbnet] $regfile = "m32def.dat" Enable Interrupts $crystal = 16000000 $baud = 9600 Config Portb = Input Set Portb.1 Config Pind.4 = Output Config Porta = Input Dim Freq As Long Dim Pomoc As Byte Dim A As Integer Dim P As Integer P = 0 Config Timer1 = Counter , Edge = Falling Enable...
uC zasilany z 5V. Po dłuższej przerwie (pauza na zaliczenie sesji) wziąłem się znowu za ten projekt. I tak... przegooglowałem neta i ze strony http://winavr.scienceprog.com/avr-gcc-tu... zapożyczyłem kod obsługujący timer input capture. Przerobiłem go pod potrzeby ATmega32, ale też do końca nie wiem czy poprawnie....
Chciałbym sie dowiedzieć czy zmniejsza sie też pobór prądu przy ściemnianiu? i czy wpływa to na długotrwałosc żarówki ? Pobór prądu powinien być mniejszy lecz niekoniecznie proporcjonalnie do zmiany oświetlenia. Obiło mi się o uszy, że ściemnianie żarówek jest szalenie nieekonomiczne, gdyż sprawność niemiłosiernie spada. Napisałem w bascomie kod pod...
Witam forumowiczów :D! Tworze projekt na zaliczenie - prostą perkusje elektroniczną, która posiada 12 przycisków, czytnik kart SD i wyjście PWM podpięte przez wzmacniacze do gniazda jack. Wszystko do momentu odtwarzania dźwięku działa poprawnie - wartości z pliku czyta prawidłowo (przetestowane na diodzie). Problem pojawia się gdy zaczynam odtwarzać...
Witam Do atmegi 328p, do int0 mam podpięty jedną nogą pc814, drugą do masy, czyli ten pc814 zwiera do masy int0. LCD podłączony do portu D. Wejscie int0 podciagnięte wewnętrznym pullupem. W przewaniu próbuję zliczać te impulsy, ale otrzymuję dziwne rzeczy. [syntax=c]#include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h>...
Bez kalkulatora "na czuja" już myślę że przy 16MHz i 8Bit Timer i prescaler 256 nie da się uzyskać 50Hz.. Powiedz dlaczego nie użyjesz gotowych instrukcji konfigurujących Timer? Pytam z ciekawosci. Albo dlaczego nie chcesz użyć gotowego polecenia http://wiki.mcselec.com/bavr/CONFIG_SERV... 50Hz to cała era dla mikrokontrolera... Jeden timer dla wszystkich...
Witam Po paru projektach, wszystkich na atmega8 z przyzwyczajenia i wystarczających zasobów, do zastosowań potrzebowałem coś z sześcioma kanałami PWM. Projekt i PCB zrobione i złożone i na starcie w programowaniu mam problem nie do pokonania dla mnie. Zacząłem od konfiguracji Timer0 i nie mogę zmusić drugiego kanału (OCR0B) do wysterowania wyjścia....
Witam, Nie mogę sobie poradzić z konfiguracją licznika 16b (timer1) w procesorze atmega32. Potrzebuję sobie wygenerować impuls o zadanej długości, próbuje użyć do tego celu licznika w trybie CTC z ustawieniem "Clear OC1A/OC1B on compare match (Set output to low level)" a więc zawartość OCR1A będzie regulować długość impulsu. Kod testowy: DDRD |= _BV(5);...
Witam, Problem z którym się spotkałem jest co najmniej dziwny i nie moge rogrzyc co moze byc jego przyczyną, podejrzewam przerwania. Od niedawna programuje uC, więc proszę o wyrozumiałość. Mianowicie: Przed dodaniem PWM na OC1A (PD5), wszystko działało ok (tak przynajmniej wyglądało). Zastosowałem FAST PWM, sterowanie dmuchawą w piecu CO: void dmuch_init(void){...
Witam. Chcę za pomocą Timera1 odmierzyć czas w przybliżeniu 1 s (dokładność do 0,1 s). Wprowadzam następującą konfiguracje: ldi Temp, 0x29 ;załadowanie do r16 wartości ldi R20, 0x29 ;załadowanie do r17 wartości out TCNT1H, Temp ;wpisanie do rejestru TCNT1L wartości out TCNT1L, R20 ;wpisanie do rejestru TCNT1H wartości out TCCR1A,r29 ;wpisanie do rejestru...
Witam, W Arduino posiadam 6 sprzętowych kanałów PWM. Jednak potrzebuję obsłużyć ich 7. Podpowiedziano mi, że mógłbym użyć dekodera (np. BCD -> DEC), jednego timera i przerwaniami obsługiwać kilka serw. Zacząłem kombinować i stworzyłem większy niż kilkulinijkowy kod, który kompletnie nie działał. Zacząłem go stopniowo upraszczać, aż doszedłem właściwie...
Lektura: http://mikrokontrolery.blogspot.com/2011...
W dokumentacji pojawia się dla mnie mała niejednoznaczność str. 77 DS ATmega328 Konfigurowanie ustawień Watchdoga 1. In the same operation, write a logic one to the Watchdog change enable bit (WDCE) and Watchdog System Reset Enable (WDE) in Watchdog Timer Control Register (WDTCSR.WDCE and WDTCSR.WDE). A logic one must be written to WDTCSR.WDE regardless...
witam, czy moglby mi ktos pomoc w przerobieniu tego kodu tak aby mozna bylo sterowac serwami. Nie wiem jak osiagnac czestotliwosc 50Hz [syntax=c]#include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> #define GSCLK_DDR DDRB #define GSCLK_PORT PORTB #define GSCLK_PIN PB0 #define SIN_DDR DDRB #define SIN_PORT PORTB #define...
Nawet jak nie masz kwarcu zegarkowego, to zawsze można zastosować np 4MHz :] ustawiasz timer z prescalerem = 1 , czyli timer zwiększany będzie co 0,2500 us jeżeli ustawisz przerwanie od przepełnienia timera (timer 8bitowy np 0 lub 2) to przerwanie będziesz miał co 0,0640 ms, wystarczy w przerwaniu zliczać zmienną 16bitową, i gdy zliczy do 15625 wtedy...
Wciąż nie rozumiem skąd to ograniczenie częstotliwości o którym mówisz - mój timer1 jest skonfigurowany na 1MHz (prescaler /8, a zegar główny 8MHz). Ale to bez znaczenia, bo w takim razie jednak wykorzystam ten timer0 i przerwania zewnętrzne (zamiast input capture timera1). A więc serdeczne dzięki za pomoc ;) I chyba niestety się nie przekonam czy compare...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
Od razu mówię, że tego nie kompilowałem a pora jest późna, więc mogą być drobne błędy. Generalnie jednak wygląda to tak: #include <avr/io.h> #include <avr/interrupt.h> volatile char a;//tak deklarujemy zmienne, które są używane i w kodzie //obsługi przerwania i w "standardowym" kodzie int main(void) { TCNT0 = 0; //wyzeruj...
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...
Ok zrobiłem na początek prostą rzecz: wiązkę podczerwieni której przecięcie zapala diodę po pewnym opóźnieniu liczonym od chwili przecięcia wiązki, przyjąłem 3 s. Niestety moje obliczenia odnośnie opóźnienia nie zgadzają się z tym co jest w rzeczywistości tzn. dioda mająca zapalić się ok. 3 s po przecięciu wiązki zapala się po niecałej sekundzie. Proszę...
Dziwne pytanie do "pewnie" prostego problemu. Czytałeś co na ten temat pisze w nocie tego uC? Nie ma żadnych oscylacji bo tam sa zwykłe piny PB6 i PB7. Dopiero kiedy ustawisz uC na zewnętrzny rezonator to funcjonalnośc portów jest odłaczana. Tak samo kiedy ustawiony jest wewnętrzny oscylator a wybierzesz taktowanie Timera2 w trybie asynchronicznym dopiero...
może ja czegoś nie rozumiem ale ktoś podpowie dlaczego tak się dzieje bo to tu będzie problem kod nadajnika : https://obrazki.elektroda.pl/8965366800_... jeśli zmienie na 100 mil to : https://obrazki.elektroda.pl/1814768300_... Jeśli zmienię program odbiornika bez używania przerwania to timer0 pracuje poprawnie tak...
Witam Czy istnieje w modułach bluetooth coś w stylu flagi nawiązania połączenia tzn. master zapala flagę gdy sparuje się ze slavem, a gasi ją gdy połączenie zostanie przerwane? Program miałby działać tak: Po nawiązaniu połączenia między mikrokontrolerami (ATmega32A i ATmega8L) za pomocą nadajników bluetooth przesyłany jest ze slave'a do mastera klucz...
Witam Potrzebuję podpiąć się pod zegar sterujący PWM arduino aby uzyskać przerwania co 50 do 100ms czyli co np 50 ms nastąpiło by przerwanie i wywołanie odpowiedniej funkcji. Niestety nie potrafię tego kodu co znalazłem w internecie rozgryść czy ktoś mógłby mi wyciągnąć z poniższego kodu co jest niezbędne do zrealizowania tego i wytłumaczyć co z czym...
Cześć, po analizie działania enkodera obrotowego (mechanicznego) i ilości problemów, jakie on dostarcza, postanowiłem skonstruować prosty układ elektroniczny, który "wygładzi" impulsy enkodera. Układ posiada dwie wersje. Obie są na przerzutnikach Schmitta. Pierwszy na pojedynczych układach TI SN74LVC1G17: https://obrazki.elektroda.pl/5101546100_...
O rety, tak to wygląda jak się pisze programy o 1 w nocy... Poprawione: Dodano po 2 Mały update. Wcześniej okazało się, że problem leżał w zasileniu serwa 4.5V, a podanie sygnału miało 5V. Ostatecznie doszedłem do zasilenia serwa z 5V z arduino, z którego również idzie sygnał. Znalazłem też w internecie kod, który wygląda na dobry (podłączyłem najpierw...
Prosiłbym o sprawdzenie kodu stopera na mikrokontroler Atmega32 współpracujący z kwarcem 16MHz. Prescaler ustawiony na 1024, timer w trybie CTC. Wynik wyświetla się z dokładnością do mikrosekund. Czasami jednak dostaję wynik w stylu 0,000000s, czy 0,002123s, który jest fizycznie niemożliwy do uzyskania. Z góry dzięki za pomoc. [syntax=c] #include <avr/io.h>...
atom1477, dokładnie o to mi chodziło. Trochę boli mnie to, że piszesz do mnie jak do kompletnego laika, nie startowałbym z tematem jak większość osób nie wiedząc nic na ten temat. Szkoda że tak to odebrałeś. Bo było raczej odwrotnie. Tzn. ja to pisałem jako laik. Bo się nie zajmuję Arduino. Ale wydało mi się że skoro PWM w Arduino jest taki wolny i...
Ciężko powiedzieć co tam jest nie tak. Spróbuj tego: [syntax=basic4gl]'---PROCESOR-----------... $regfile = "M32Def.dat" Wait 2 $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 '---WYŚWIETLACZ-------------------------... $lib "glcdKS108.lib"...
Chciałbym zrobić symulację naciśnięć klawiszy na klawiaturze PS/2 wykorzystując ATMega328 z rezonatorem kwarcowym 16MHz i interfejs PS/2 na USB. Posiłkowałem się tym opisem PS/2. https://www.avrfreaks.net/sites/default/... Z opisu wynika, że urządzenie PS/2 (wspomniana klawiatura) musi być w każdej chwili przygotowane do odbioru...
Witam! Mam problem z tym programem. Nie chce się skompilować. Wywala mi trzy błędy: 123 (linia: 0) - END IF expected , in File: 7 (linia: 0 ) - IF THAN expected inventco.eu - post edytowałem, program umieszczamy w znacznikach code $crystal = 8000000 $regfile = "m32def.dat" Led1 Alias Portc.1 Led2 Alias Portc.2 S1 Alias Pinb.0 S2 Alias Pinb.1...
Hej, Potrzebuję pomocy w opanowaniu pomiaru: napięcia (3x) i prądu (rezystor 0.1om) Ciągle wychodzą mi głupoty i nie wiem gdzie popełniam błąd. Chciałbym mierzyć napięcie 0-5.5V i prąd 0-2.5A Na początek schemat (ze schematu wykroiłem co zbędne) i kod (tu tylko to co potrzeba do pomiarów) aby było wiadomo o czym gadam ;) https://obrazki.elektroda.pl/4328627700_...
Witam. W nawiązaniu do zamkniętego mojego tematu [url=http://www.elektroda.pl/rtvforum/vi... chciałem na atmega32 zrobić takie menu lecz wykorzystując dekoder obrotu. Na przyciskach działa mi to extra ale nie mogę dojść do ładu z tym dekoderem. Z niego poprzez obrót wychodzą impulsy więc chyba musiałoby to być inaczej...
Witam wszystkich, Na wstępie od razu napiszę ,że czytałem już wiele na ten temat na avrfreaks i tutaj też ,jednak nie znalazłem odpowiedzi na swoje pytanie .Jeśli dubluję jakiś temat przepraszam ,ale uwierzcie że zadałem sobie troche trudu by poszukać w necie i samemu to rozwiązać. Piszę w C ,na darmowy kompilatorze winAVR ,mam zestawik z BTC .Testuje...
Zatem nie pisz, że będzie to sterownik MPPT, bo jest to wprowadzanie w błąd. Zresztą takie podejście jest błędne, ponieważ nasłonecznienie i co za tym idzie parametry panelu ulegają zmianom. Odnośnie maksymalnej częstotliwości PWM w Atmega328, to nie masz racji. Wprawdzie nie można tej częstotliwości tak dowolnie modyfikować, jak w ARM, ale jest pewne...
Niestety to nie jest wina prescalerów i taktowania, próbowałem już w każdej kombinacji . Żadnej różnicy nie zauważyłem, a napięcie przy wyjściu pwm się nie zmienia. Z tego co wiem ,to może być to wina złej kompilacji, dlatego przy wyjściu oc1a(Pin D5) od pwma muszę odwoływać się do poszczególnych rejestrów coś na wzór tego: [syntax=vbnet]Config Pinb.3...
http://obrazki.elektroda.pl/4938044000_1... Witam. Przedstawiam Wam, drodzy koledzy koleżanki moje najnowsze dzieło - zestaw do ćwiczeń na sterowniku przemysłowym Siemens Simatic S7-1200. Jest to zestaw najprostszy, składający się tylko ze sterownika, bez panelu operatorskiego i modułów dodatkowych, mimo to pozwalający na przeprowadzenie...
Witajcie Tak jak w temacie. Walczę z komunikacją z komputerem przez RS-232. Port COM sprawny, jak zewrę TX i RX dostaję na wejście to co wysyłam. Bezsilny zacząłem ładować przykładowe, niby działające kody w C z UARTem ale nic z tego... Atmega nie odpowiada. Czasem coś wyrzuci ale to niezgodne z tym co powinno. Dodam że wysyłając komendy by np zapalił...
Mnie według wzorów dla 8-bitowego (Fc/Prescaler/510) częstotliwość wynosi ok. 980 Hz, a dla 10-bitowego (Fc/Prescaler/2046) ok. 1955Hz.
Wiedze na temat przerwań czerpałem z poradnika : http://std2.phys.uni.lodz.pl/mikroproces... Jest to dośc autorytatywne źródło, więc skąd masz te wątpliwości??? kolega raz pisze ze load timer0 250 jest nie poprawny a potem pisze że poprawny wiec od czego jest zależne jaki czas jest po jednym przepełnieniu czy to...
Witam Niestety mam 2 problemy: 1. Rezonator 4Mhz, AtMega32. Chodzi o obsługe przerwania Timera1. Chcialbym aby przerwanie bylo generowane co 1s. Niestety dla ustawień: TCCR1A=0x00; TCCR1B=0x04; // Prescaler 256 TCNT1H=0xC2; // Wartosc poczatkowa TCNT1L=0xF6; nie działa poprawnie, odlicza zbyt szybko. 2. CodeVision . Chciałbym wyświetlić tekst + liczbę...
jeżeli chodzi o fuse'y to zajrzyj [url=http://fusecalc.engbedded.com]tutaj... Wybierasz rodzaj procesora i później odpowiednio jakie opcje Ciebie interesują. PAMIĘTAJ, sprawdź wszystko 3 razy, bo jak sobie usuniesz możliwość programowania proca przez SPI, lub reset (akurat przy Twoim procku to nie grozi) to uC idzie na półeczkę póki HVProga sobie nie...
Witam. mam problem ...... Więc moje pytanie brzmi czy jest możliwość programowej zmiany prescale podczas działania programu ? A jeśli da się to w czym może być problem ? Z góry dziękuje za pomoc Sprobuj RESET prescaler -> Set Bit1 w SFIOR Nie mam w tej chwili czasu na dokladniejszy opis, wiec przeanalizuj ta opcje w DS. albo tu: str. 143 http://books.google.ca/books?id=TE54lJ7X...
Witam :) Mam problemy z programem analizatora widma z obsługą RC5. Na lcd wyświetla głupoty albo resetuje się Atmega32.Czy w programie wszystko OK jest? Oczywiście sam program analizatora widma akustycznego działa poprawnie. $regfile = "m32def.dat" $crystal = 16000000 Config Pinb.2 = Input Config Int2 = Falling Enable Interrupts 'obsługi RC5...
Program napisany jest w Bascom. Delay nie ma w ogóle. Program napisany chaotycznie, ale działał ok dopóki nie dopisałem obsługi DCF77. Gdy przyjdzie odpowiednia godzina, dioda IR ma wysłać kod do odbiornika. Wtedy właśnie procesor zwalnia. Sekundy wtedy "idą" co 3 no i dźwięk ma zwolnione tempo. [syntax=vbnet] $regfile = "m32def.dat" $crystal = 8000000...
atmega prescaler timer atmega32 timer atmega32 przerwania timer
excel ocena gembird instrukcja piekarnik elektryczny termostat
Magnetowid Philips VR530: lata produkcji i specyfikacja CHEVROLET MATIZ – kontrolki hamulca ręcznego i ładowania akumulatora świecą jednocześnie