Witam... Generalnie rzecz biorąc procedury opóźnienia czasowego nie nadają się do modulowania diody IR... Częstotliwość nie jest zbyt stabilna to raz... Dwa nie uzyskasz 36kHz musisz skorzystać z dobrodziejstw timera... Np. tak... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> int...
Jako ze nie przepadam za pisaniem na maile, to odpowiem tutaj... Musisz skonfigurowac odpowiedni timer i przy przerwaniu, jakie generuje int czas=0; int timer0=131; SIGNAL (SIG_OVERFLOW0) { czas++; if (czas==5000) BUUM(); //jezeli czas osiagnal 5000ms, to wywolaj funkcje BUUM(); TCNT0 = timer0; // zaladowanie do...
Witam. Chcę przedstawić szopkę Bożonarodzeniową. http://obrazki.elektroda.pl/9749389200_1... Całość wykonana własnoręcznie z pomocą kochanej żonki. Opiszę co i jak. Szopka ma ruchomy żłobek, dwie pochodnie i ognisko, na filmikach wszystko widać. Opiszę konstrukcję, do sterowania wszystkim użyłem Atmegi8. Trzy sprzętowe kanały PWM posłużyły...
Mam problem z uruchomieniem przerwania, kombinowałem wiele razy z różnymi ustawieniami jednak nie obserwuję zmian na porcie PD7, PWM na porcie PB3 działa (przebiegi obserwowane na oscyloskopie). Mikroprocesor to ATmega 16 taktowana z kwarcu 16 MHz. Może ktoś zerknie świeżym okiem i doradzi. #define F_CPU 16000000 #include #include #include #include...
Wg. mnie te 4 takty obejmują również czas wykonania przerywanego rozkazu. Przynajmniej tak pokazuje symulator w AVR Studio. Oczywiście jeżeli przerywamy rozkaz dwucyklowy (np SBI) to opóźnienie wyniesie 5 taktów. Jeszcze dla pełnej poprawności to piszesz o ATEMGA16 i ATMEGA644P więc Twój przykładowy program zawiera błędy: - dla ATMEGA rejestry Timera...
Witam wszystkich. Podczas dzisiejszej zabawy z Atmegą32a napotkałem 2 problemy. Jeden, to dziwnie działający UART: Przy takim kodzie: [syntax=c]#include <avr/io.h> #include <util/delay.h> #define PWM_A (1<<PD4) #define PWM_B (1<<PD5) int a = 0; #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((8000000UL / (USART_BAUDRATE *...
Dzięki za odpowiedzi. Zasilacz mam 7.5V 4A od jakiejś drukarki lub skanera. Napisałem prosty program do testów i wyniki mnie zadziwiły. Program najpierw wysyła na wyświetlacz napis "reset" który świeci się przez 1 sek, a potem program wykonywany jest dalej. Zamiast silnika zamocowałem żaróweczkę, aby pobór prądu był mniejszy. Jeżeli zamieszczę:[syntax=cpp]PORTD...
Więt tak: deklaracja zmiennej : [syntax=c] volatile uint16_t zmienna = 0; // - zmieniam tą wartość później na 300 [/syntax] włączam przerwania według konfiguracji zegara (8MHz - wewnętrzny) [syntax=c] //- uruchomienie eepromu extern EEMEM uint16_t eeprom_values[200]; EEMEM uint16_t eeprom_values[200] = {0,0}; //- konfiguracja zegara void Init_Timer0_OVF(){...
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Witam Mam problem z wykorzystaniem regulatora PWM wbudowanego w atmega. Zbudowany układ wykonawczy pracuje prawidłowo i wykonany jest następująco: http://obrazki.elektroda.pl/4062235800_1... Elementy: MOC3042 BTA136 2x rezystor 330R Układ wykonawczy działa i podanie wysokiego stanu zapala żarówkę, zadanie niskiego ją gasi. Jako obciążenie...
Kurdę no przerwanie jest wywoływane co 310us a to jest bardzoooo wiele cykli zegara na to by mogła się wykonać cała pętla while, cały czas nie rozumiem czemu na atmega 16 działa a na atmega128 nie chce działać :/ sprawdzałem bity ustawiające timer i przerwanie, są one takie same dla mega 16 i 128 więc nie wiem w czym jest problem :( Ten program działa...
Witam! Chcąc dodać zegar do mojego projektu musiałem wygenerować przerwanie, które dodawałoby 1 do zmiennej co 1s. napisałem programik jak poniżej, lecz niestety zliczając późni się o około 1/1,5s na minute... ktos wie gdzie robię błąd? gdzieś się pomyliłem? http://obrazki.elektroda.pl/9649052700_1... Preskaler ustawiony na 64, czyli...
Możesz nieco rozwinąć temat? Na początku próbowałem w programie zliczać stany na pinach procka, ale to była zupełna klapa, bo gubił kroki niemiłosiernie. Rozumiem, że proponujesz aby licznik sprzętowo zliczał zmiany na określonym pinie. Nie bardzo rozumiem "użyj jednego, np. 800 Hz - co 80 przerwań masz odliczony odcinek 100 ms" Ja muszę dokładnie ustalić,...
Walcze z licznikiem na Atmega 32 inicjacja wyglada tak : DDRB = 0xff; // DDRB jako wyjscie // t0 JAKO LICZNIK PORTB |= _BV(0); // BEZ PODCIAGNIECIA NIE CHCE LICZYC TCCR0 = _BV(CS01)|_BV(CS02); //_BV(CS00)| cs0 rosnace/~opadajace zbocze TCNT0 = 200; TIMSK |= _BV(TOIE0); // T0 wywoluje przerwanie Caly problem polega...
Dzięki, już działa. Wiedziałem, że mogę liczyć na forumowiczów :] ... Chociaż może nie do końca, bo teraz tylko timer 2 działa ;/ a 0 stoi. [syntax=c]void Timer0Init(void) { TCCR0 = 1<<CS01|1<<CS00; // Prescaler 64 TCNT0 = 128; // ~ 1.0 ms TIMSK |= 1<<TOIE0; // odblokowanie przerwania od licznika } void Timer2Init(void) { TCCR2 = 1;...
Witam, z niewyjaśnionych dla mnie przyczyn program napisany pot atmegę 8535 nie chce uruchamiać przerwań wywoływanych przez zegar. Posiadam taki następujący kod który powinien co przerwanie zmieniać stan portu B. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> void system_init() { TCCR0 = 0x00; // Wylaczenie Timera 0 TCNT0 = 0x00;...
Witam. Zaczynam dopiero zabawe z mikrokontrolerami i mam juz pierwszy problem. Otóż nie działa timer0. Wszystko sprawdzałem pare razy i nie wiem co zle zrobiłem. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define LED1 PB1 #define LED2 PB0 int main(void) { TCCR0 |= (1<<CS02) | (1<<CS00); // preskaler 1024 TIMSK...
Witam, Potrzebuję zrobić na TDA1543A i Atmega8 regulowane napięcie stałe w zakresie napięc podawanych przez TDA1543A. Znalazłem przykładowy program i zmontowałem układ, atmega wysyła dane lecz na wyjściach TDA mam jedynie napięcie stałe bliskie napięciu zasilania. Atmega8A taktowana kwarcem 12MHz. Próbowałem także 1MHz i 8MHz i nic to nie zmieniało....
Musiałbyś dodać zmienną, która będzie służyła do odmierzania czasu bez impulsów, tzw. "timeout". Jeśli przez okres ponad 10 s nie przyjdzie żaden impuls, to n=0. Wbrew pozorom, liczenie timeoutów najłatwiej zrealizować w przerwaniu :) Dodano po 1 fragmenty kodu: inicjalizacja przerwań (akurat dla Atmega32) [syntax=c] TCCR0 |= (1 << CS02); TIMSK...
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
Może najpierw parę słów wprowadzenia : Atmega128 - jej główne zadanie to sterowanie silnikiem DC, za pomocą tranzystora mosfet. Zasadniczo chodzi tylko o ON/OFF, dodany jest jedynie softstart PWM. Tranzystor ten sterowany jest z PB4 (OC0). Atmega zaś taktowana kwarcem 14.745.600 Hz. Dodatkowo , wykorzystane są 3 kanały ADC, w tym : ADC1 - do pomiaru...
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...
Czesc, No niestety nie hula... probowałem tego. Myśle ze atmega jest zryta jakos... Mimo tego, ze mam obsługe przerwań i tak, wiem ze to musi działać bo skopiowałem to z mojego poprzedniego projektu, to mi się restartuje atmega. Zwrać na płytce nie ma. [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
Chciałbym użyć wewnetrzny czasomierz do obliczenia sekundy. Przeglądałęm już forum i dowiedziałem się, że nie ma mowy o dokładym czasie ale chociaz w celach edukacyjnych chętnie bym poznał jak to się robi. Swoją drogą z czego ta niedokłądność wynika? Czy chodzi o to, że między taktami kontrollera występują różnicę czasowe wynikające z czynników zewnętrznych?...
Mam taki kod jak niżej. Chcę odczytać ekspander po SPI i wysłać jego wartość na PC przez uart. No i jak nic nie jest podłączone do Atmegi, atmega wysyła albo wartość 0xFF albo 0xf8 rejestru SPDR. Dlaczego? Czy czasem rejestr SPDR nie powinien być pusty (wartość 0x00) przy odbiorze danej z niepodłączonego pinu MISO, MOSI, SCK czy CS? Czy podłącze MCP...
Witam, Napisalem program na atmega8 do regulatora dwukierunkowego, którego schemat można znaleść tutaj. [url=http://www.modelhobby.republika.pl/... Licznik pracuje z zegarem 8Mhz i prescalerem 64. Czyli licznik powinien zapelnić sie minimalnie po 2ms. Sygnał z odbiornika trwa od 1ms do 2ms. Najpierw zliczam czas impuslu. W zależności...
Witam. Zrobiłem sobie prosty układzik który reaguje na sygnał z modelarskiego odbiornika RC i w zależności od długości impulsu zapala diodę lub ją gasi. Układ jest programowany przyciskiem podłączonym między PD2 a masę. Wywołuje przerwanie które zapisuje czas trwania stanu wysokiego. Bez zapisu tego czasu do EEPROM można go wielokrotnie programować...
Mam problem z wysyłaniem i odebraniem z rs485. Jest to ATMEGA 8 + max485. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <HD44780.c> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include <avr/wdt.h> #include <stdio.h> #include <string.h> #include <stdlib.h>...
Witam wszystkich, jestem początkujący w AVR i potrzebuje porady. Napisałem program do zliczania czasu (timer0) oraz generacji prostokąta na 40khz (timer1- fast pwn 16bitowy) Ogólnie to atmega pracuje na 1Mhz nie daje kwarcu.. Moje pytanie czy jest możliwość zrobienia generatora na 40kHz na innym timer0 lub timer 1 (8 bitowe) bo timer 1 jest 16-bitowy...
Zerknij na to [syntax=c]/* * Timer0_fast_pwm_adc_irq_1.c * * Program uruchamia licznik Timer0 w trybie modulacji szerokości impulsu, tzw. Fast PWM. * Wyjście modulatora PWM na końcówce (OC0) PORTB.3. * Zostaje uruchomiony przetwornika ADC, pomiar z kanału 0, pomiar 10-bitowy, wyz. ADC z przepełnienia Timer0. * Częstotliwość PWM zależy od prescalera,...
Na pierwszy strzał wymieniłbym ten potencjometr montażowy skatowany ogromnym wkrętakiem na dobry osiowy Wymieniony na Telpod 4,7k Czy Twój sterownik ma regulację prądu na silnik? Tak najpierw sprawdzam, czy sterownik prawidłowo steruje. No wydaje mi się, że dobrze steruje dlatego, że obraca się prawidłowo tylko gubi kroki. Nie mogę sprawdzić przebiegu...
Witam, szukam sposobu na wykonanie stabilnego generatora ( zmienna częstotliwość i wypełnienie ) w oparciu o procesor atmega 8535. Generator ma mieć dwa pokrętła ( potencjometry) służące do regulacji częstotliwości i długości impulsu. Wiem że atmega ma wbudowany generator PMW ale do moich potrzeb jego działanie jest błędne. Chcę aby po ustaleniu długości...
Witam Mam zbudowany układ na atmega 32 i do niego podpięte 4 czujniki DS18B20. Po włączeniu przez kilka godzin wszystkie pokazują właściwą temperaturę. Po tym czasie trzeci czujnik co jakiś czas pokazuje trzecie miejsce po przecinku, a czwarty czujnik również co jakiś czas pokazuje niewłaściwą temperaturę - w okolicach 130 stopni ( rzeczywista temperatura...
Bardzo proszę o pomoc w zaprogramowaniu ATMEGI 16 ,mam taki programator http://link_skasowano i taki program: Program: $regfile = "m16def.dat" $crystal = 8000000 On Oc1a Przerwanie Dim Fzad As Word , Focr As Word , Temp As Word Dim Wsk As Bit Config Adc = Single , Prescaler = Auto , Reference = Avcc Ddrb.1 = 1 ' DB.1 - wyjscie Ddrb.0 = 0 '...
Witam Zestawiłem następujący układ: Dwie Atmegi32, wyjścia portów A,B,C podpięte do diodek. Atmega jest połączona poprzez MAX232 z porem COM komputera. Kwarc 16MHz, zmierzone napięcia są idealne (5V), całość na płytce stykowej. Problem jest następujący: Podczas wysyłania kolejnych 16-bajtowych ramek danych przez komputer, po jakimś czasie (czasem po...
hej, probuje z thomasem wspolnie zrobic ten kontroler i moze on troszke niejasno sie wyrazil wiec postaram sie sprostowac. padło pytanie czy to ma byc programowy pwm Tak owszem dązymy dokladnie do tego aby na wyjsciach uzyskac sygnaly takie jak z PWM ale nie mozemy kozystac z PWM gdyz atmega ma tylko 3 PWM a nam potrzeba 8 wyjsc. Serwo sterowane jest...
Hej. Zbudowałem sobie wyświetlacz widmowy, tylko po wgraniu właściwego programu nie działa jak należy. Ale gdy wrzucę do procka coś prostego np. żeby mrugał naprzemiennie diodami to wszystko działa jak należy i zero mrugania wiec wnioskuję że prędkość obrotowa jest wystarczająca. Mój procesor to Atmega 8, wyświetlacz ma 8 diod 6 diod jest podłączonych...
Nie wiem czy też prawidłowe to jest że na module enc28j60 pali się cały czas czerwona dioda. Ja też nie wiem, bo nie wiem co znaczy "czerwona dioda". Jeśli to dioda sygnalizująca połączenie (link) - to poprawnie. Powinna być normalnie zgaszona i zapalać się po włożeniu kabla podpiętego do switch'a. Tyle, że bez schematu i bez konfiguracji z plików...
Nie jestem autorem kodu, który zamieszczam. Kod znalazłem gdzieś na forum, jeżeli jego autor nie życzy sobie abym go udostępniał niech da mi znać. rc5.h http://www.roboternetz.de/wissen/images/... TSOP1736 podpinam tak jak na obrazku (tylko pod PD3 - INT1), rezystor 10k
Jakiś czas do tyłu poszukiwałem trochę dziwnego zasilacza prądu stałego niestety nie znalazłem nic, dopiero po pewnym czasie odezwał się do mnie kolega z Forum elektrody do którego adres mi przepadł i przesłał mi program na atmegę 16 oraz instrukcję ustawienia układu . Początkowo nie miałem czasu wziąć sie za to , ale dziś zaprogramowałem atmegę i podłączyłem...
Mam pytanko czy ten program może robić za stoper i co wyświetli co się stanie na wyświetlaczu po wpisaniu tej linijki kodu D1_ON; // włącz pierwszą cyfrę wyświetlacza czy co takiego zapali się 192 a jak będzie D1_ON; to wyświetli się 192 249 tak czy tylko 249 i jak dorobić ", " :D #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h>...
Witam, Zrealizowałem przerywacz podwyższający napięcie z 5 V do 10 V, który jest sterowany atmegą a program napisałem w języku C, lecz mam problem ze stabilizacją napięcia wyjściowego przy zmianach obciążenia. Napięcie przy dużych zmianach obciążenia potrafi wzrosnąć na chwile nawet o 10 V. Sterowanie wypełnieniem PWM zrealizowałem w przerwaniach poprzez...
Witam Chciałbym zbudować pojazd napędzany dwoma silnikami krokowymi. Na chwilę obecną mam zbudowane podwozie z zamontowanymi silnikami. Na początek ma być sterowane podczerwienią. Dla jednego silnika działa, zwykły program zmieniający stany co 3ms dla sterowania pół-krokowego ( silnik unipolarny 6 przewodów). Problem jest z sterowaniem 2 silników, kroki...
Witam. Jestem w trakcie pisania oprogramowania do platformy mobilnej w obecnej chwili borykam się nad problemem utrzymania robota w linii prostej i utrzymania stałej prędkości niezależnie od obciążenia. Koła są napędzane niezależnie z dwóch silników a ilość obrotów jest mierzona za pomocą zamontowanych enkoderów [syntax=c]unsigned int volatile a,i,j;...
Witam, Przechodząc szybko do sedna tematu. Program pisany do 10 kanałowego sterownika oświetlenia DC. Timer0 służy do generowania programowego PWM. INT0 oraz TIMER1 CTC ma obsługiwać transmisje danych(tymczasowo kod usunąłem myśląc że to on jest problemem). Problemem jest to że przy kodzie jak poniżej mam na PD2 prostokąt o wypełnieniu ok 20% Co uniemożliwia...
Witam. Pomagam koledze w uruchomieniu analizatora widma akustycznego który do wyodrębnienia częstotliwości wykorzystuje wzmacniacze TL072. Sygnały ze wzmacniaczy po wyprostowaniu wchodzą do wejść ADC Atmegi i wszystko byłoby OK. tylko dziwnie wzbudzają się wejścia ADC. diody na wyświetlaczach w dziwny sposób się zapalają pomimo braku sygnału na wejściach...
załączam program, ale to nie jest problem napewno tego.: spark2_nowy.h ioinit.h enkoder.h spi.c [syntax=c] static inline void SPI_SET_SS() { PORTB|=(1<<PB2); } static inline void SPI_RESET_SS() { PORTB&=~(1<<PB2);// SS -> PB2 } void SPI_master_init() { SPI_SET_SS(); SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPI2X);// (SPE) SPI Enable, (MSTR)Master...
Mam sobie taką o to tablicę w epromie: P.S. Wiem, że pisze się uŻytkownik, ale chcę wiedzieć czy prowadzący przeglądają kody programów w raporcie:P
Preskaler jest w innym rejestrze - patrz TCCR0A i TCCR0B w dokumentacji. Porównaj także tabelki timera0 "Waveform Generation Mode Bit Description" w obu dokumentach. Można dwa kanały.
tccr0 atmega32 tccr0 atmega128 atmega8 tccr0
wymiana sprzęgła laguna czujnik pompa paliwowa czujnik pralka
ws442 opóźnione ws442 opóźnione
Vax odkurzacz piorący nie zbiera wody, dmucha gorącym powietrzem Pralka buczy po podłączeniu do zasilania - co robić?