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ć...
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...
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...
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...
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...
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
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);...
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...
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...
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...
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 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! 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...
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...
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...
#include<avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000 int main(void) { TCCR0 = 0x05; //(1 << CS02) | (1 << CS00); prescaler na 1024 TIFR |= (1 << TOV0); TIMSK |= (1 << TOIE0); // aktywne przerwanie overflow // timer_enable_int(_BV(TOIE1)&...
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...
...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...
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...
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...
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...
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...
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...
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...
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...
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...
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ść...
Witam ...... Wykorzystując sprzętowy PWM zmiana wypełnienia to nie problem ale czy można uzyskać na sprzętowym PWM zmienne częstotliwość od 50 do 1000 Hz płynną lub skokową. Tak,....... 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...
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...
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, 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)...
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, 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.
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 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...
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...
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"...
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. 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...
Na wewnętrznym to się nie ma co dziwić że źle chodzi a do kalibracji i tak potrzebny jest kwarc nawet wystarczy zegarkowy na Timer2 A to procedura kalibracji dla ATmega169 /***************************************... * * Function name : OSCCAL_calibration * * Returns : None * * Parameters : None * * Purpose...
#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.
[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...
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)....
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...
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...
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 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....
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 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, 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, 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...
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...
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...
Twój kod działa jak stop czyli zatrzymuje piosenkę a potem odtwarza ją od początku.Mi zależy żeby się zatrzymała i od tego samego momentu odtwarzała. [syntax=basic4gl]'---PROCESOR-----------... $regfile = "M32Def.dat" Wait 2 $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 '---WYŚWIETLACZ-------------------------...
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...
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...
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.
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...
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:...
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...
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...
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ł...
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ć...
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...
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ę...
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...
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...
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...
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...
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...
Korzystam z atmegi 32. Problem polega na tym że chcę zapisywać wartości do eeprom-u. Zapis robię co przerwanie timera2 od przepełnienia. I za każdym razem jak dochodzi do zapisywania do eeprom-u to mikrokontroler się resetuje. Czytałem coś o fuse bitach coś zmieniłem, ale nie pomogło. Trzeba oddzielnie eeprom i flash programować? Zestaw ewaluacyjny...
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...
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ę...
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ł...
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 :) 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
volvo silnika naprawa programatora whirpool excel wartość komórki
398216 usunięty 398216 usunięty
Philips Triathlon 1400 – brak podawania płynu, czyszczenie dyszy, wymiana pompki ULKA Hyundai Tucson 2005 Diesel – brak wskazań obrotomierza, czujnik CKP, licznik, CAN