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...
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...
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.
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...
wielkie dzieki za taki odzew :) niestety caly czas nie rozumiem jednej rzeczy zamieszczam plik zrodlowy w ktorym pomiedzy dyrektywa .ORG 0x00 a instr rjmp Reset znajduje sie instr nop. bez niej po wgraniu programu na kosc nic sie nie dzieje 8O .INCLUDE "m32def.inc" .CSEG .ORG 0x00 nop ; O CO CHODZI?!?!?! rjmp Reset .ORG OVF0addr rjmp Timer Timer: cpi...
Witam W dokumentacji napisane jest, że preskaler dla TIMER0 i TIMER1 jest wspólny. Ustala się go w TCCR0 (TIMER0) albo TCCR1B (TIMER1). Nie mogę znaleźć informacji z którego rejestru ustawianie ma wyższy priorytet (jest ważniejszy) czy TCCR0 czy też TCCR1A. Sprawdziłem, że kolejność ustawiania rejestrów nie ma znaczenia. Może ktoś wie jak to działa??
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 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ść...
Zapewne na podstawie czasu w jakim timer 1 jest zwiększany, ale nijak nie zgadza mi się to z okresem dla 50Hz i 1kHz z przykładu który podał autor tematu. Proszę o jakieś wytłumaczenie lub wzory opisujące zależność częstotliwości od zawartości rejestru COMPARE1A . (ja chce regulować tylko częstotliwością silnika krokowego, a więc konieczność zmiany...
Faktycznie zapomniałem dodać kilku rzeczy. Pomyłka z rejestrem - wipsałem rejestr z 2313. Chciałem zobaczyć czy dobrze wpisuje wartości do rejestrów (TCNT1H i TCNT1L dla T1 i TCNT0 dla T0) - czy odmierzany czas zgadza się z czasem który zadałem. Napisałem prosty program który jeśli nadejdzie przerwanie od przepełnienia timera zmienia stan na wyjściu...
Witam Piszę program w Bascomie na Atmega32 do sterowania ogrzewaniem w warsztacie i mam problem. Jest zegar RTC, zewnętrzny Ram, Timer, Menu i to wszystko działa bez zarzutu - dokładnie tak jak bym chciał. Chciałem dołożyć czujnik temperatury i wykorzystać do tego celu wejście ADC. Problem pojawia się w momencie jak w podmenu "Start_webasto" dodaję...
Program skrócony, żeby mierzył tylko prędkość i dystans http://obrazki.elektroda.pl/3747501700_1... W załączniku schemat w PDF i SCH (eagle)
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>...
Potrzebuje emulator DS18B20 na atmega8 - mam na PC program do odczytu temp i chciałem w tym programie dodac inne parametry ( np wilgotnosc ) ale nie zmieniajac programu - w scrachpadzie bede wisyłał inne dane nie temperature. ( w bajtach temperatury lub bajtach uzytkownika wolnych 2szt) Aktualnie używam "lampomitari" , ale napisalem przeróbke programu...
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...
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...
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,...
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...
[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 -...
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...
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.....
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...
...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ć...
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...
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.
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
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...
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);...
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...
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...
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...
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...
[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...
...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...
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, 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 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...
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...
Włączasz ADATE. Ustawiasz SFIOR=0; Co daje taki efekt: "Switching to Free Running mode (ADTS[2:0]=0) will not cause a trigger event, even if the ADC Interrupt Flag is set." Wyrzuć ADATE, nic nie ustawiaj w SFIOR. Ustaw prescaler do ADC- to jest zupełnie inny prescaler niż do Timerów. W zależności od zegara- ADPS1, ADPS2, ADPS3. W ogóle nic nie ustawiaj...
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...
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...
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...
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...
Działający kod, dioda zmienia stan co sekundę. #include<avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000 char licznik = 0; //zmienna dla licznika programowego int main(void) { TCCR0 = 0x05; //(1 << CS02) | (1 << CS00); prescaler na 1024 TIFR |= (1 << TOV0); TIMSK |= (1 << TOIE0); // aktywne przerwanie overflow...
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...
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ć....
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.
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, zacząłem sobie dziś robić mały projekcik, są to 2 płytki z procesorami atmega32, jedna ma za zadanie naśladować silnik(prowizorycznie) jest generatorem impulsów prostokąt. z wykorzystaniem timera 16bit CTC, jeden kanał to częstotliwość a drugi to szerokość impulsu. Do przeliczania obrotów na minutę wykorzystałem wzorek: x=(F_CPU/(T1_PRESCALER*((float)obroty)/6...
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"...
atmega prescaler timer atmega32 timer atmega32 przerwania timer
uszczelniać rurka verbatim firmware zasilacz skokowy
saunier duval niedźwiedź saunier duval niedźwiedź
Oznaczenia na tranzystorze IRFP: jak je odczytać? Montaż wiązki pompowtryskiwaczy 2.0 TDI BMR