To co sugerowal Tajwoj - źle ustawiłeś preskaler, powinno być: TCCR0 = 0b00000101;
To zależy. Z opisu autora (nie analizowałem kodu) wynika, że timer jest zatrzymany, stąd kolejność nie ma znaczenia. Przy okazji mała poprawka, bo zamiast TCNT0 podałem TCCR0. Zerując TCCR0 zatrzymamy timer ponieważ w tym mikrokontrolerze są tam tylko bity preskalera.
Wyrzuć te delay'e. Zmienną licznik jak radzili koledzy zmień na volatile. Zmień sei(); na SREG |= (1<<7); Jeśli będzie działać, to zapytam jakiej wersji avr studio używasz? [syntax=cpp] #include <avr/io.h> #include <avr/interrupt.h> volatile uint8_t Count = 0; ISR(TIMER0_OVF_vect) { Count++; TCNT0 = 0; } int main(void) { DDRB = 0xFF;...
Dałem pętlę while(1) w main i dioda nadal nie miga. Gdze ją dodałeś? U mnie działa. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define LED_PIN (1<<PD7) #define LED_TOG PORTD ^=LED_PIN volatile int licz; int main(void) { DDRD |= LED_PIN; TCCR0 |= (1<<CS02); TIMSK |= (1<<TOIE0);...
A masz oscyloskop zeby steirdzic ze rzeczywiscie sie nic nie dzieje? Ja wrzucilem taki program do megi16 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT SIGNAL(SIG_OVERFLOW0) { PORTD=0xFF; } int main(void)...
No cóż teoretycznie chyba bedzie działać ale ładne to to nie jest :D 1. linie kodu TCNT0 = 0; // ustawienie zegara na zero - przyznaje to wlasnie robi natomiast TCNT0=1; // rozpoczecie pracy zegara - z tym sie nie zgadzam , bo licznik liczy od momentu wpisania 0x05 do rejestru TCCR0, i nie zatrzymuje sie tylko leci dopóki nie wpiszesz 0 do TCCR0 oprócz...
No to próbuję: [syntax=c] //* \section OA Original author //* Andy Gayne is the original author of this application note. //*/ //program z noty Atmela 136 //przerobiony na ATMega8, kwarc 11059200 i okrojony program #include <avr/io.h> #include <avr/interrupt.h> //! Pin mappings #define CHMAX 6 // maximum number of PWM channels #define PWMDEFAULT...
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...
http://obrazki.elektroda.pl/5336859500_1... Projekt został zrealizowany na potrzeby sterowania urządzeniami zasilanymi z sieci 230V , świetnie nadaje się jako sterownik do wytrawiarki lub innych tego typu urządzeń, w których konieczne jest utrzymywanie stałej temperatury. Układ oparty jest o mikrokontroler ATmega8 firmy Atmel , który...
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
można tak [syntax=c] TCCR0 &= ~((1<<CS02)|(1<<CS01)|(1<... [/syntax] spowoduje to zatrzymanie licznika
we wklejonym kodzie jest O nie zero, no chyba ze go przepisałeś ręcznie ;] po błędach wyraźnie widać że: TCCRO TCNTO nie jest zadeklarowane bo takich nie ma, jest : TCCR0 TCNT0
Witam. Potrzebuję pomocy z dostosowaniem kodu napisanego na atmegę8 na attiny13. Domyślam się że największym problemem będą tutaj timery, ale jestem w ich temacie puki co zielony, a potrzebuję koniecznie(i niestety pilnie) odbiornika IR który zmieści się i będzie działał na attiny13. Jak całość kodu działa rozumiem(jest świetnie opisana komentarzami)...
Nie mam pojęcia jak zrobić prescaler na tym rejestrze TCCR0 w Bascom. Ale czy tałem że im większy ten prescale tym mniejsza dokładność ,może lepiej zostać przy tym co jest ?
TCCR0 = 1<<CS01 | 1<<CS01; tu mam ustawiony rejestr zeby zliczal mi impulsy podzielone w preskalerze przez 64 , chyba , ze cos jeszcze trzeba ustawic
Szkoda. Wprawdzie potrzebowałem 24MHz i ucieszyłem się że ten na 20MHz chodzi i na 24MHz. Ale liczyłem na to że jak zdobędę ten na 24MHz to łyknie ze 30MHz. Szczególnie że okazało się że 24MHz mi nie wystarczy. Wczoraj przypadkiem odkryłem w datasheecie dodatkowe rozkazy (muls, mulsu, fmul, fmuls, fmulsu, movx, lpm, Rx, Z, lpm, Rx, Z+). Pomoc BASCOMa...
Witam drogich kolegow. Z uwagi na to, że jest to mój pierwszy post prosze z góry o wyrozumiałość. Mam następujący problem: Potrzebuje skonfigurować i wygenerować sygnał PWM na mikrokontrolerze Atmega8. Konieczne jest, żeby ustawić wszystkie rejestry ręcznie. Jest to mozna powiedzieć wstęp do mojej pracy INZ. Z tematem gryze się juz od dluzszego czasu...
Poniższy kod reguluje jasność podświetlenia LCD, więc dla potrzeb silnika musisz go przyspieszyć. timer0 w trybie PWM (do sterowania prędkością silnika): [syntax=c] //Konfiguracja TIMER0 w trybie PWM TCCR0 |= (1<<WGM01) | (1<<WGM00);// TRYB FAST PWM TCCR0 |= (1<<COM01) ; // Clear OC0 on compare match, set OC0 at BOTTOM,(non-inverting...
Witam :) Próbuje odpalić tryb CTC na Atmega8-przerwanie co 5ms i nie mogę sobie poradzić pomimo czytania PDF.Mało rzeczy robiłem na przerwaniach a jeśli już to na Atmega32 gdzie korzystałem z tego: Przerwanie co 5ms więc mam 1 sekundę. ATMEGA32: [syntax=c] TCCR0 |= (1<<WGM01); tryb CTC TCCR0 |= (1<<CS02)|(1<<CS00); preskaler = 1024...
Na początek zdecyduj jakie przerwanie ci jest potrzebne... Jeżeli od timera to szukaj opisu przerwania w rozdziale opisującą jego konfiugurację... Po pierwsze trzeba uaktywnić przerwania czyli sei() Przerwania timerów aktywuje się w rejestrze TIMSK... Odpowiednio uart w swoich rejestrach posiada bity odpowiadające za aktywację przerwania od TX, RX itd......
| = (1<<CS00). Jednak ja wciąż polecam użyć Timera1 i jego trybu CTC, wtedy na wyjściu OC1A. Nie potrzeba wtedy obsługiwać żadnego przerwania, ustawiasz wyjście OC1A w tryb TOGGLE ( rejestr TCCR1A ) i będzie ono zmieniało stan w rytm przepełnień timera. A timer będzi liczył (przez prescaler jaki ustawisz) do wartości jaka sobie ustawisz w OCR1A....
Witam! Napisałem program w C do mierzenia napięcia przez ADC w ATmega8, odczytuję z przetwornika wartość bitową od 0 do 1023. I dotąd jest wszystko ok, ale chcę sterować diodą na innym pinie(np PB1) w ten sposób, że gdy wartość odczytana będzie mniejsza od 500 to dioda ma nie świecić, a gdy przekroczy 500 ma świecić. Problem w tym, że gdy włączę układ...
Witam. Postanowiłem sobie zaprojektować i stworzyć dalmierz ultradźwiękowy. Odbiornik z równoległym rezystorem (kilka kOhm - filtracja zakłóceń) podłączyłem pod wyjścia komparatora. Nadajnik początkowo miałem podłączony przez MOSFET N do OC1A, ale przy braku efektów podłączyłem bezpośrednio do tego wyjścia. Objawy: wynik jaki cały czas uzyskuję to około...
Witam Mam prośbę o rozjaśnienie pewniej sprawy - mam do Atmegi8 podpięty odbiornik IR (SM3385P) cudo to zostało wymontowane z jakiegoś odbiornika Czujnik podpięty jest pod PB0 - do tego posiadam pilot TTS35AI - od zestawu SkyStar2 - do przetestowania wykorzystałem program ze strony http://hobby.abxyz.bplaced.net/index.php... Kod poniżej...
Witam, Czy nakierowałby mnie ktoś w jaki sposób wykorzystując PWM można zrealizować płynne sterowanie jasnością diody LED przy użyciu pilota nadającego w standardzie RC5? Do tej pory udało mi się zrealizować płynne sterowanie jasnością diody wykorzystując PWM i microswitche - oto kod: [syntax=c]#define F_CPU 8000000UL #include <avr/io.h> #include...
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....
PWM ustawiasz dosyć prosto dwoma rejestrami: TCCR0 =0x69; //Tu ustawiasz tryb, preskaler, sposob zliczania - szczegoly w dokumentacji Atmela OCR0 = wypelnienie; //Tu wpisujesz wypelenienie np. 128 to wypelnienie 50% (przy liczniku 8-bitowym) Ja to tak robie na ATmega16 i dziala bez problemu. Oczywiscie PIN OC0 musi być jako wyjście
Układ ma dzialac tak ze przyciskiem gasi/wlacza ledy. Ukad jest tak zbudowany ze wlacznik jest ok 20m od procka ale to nie problem, jesli uklad steruje jedna dioda lub jedym halogenkiem (przez IRFZ 44N) ale jesli zamiat tego jednego halogenka podepne halogeny w kuchni to uklad wlacz sie i wylacz sie ale jesli wlacze diody to po pewnym czasie ( kilka...
Witam. Mam problem. Zrobiłem generator jak na rysunku poniżej: https://obrazki.elektroda.pl/4869239100_... Potrzebuje mierzyć w czasie rzeczywistym częstotliwość jego pracy. Chcę zrobić na Atmedze8 którą posiadam. Podłączyłem do niej wyświetlacze siedmiosegmentowe i napisałem w C ich sterowanie. Moja pierwsza próba: Najpierw próbowałem...
Witam. Założenie jest takie, aby dioda podłączona do wyjścia timera0 zapalała się i gasła na 1s. Wpisuje więc do rejestru TCCR0 1 i mam preskaler 1 co daje pojedyńczy kwant czasu = 125ns (1/8000000 = 125n) czyli żeby odmierzyć 1s potrzebuje zliczyć to 8000000 razy :P, ale że TCNT0 ma pojemność 256 bitów zastosujemy dodatkowy licznik. czyli zliczymy...
Mam pewien problem. Pobrałem z internetu bibliotekę do LCD HD44780, działa ładnie ale pod m.in. ATMega32 a pod ATMega8 nie kompiluje się. Postanowiłem ją poprawić i jak łatwo się domyśleć nadal nie działa ;/ Kompiluje się teraz ale nie nic nie wyświetla. Powiedzcie gdzie popełniłem błąd? Kod po zmianie: #include "delay.h" volatile uint16_t...
Witam, Mam problem z poniższym programem. Timer0 odlicza 1ms i generuje przerwanie. W programie obsługi przerwania zmienna "znak" przyjmuje wartość znak=15, a chyba powinna przyjmować wartość znak=34. Dlaczego program nie uwzględnia mi przypisania znak=34, które znajduje się w pętli for? Pozdrawiam Listing programu: [syntax=c].................................
Witam. Chce uruchomić dekoder kodu Sirc(sony) na atmega8. Korzystam z tego rozwiązania [url=http://www.dragarti.cba.pl/artykuly... mam podłaczony TSOP1736 do wejścia INT0, zmianie pinów w kodzie na INT0 dla atmegi8 i odpisaniu F_CPU na 8mhz, za żadne skarby nie chce mi to się uruchomić, czy ktoś jest w stanie mi pomoc? Zaznaczam że jestem...
Ok trochę poprawiłem, na coś takiego: [syntax=c]#define F_CPU 8000000L #include <avr/io.h> #include <avr/interrupt.h> //***********************Zmienne Globalne**************************// char Dioda = 1; //************************Funkcja Główna***************************// int main(void) { //*******************Ustawienia Portów*************************//...
Jasne :) Timer i USART ustawiam jak ponizej: (baudy oczywiscie okreslone). UBRRH = 0;//(unsigned char)(baud>>8); UBRRL = (unsigned char)baud; UCSRB = 0b00011000; ////////////////////// TCCR0 = 0b00000001; TCNT0 = 5; TIMSK |= 0b00000001; SREG |= 0b10000000; w mainie nieskonczona petla, no i przerwania: INTERRUPT(SIG_OVERFLOW0) { global++; } INTERRUPT(SIG_UART_RECV)...
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, mam problem z ustawieniem częstotliwości przebiegu wygenerowanego przy pomocy timer0. Chcę uzyskać falę o częstotliwości 36kHz (dla diody nadawczej IR). Moja ATMega8 jest taktowana zewnętrznym kwarcem 12MHz, fuse bity ustawione są tak: DE - low, D9 - high. Obliczyłem, że przy F_CPU równym np. 8MHz używając preskalera równego 1 powinienem uzyskać...
Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi...
Witam, tak się zastanawiam - może mi ktoś podpowie dlaczego mam taki dziwny jak na razie dla mnie efekt, że ten samiuśki program , który napisałem dotąd na ATmega8 i zajmuje już prawie całą pamięć flash bo 95% czyli ok 7846 bajtów - po skompilowaniu dla procka ATmega168 - nagle zajmuje o nieco ponad 1kB !!!! więcej w pamięci flash ???? zmiany, które...
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>...
OK rozumiem. Nie wpadłem na to :) Teraz bawię się dalej i natknąłem się na kolejny problem. Poniższy program ma za zadanie wyświetlać po kolei liczby od 0 do 999 z wykorzystaniem przerwania od timera. Zmienna "licznik" przechowuje aktualna liczbę, która ma być inkrementowana po wywołaniu przerwania. Pętla "while" (może trochę zagmatwana) służy wyłącznie...
Witam, Chciałem zrobić opóźnienia w programie dla Atmega8. Wykorzystałem przerwania, ale przy symulacji programu w AVR Studio okazuje się że program po około 260 mikro sekundach resetuje się(wraca do funkcji main() ). Nie jet to spowodowane raczej watchdogiem bo jest on wyłączony. Czy ktoś potrafi mi powiedzieć dlaczego tak się dzieje? Aha, oczywiście...
Witam , używałem sobie do tej pory AtMegę bez żadnych problemów , aż dziś po wgraniu kodu avrdude: Device signature = 0x009307 avrdude:Expected signature for ATMEGA8 is 1E 93 07 Double chceck chip, or use -F to override this check Powyższy program pochodził z kursu http://www.robotyka.net.pl/mikrokontrole... (zmieniłem sobie tylko...
Dzięki wyświetlacz działa. Potrzebuję jeszcze porady w moim programie: [syntax=c]/* * Funkcja.c * * Created: 2015-06-04 21:05:37 * Author: Grzegorz2121 */ #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "HD44780.h" #include "HD44780.c" volatile uint8_t cnt=0; char a [4]; char...
ginar: twoja porada okazała się słuszna, chociaż dalej mam problem. I nadal nie wiem jak sobie z nim poradzić. Nie zmodyfikowałem co prawda funkcji, tylko zmodyfikowałem mój program (tak było znacznie szybciej). Co zrobiłem? Zmieniłem położenie następujących linijek, umieszczając je już po wysłaniu wszystkich komend do LCD: sei(); TIMSK = 1<<TOIE0;...
Cześć, właśnie próbuję opanować Timera0 w Atmedze8. Chciałem odmierzyć dokładnie jedną sekundę. Napiszę jak ja to widzę. Mikrokontroler pracuje na 12MHz. Użyłem preskalera 256, i mam 46875. A, że to duża liczba to podzieliłem przez 125, i dostaję 375. Czyli licznik musi 375 razy odliczyć 125 żebym dostał jedną sekundę. No to napisałem program: [syntax=cpp]#include...
Witam mam problem próbuję zrobić program na uC który będzie migał diodami naprzemiennie i w czasie zmiany ich piszczał z piezo. Zrobiłem już miganie i piszczenie. Wartości są takie na oko ponieważ w tym timerze nie da ustawić górnej granicy więc liczy sobie od zera do 0xFF. Proszę o pomoc, wiem problem jest banalny ale ja poradzić sobie z nim nie mogę...
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...
Witam mam problem z komunikacja atmega8 8Mhz -> PC. Złożyłem sobie układ według tego schematu, lecz zamiast max232 mam ICL232: http://obrazki.elektroda.pl/5614178400_1... Program do uC: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> //pomocnicze stałe #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((8000000...
Strasznie dziwne rzeczy się dzisiaj dzieją z tym wszystkim, udało mi się uruchomić USART ale nie działał mój stary kod z którego korzystałem od dawna. W zasadzie to była biblioteka napisana w oparciu o datasheet. Nie działała poprawnie funkcja inicjalizacji i zadziałała dopiero funkcja z jakiejś strony internetowej. Teraz mam tak, że jak dodam w funkcji...
tccr0 atmega tccr0 atmega32 tccr0 atmega128
wymiana sprzęgła laguna smart sterowanie ocieplenie dachu
ws442 opóźnione ws442 opóźnione
Dane techniczne głośnika STX W.STX.10.2.180.16.F.S.MC Dane techniczne głośnika LF - W.STX.10.2.180.16.F.S.MC w STX F-360n