Ja mam niedokończony sterownik... Tzn. miałem problem z komunikacją... Natomiast sterownik np w połączeniu z potencjometrami działał o ile dobrze pamiętam... Robiłem to również na ATmega16... Zegar 20MHz... Wykorzystałem timer0... W zależności od potrzeby odliczał 10ms (x2) a potem 4us... Za położenie serwa odpowiada zmienna unsigned char... 0-255......
Po kilku miesiącach pracy wreszcie jest! Teraz możecie pytać, która godzina! Pomysł projektu powstał, kiedy przez cztery dni autor podróżował po kraju. Kody QR są bardzo popularne z wielu powodów. Sprzedawcy uznają, że są one bardzo praktyczne i żądają umieszczania ich wszędzie, gdzie się da – pomimo tego, że Część sprzętowa Pomijając fakt, że...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
więc tak, schemat i fotka: wszystko działa, tylko tak jak pisałem z jakiegoś powodu procesor co jakiś czas wraca do początku maina. wszystkie zmienne zostają zresetowane, wpomniany MCUCSR nie rejestruje resetu. i dodam jeszcze kod [syntax=c] #define F_CPU 12000000L #include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include...
Na początku zaznaczę, że siedziałem nad tym ostatnie 3 dni. Jestem z tego powodu CHOLERNIE WKURZONY. Ostatnie doświadczenia z kompilatorem AVR-GCC i obsługą TIMER0 i TIMER2 doprowadziły mnie do konkluzji, iż w Nocie Atmegi128 lub w headerach jest błąd. Spójrzmy na tabele preskalera TIMER2. Oto prosty programik: #include <avr/io.h> #include <inttypes.h>...
Witam, w moim programie na atmegę 32 wykorzystałem timer0 oparty na zegarze procesora (8MHz) aby uruchamiać pewną funkcję ok. 100 razy na sekundę. Do programu postanowiłem dodać obsługę zewnętrznego kwarcu zegarkowego 32768Hz aby móc mierzyć w miarę dokładnie czas przy użyciu timera timer2. Po dopisaniu komend do obsługi kwarcu żaden timer nie działa....
Już wiem co powoduje wyświetlanie komunikatu błędu. Jak zaremowałem wszystkie linijki treści: "Getrc5(address , Command)" - jest ok. TIMER0 jest wolny, tylko Getrc5 domyślnie z niego korzysta. Wykorzystuję jedynie TIMER2 do multipleksowania. Kod jest bardzo długi bo jest tam sporo zbędnych bajerów. Trudno będzie Wam w nim się doszukać błędu. Zrobiłem...
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, chciałbym przerobić projekt z tego linku Mianowicie zostawić odliczanie czasu i wyświetlanie go a dodać do niego funkcję w której o wpisanej "na stałe" godzinie w funkcji załączy przekaźnik. Przekaźnik jest 4 modułowy więc potrzebuje 4 wolnych pinów. Kod, który zmodyfikowałem wygląda następująco ale nie załącza przekaźnika o zaprogramowanej godzinie,...
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 a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). A teraz chciałbym go wam zaprezentować. Na początek podręcznik języka C w formie pliku pdf -> 'C.pdf' i plik -> 'atmega16mmr.pdf' ,oraz obrazki -> 'Atmega8.gif'...
Witam! Chciałem wykorzystać timer0 do dokładnego odmierzania czasu, jednak coś powoduje zawieszenie całego programu. Dzieje się tak gdy próbuję odczytać wartość zmiennej w obsłudze przerwania lub w pętli głównej programu. Przerwania od timera są na pewno obsługiwane ponieważ działa zmiana stanu portu w obsłudze przerwania. Kod wygląda następująco: //ZMIENNE...
[syntax=basic4gl] $regfile = "M32def.dat" $crystal = 16000000 '************************* WYSWIETLANIE-porty ********************************** Lcd_port_ddr0 Alias Ddrb Lcd_port1 Alias Portb Lcd_port_ddr1 Alias Ddrb Lcd_rs Alias Portb.lcd_rs_number Lcd_reset Alias Portb.lcd_reset_number Lcd_cs Alias Portb.lcd_cs_number Lcd_sck Alias Portb.lcd_sck_number...
Witam Do "kompletu" brakuje mi obsługi zegara DCF77. Tzn. uruchamiałem już wcześniej na Atmega8 i nie było problemów. Jednak przy tym układzie wykorzystuję Timer, przerwania - może konfiguracja jest zła ?. Timer0 - liczniki i flagi Timer1 - DCF77 Timer2 + INT0 - odbiór RC5 INT1 - przerwanie od PCF8574 Całość działa, do momentu podpięcia sygnału zegara...
Otóz tak wygląda pewien program do zczytywania komend z czujnika podczerwieni do którego wysyłane są sygnały za pomocą pilota w standardzie RC5: Poprawiłem tytuł. LordBlick
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)...
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 Kod poniżej [syntax=c] //--------------------------------------...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
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...
jestem początkującym mam odbiornik podczerwieni sfh5110-36 i atmege8 wszystko podłączyłem jak na schemacie wgrałem też plik //--------------------------------------... // Plik "main.c" // // KURS AVR-GCC (abxyz.bplaced.net) // // Dekoder RC5 // // (schemat i opis działania w artykule) // testowanie na atmega8 (8MHz) //--------------------------------------...
Zmiana tematu jest spowodowana brakiem srodkow pienieznych na programator ;). A co do pradu to to bedzie wisialo w klasie wiec zrobie zasilacz. Bede kozystal z wewnetrznych Timerow i przerwan. A mi chodzi o ustawienie go raz punkt 8:00 zeby dobrze chodzil rowno z dzwonkiem :). Teraz pracuje nad procedurami odliczania czasu:). Jak dojde do czegos konkretnego...
Witam. Mam straszny problem z ATMEGA8 (zresztą podobne rzeczy działy się w ATMEGA16). Mianowicie, robię sobie prosty sterownik. Posiada on m.in. 4 przyciski, zrobione w ten sposób, że są one z jednej strony podłączone do wejść PIND.0 – PIND.3. Wejścia te podłączyłem również przez rezystory 4,7k do masy, oraz równolegle do tych rezystorów dałem...
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...
Witam ,napisałem sobie następujący program który ma pełnić funkcję prowizorycznego zegarka. W obsłudze przerwania timer inkrementuję sobie sekundy , ale gdy chce wyświetlić je w main ciągle wyświetla zero na led. Natomiast gdy ostatnią linijkę kodu zamieszczę w obsłudze przerwania działa ok . W związku z tym moje pytanie jak zrobić, żeby przekazywać...
Mam taki problem: chcę w programie wykorzystywać przerwania od przepełnienia dwóch timerów (0 i 1). W timer0 mam obsługę wyśw. LED i opóźnienie dla klawiatury a w timer1, z założenia wywoływanym co 100ms, coś jakby zegar z minutami i sekundami, choć nie jest to najważniejsze bo to program testowy. Problem w tym, że przerwanie od timer1 wcale się nie...
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
Witam, Jestem w trakcie budowy komputera pokładowego na procesorze AtMega8 oraz na wyświetlaczu LCD LS020. Program który tworzę ma zrealizować podstawowe funkcję komputera pokładowego, takie rzeczy jak menu i możliwość nastawienia parametrów odpuszczam a jedynie chcę prawidłowo obsłużyć wejścia i pomiary sygnałów. W trakcie pisania programu natknąłem...
Ponieważ z elektrody otrzymałem wiadomość o zamknięciu tematu, chciałem na zakończenie napisać dwa słowa. System pomiaru czasu rzeczywistego z użyciem timera2 na procesorze atmega324 działał u mnie bez zarzutu (większość czasu procesor spędzał w powerdown z włączonym rtc). Jako ciekawostkę dodam, że jest możliwe zrobienie dokładnego cyfrowego strojenia...
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
Timer2 jest potrzebny do zapisu na karcie SD Do czego konkretnie? w tym wątku piotrva wyjaśnił mi to tak: Aaaa, obsługa karty SD na AVR-DOS - jak wiadomo do poprawnej pracy ten system wymaga (niestety) skonfigurowanego programowego zegarka, który korzysta z trybu asynchronicznego timera2 - stąd zapewne biblioteka robi coś z tym zegarkiem lub sama nie...
Witam wszystkich forumowiczów. Dziś Wam przedstawię zegar który wykonałem głównie z ciekawości, jest to projekt który został już opublikowany na elektrodzie przez użytkownika "Mariusz Wiśniewski" poniżej link do tematu. Prawdę mówiąc zegar nie jest ukończony, właściwie płytkę zrobiłem w 2012 roku oraz w 2012 roku zamontowałem elementy do tego zegara,...
Witam serdecznie. Rozpocząłem jakiś czas temu zabawę z mikrokontrolerem ATmega. Posiadam model ATmega32-16PU. Buduję zegar czasu rzeczywistego. Chciałem do tego wykorzystać przerwania z wbudowanego timera (przepełnienie). Po wielu nieudanych próbach synchronizacji ATmegi z rzeczywistym czasem postanowiłem policzyć taktowanie swojego mikrokontrolera....
Oj, słownik i do tłumaczenia... Na Forum nie powinno się pisać rzeczy "oczywistych" i dostępnych w dokumentacji... A tam wszystko dokładnie jest opisane... A dlaczego tyle układów licznikowych? Bo można dowolnie wybrać zastosowanie: - potrzeba timer'a o ośmiu butach? jest timer0 i timer2 - rozdzielczość za mała? potrzeba dokładnego PWM? jest timer1...
t2 może pracować taktowany z CLKio (AS2 w ASSR skasowany) lub zegarem pochodzącym z pinu TOSC1 (który pracuje łącznie z TOSC2). Asynchroniczość polega na tym, że oscylator na TOSC może pracować na innej częstotliwości niż zegar procesora. Np procesor może iść na zegarze 8MHz (wew.RC), podczas gdy do pinów TOSC jest podłączony kwarc zegarkowy i z taką...
Witam, walczę z tym cały dzień i nie potrafię zrozumieć dlaczego program nie działa. Próbuje poprostu "uruchomić" przerwanie podczas przepełnienia timera0. Jak widać niżej jest bardzo prosty kod który powinien zapalać i gasić diodę. Preskaler ustawiony na 1024, ustawiona odpowiednia flaga w rejestrze TIMSK ...i nei działa. Jeśli w pętli while wrzuce...
Witajcie, mam problem nad którym siedzę juz kilka dni i zatrzymałem się nie wiedząc gdzie tkwi problem. Otóż chcę obsługiwać zegar RTC PCF8563 po I2C - czytać i zapisywać z niego dane (datę i czas). Projekt mam podzielony na kilka plików, całość pisana w Code Blocks 10.5 i kompilowana w AVR GCC. Mam zdefiniowaną strukturę do zapisu danych z zegara do...
Owszem, wykorzystać AVR z rodziny XMEGA - tam timer jest o wiele bardziej elastyczny, można go też taktować z innego timera, w efekcie uzystać dowolny preskaler zegara. W ATMega 64 timer też może mieć zewnętrzny zegar, możesz więc zewnętrznie połączyć wyjście jednego timera, który będzie preskalerem z wejściem zegarowym innego timera. CLK/2 w ten sposób...
No i przedobrzyłem Dokonałem optymalizacji kodu, oszczędzając kilkanaście procent pamięci FLASH, ale... sygnał z pilota NEC ( takie małe płaskie na baterie pastylkową ) przestał być odbierany - brak jakiejkolwiek reakcji na naciśnięcie przycisku w pilocie. Poniżej kod: Print Command w przerwaniu Infrared , żeby sprawdzić, czy coś odbiera - reakcji brak,...
Witam po przeszukaniu forum niestety nie rozumiem bądź nie umiem ustawić tych timerów. Zegar wewnętrzny 8MHz - Atmega128 w tym 1 potrzebuję około 1s TCCR1B |= (1<<WGM12) | (1<<CS12); TIMSK |= (1<<OCIE1B);//zezwolenie na przerwanie TCNT1 = 0; OCR1B = 32582; } ISR (TIMER1_COMPB_vect){ TCNT1 = 0; s_czas ++; } [/syntax] tutaj potrzeba...
Czy dla uzyskania przerwania co 0,5s, 1s, lub 2sek musze użyc w przypadku Atmega8 timera1 16bit, czy mogę to też jakoś zrobić na 8-bitowym timerze0? Zakładam częstotliwość zegara 1Mhz-4MHz. (pracuję nad mruganiem diody :) widocznym dla oka przy uzyciu przerwania od timera)
Witam Chodzi o prosty zegarek bez wodotrysków, zastosowac pcf z awaryjnym podtrzymaniem bateryjnym czy moze rtc w atmega przy uzyciu timera i kwarcu zegarkowego, ale boje sie ze jesli atmega sie przypadkowo zresetuje lub recznie to zegarek mi sie zresetuje, a zapisywanie co minute do eepromu to troche lipa....czy moze zmienne po resecie pozostane nie...
Witam. mam problem z odczytaniem prawidłowo sygnałów z obu osi akcelerometru mxd7202. z jedną nie mam problemu. pojawia się on dopiero, jak próbuje odczytać z obu. Wyjścia akcelerometru (sygnał PWM 100Hz - wypełnienie proporcjonalne do przyspieszenia (50% = 0g)) podłączyłem do INT0 i INT1 ATMEGI. ATMEGA 8535 taktowana zegarem 16MHz. Procedura badania...
Witajcie. Robię bliźniaczy do wykonanego przeze mnie na '51 projekt układu do pomiaru częstotliwości na AVR w C. Przyjęta przeze mnie logika to: ATMEGA8 - kwarc 10 MHz 1. podawanie sygnału badanego na wejście INT1 2. Timer1 jako licznik z preskalerem CK/1024 2. INT1 wyzwalane zboczem opadajacym 3. Gdy przyodzi przerwanie to nastepuje sprawdzenie czy...
Witam! dymbol1992 : Dzięki za życzenia. Mogę sprzedać Ci cały zegar lub tylko sam zaprogramowany uC. Pisz na PW aby nie zaśmiecać tematu. kiler88 : Jakbyś dokładnie obejrzał film prezentujący zegar to byś wiedział. W pierwszym rzędzie masz godziny, 2 rząd minuty, 3 rząd sekundy. korrus666 : Zgadzam się z tobą w 100%. Tylko jak bym mógł to bym tak zrobił,...
Witam, Chciałbym dowiedzieć się jak mogę łatwo przeliczyć preskaler i czas przerwać, tak abym mógł odmierzać czas na ATMEGA_32 16Mh Timerem1 oraz Timerem0. Z góry dzięki za pomoc. ----------------------------------------... (PS. Jestem początkującym użytkownikiem tego forum mimo, że od roku czasu jestem na nim zarejestrowany....
Witam, mam problem z ustawieniem przerwania od timera0 na atmega8, jestem początkujący jeśli chodzi o assembler... Problem leży w tym że, uP jest taktowany z wewnętrznego zegara 1MHz, i jeśli mam ustawiony prescaler na 8 czyli rejestr TCCR0 na 2 to powinienem otrzymać obsługę przerwania co 8us a na oscyloskopie otrzymałem igiełkę co 2ms;/ nie wiem co...
Witam:) mam pytanie do forumowiczów w sprawie pomiaru częstotliwości, sprawa przedstawia się następująco: chciałbym zrealizować pomiar częstotliwości przy użyciu timera0 (zliczanie impulsów) oraz ustalić czas bramkowania na 1s za pomocą timera1, problem w tym, ze uzyskany wynik strasznie skacze mi po częstotliwościach ;/ i nie wiem jak sobie z tym poradzic.....
Tylko jest tego rodzaju problem iż atmega taktowana zegarem 16mhz przy preskalerze 8 i 8 bitowym liczniku minimalny czas jest w porządku (0,5us) maksymalny natomiast 128us więc dalej musze inkrementowac w przepełnieniu zmienną . Dodatkowo z tego co widze input capture przypisany jest tylko do timera1 ja go używam do innych celów (2 kanałowy pwm). Poradziłem...
Witam, od jakiegoś czasu próbuję stworzyć sobie zegarek z termometrem + napięcie akumulatora do auta. Wszystkie programy osobno działają bez zarzutu. Problem zaczął się z chęcią wprowadzenia przełączalnych ekranów i wprowadzeniu przerwań. Doczytałem że przerwania skutecznie psują komunikację z DS'ami przez co temperatura się nie odczytuje. Ogólnie to...
Witam Planuje zrobić sobie miernik częstotliwości różnych kształtów napięcia: sinus, prostokąt, trójkąt. Zamianę sinusa i trójkąta na prostokąt mam już zaplanowaną. Zostało mi tylko zmierzenie częstotliwości sygnału prostokątnego o amplitudzie 5V i przedziale częstotliwości od około 10 kHz do 500 kHz. Chciałbym to zrobić na mikrokontrolerze ATmega8...
No rozumiem. A jeżeli bym chciał popróbować sobie przejście w stan u spania (bo nigdy tego nie robiłem) To jaki tryb u spania byłby dobry? W stanie spania potrzebował bym tylko by nie skasowały się dane (wartości zmiennych) oraz by pracował mi układ zegarka który wykorzystuje kwarc zegarowy o timer2. I sprawa wykrycia. braku zasilania Bardzo istotna...
Czy Kolega będzie może wiedział co jest nie tak od strony programistycznej ? Tzn. jeśli wyświetlam stałe wartości to jest ok, podobnie jak wyświetlam w pętli For... Next od 1 do 59. Dodałem jeszcze obsługę LCD, żeby widzieć, co się dzieje z czasem. Ale jak podepnę do tego PCF8563 i odczytuje czas z niego, a dopiero później wysyłam do SAA1064 to jest...
Dyskusja schodzi z tematu więc założyłem nowy temat do wygadania się: A teraz jeszcze na temat. Zegar wskazuje czas prawidłowo ale nie przerzuca daty przy zmianie doby czyli po minięciu godz. 23:59:59 Funkcja Secofday() przybiera o godz. 00:00:00 wartość 0. Chciałem więc to wykorzystać do zwiększenia zmiennej _day lecz nic z tego. Można do niej przypisać...
Timer2 nie ma 'edge detektora', więc na którym zboczu miałby zlicza impulsy? Timery działają, dlaczego miałyby nie działać? Widocznie jakoś producent zrealizował tę możliwość. Rzecz w tym że w tym trybie, wejście dostosowane jest do typowego oscylatora 32,768Hz, więc pozostałe parametry są niezbyt istotne, i mogą się dziać różne rzeczy. ;) Zrobiłem...
Witam Jestem w trakcie robienia zagara nixie ze strony Mikrokontrolerem jest Atmega8 a wkład zrobiony na Bascomie. Potrzebuję dodać opcję chwilowego wyłączenia lamp, w celu zabezpieczenia lamp przed zatruciem. Bardzo proszę o pomoc. To kod: '************* Konfiguracja uC ***************** '***************************************... $regfile = "m8def.dat"...
Kolega porosil mnie kiedys abym zrobil mu taki troche udziwnionyy timer. Jak juz zaczalem robic to dosc mocno go rozbudowalem. Nie jest to projekt efektowny, ale za to bardzo funkcjonalny. Budowa: ATMEGA8L, przkaznik bistabilny, bateria litowa 3V cr3022, +pare elementow dyskretnych. Zasialnie : beztransforamtorowe , 220VAC Interfjes: RS232 5V, musi...
Czy ktos mi powie czy jak w procedurze obslugi od przerwania timera umieszcze rozkaz sleep ktory uaktywnia trym ADC Noise Reduction to czy licznik zostanie wylaczony wtedy(timer)??Kiedy adc skonczy przetwarzac i nastapi zgloszenie przerwania od adc po to zeby wyjsc z trybu ADC Noise Reduction i wybudzic CPU z uspienia to czy obsluga tego przerwania...
mam podłączony kwarc zegarkowy do przypisanych do niego wejść. może to on? próbowałem z włączonym i wyłączonym timerem2 (w trybie asynchronicznym) i nic to nie dało. spróbuję w wolnym czasie wylutować ten kwarc i zobaczymy.
#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,...
Rozwiązanie moim zdaniem mało eleganckie ze względu na połączenie z komputerem. Trzeba było do ATmega podpiąć jakiś moduł ethernet - synchronizacja czasu byłaby wtedy niezależna od komputera, bezpośrednio z sieci... Wszystko, jak zawsze, rozbilo sie o pieniadze... Tez chcialem spytac czy bedzie reszta na forum?? Chodzi mi o wsad, schemat, wzor plytek,...
Witam Chciałbym, aby mikrokontroler: 1. Mierzył czas timerem 2. Wykorzystywał funkcje PWM timerem 3. Zliczał impulsy z zewnetrznego sygnału obrotów wiatraczka. Jak dotąd zrobiłem mierzenie czasu na Timerze0 oraz PWM na Timerze1. Problem z pkt.3 ponieważ chciałbym takze mierzyć impulsy zewnętrznego sygnału. Czy jest możliwośc, aby któryś z Timerów chodził...
Kod w C: void main(void) { wlacz_timer(); while(1) { if(przyszedl_impuls) { przyszedl_impuls = NIE; if(pierwszy_odczyt) { pierwszy_odczyt = NIE; } else { czas_miedzy_impulsami = stan_timera - stan_timera_poprzedni; //czas jest w cyklach zegara timera. Musisz przeliczyć go na sekundy...
Witam :) Mam problem, zegarek na Timer0 nie chodzi poprawnie natomiast na Timer 1 pracuje poprawnie. Pwm działa tylko na Timer1. Co zrobić aby zegarek pracował na Timer1 a Pwm na Timer0? Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Mierzymy Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down ,...
Pamiętaj, że kwarc zegarkowy nie podłącza się do XTAL1 i XTAL2. Tylko jako generator dla timera. Więcej w nocie.
waitms 20 Zostanie to skompilowane do pętli, której czas wykonania wyniesie ~20ms (taktowanie procesora deklarujesz poprzez zmienną proprocesora $crystal lub w opcjach projektu), do dokładnego pomiaru czasu można wykorzystać timer.
Mam problem aby zmienić taktowanie timera z wew. generatora atmegi na zew. kwarc zegarkowy (timer 1). Po podłączeniu kwarcu do wejść TOSC1 i TOSC2, ustawiłem flagę CS12 i zmieniłem liczbę zliczanych cykli. Po tych zmianach nic się nie dzieje (nie są zliczane sekundy itd.). Co jeszcze trzeba zrobić? Szukałem, ale niby nic więcej nie trzeba było ustawiać...
Jak w temacie. Podłączyłem do atmegi kwarce 32768Hz, Ustawiony jest tylko fus CKOPT (dołącza wewnętrzne kondensatory do kwarcu), CKSEL nie ruszane (powinny być 1001 ale takie ich ustawienie zawiesza procka, jest więc wartość domyślna 0001 czyli wewnętrzny RC 1MHz). Program działa ale nie moge wyregulować timera tak żeby odmierzał sekunde. Postanowiłem...
W ostatecznym rozrachunku wyjdzie na to samo... Niestety nie, Bity są kodowane w 3 cyklach Te 1: --_ 0: -__ (minus = stan wysoki, podkreślenie stan niski) czyli znaczenie ma czas trwania stanu wysokiego, zaś w preambule znaczenie ma czas trwania stanu niskiego co do zegara masz rację, ale na razie chodzi o oszacowanie czy da się zrobić software'owo...
(...)chodziło mi o to, że po co stosować w takiej sytuacji zewnętrzny układ RTC i budzić mikrokontroler przerwaniem jak może on sam się budzić od wewnętrznego przerwania timer'a i obsługiwać (...) Zgodzę się, ale gdy mikrokontroler ma dedykowany do tego celu timer (np timer 2 w atmega) taktowany kwarcem "zegarkowym", a attiny takiego timera nie ma.
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Oj coś koledzy krążycie wokół tematu a nie widzę nigdzie pełnej odpowiedzi. Niektóre są za to błędne albo upraszczające. F_CLK_ADC, to tak jak ktoś pisał, tylko częstotliwość taktowania ADC. A że jest to przetwornik typu SAR (z sukcesywną aproksymacją) to konwersja 1 próbki trwa n cykli zegara F_CLK_ADC. W przypadku tego ADC jest to: - 25 cykli dla...
Witam. Piszę prosty program do generacji zależności czasowych i mam problem. Gdy sprawdzam składnię tego co napisałem Bascom szaleje i zaznacza błedy których moim zdaniem nie ma. Czy ktoś może rzucić okiem na składnię zwłaszcza na instrukcje if, then czy wszystko jest prawdłowe? [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 4000000 Dim Co4ms As...
Spróbowałem zrobić coś w ten deseń. Oczywiście nie działa :). [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #define PORT_ON(port,pin) port |= (1<<pin) #define PORT_OFF(port,pin) port &= ~(1<<pin) #define ICP PINB0 int wyzwalanie = 0; //zmiana zbocza unsigned int TIM16_ReadTCNT1( void...
Witam. Stworzyłem na mikrokontrolerze ATMEGA8 zegar RTC. Do procesora został podpięty kwarc zegarkowy - timer2 pracuje w trybie asynchronicznym. Program powstał z wykorzystaniem instrukcji BASCOMOWEJ Config Clock = soft: Kod: "Jeśli w programie użyto instrukcji CONFIG CLOCK, kompilator automatycznie generuje specjalne zmienne nazwane: _sec , _min ,...
No i jeszcze trzeba ustawić Fusebity na kwarc zegarkowy. No akurat nie :D
W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący liczbę milisekund. W programie należy korzystać...
Witam, właśnie jestem na etapie łączenia kodu zegarka z termometrem wykorzystując przerwania. Tak mi się przynajmniej wydaje. Czy moglibyście rzucić okiem na poniższy kod i wskazać mi jak zmusić odświeżanie odczytu np. temp. co sekundę. Kodu zegarka tam jeszcze nie ma ale myślę że poradzę sobie na podstawie Waszych podpowiedzi dotyczących temp. Z góry...
Zrobiłem aktualizacje do 2.0.7.6. Obsługuje bez problemu USBasp, no i biblioteki do SD faktycznie lepsze - obsługują SDHC i można np. sprawdzić rodzaj karty SD. Tylko zapisywany ciąg na karcie trochę inaczej jest. Zamiast spacji jest teraz "kropka" i cały tekst bardziej "zbity" w całość. Co do rC5 to nic się nie zmieniło, właściwie to gorzej bo pracuje...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
Witam. Mam problem z przerwaniami. Chcę przerwaniem INT0 uruchomić timer0 a przerwaniem INT1 go zatrzymać. Czy jest taka możliwość? [syntax=basic4gl] $regfile = "m8adef.dat" $crystal = 8000000 Config Lcd = 16 * 2 Cursor Off Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Timer0...
Chciałbym przedstawić konstrukcję, która nie wnosi do świata elektroniki zupełnie nic nowego ponad standardowe połączenie kilku elementów, która powstała dla zabawy i żeby ładnie wyglądała, czyli zegarek binarny. Założeniem była budowa zegarka z widocznymi wszystkimi elementami i zasilanego z portu USB (ot tak). Elementy kluczowe 1. ATMega8A 2. DS1307...
Witam Po żmudnych testach uruchomienia DMA w taki sposób aby działało z drugiego licznika coś udało mi się osiągnąć chociaż wyniki mnie zaskakują. wklejam cały kod proszę o sugestie chodzi mi głównie o timery i DMA reszta jest tylko żeby testować program. Nie sugerujcie się opisami z boku bo często są to niezmienione pozostałości poprzedniego kodu który...
Ok, mam już chyba pomysł. Powiedzmy, że wezmę ten kod: int timer = 600; int U18 = 7; int State = 0; int lastState = 0; void setup() { for (int Pin = 2; Pin <=6; Pin++) { pinMode(Pin, OUTPUT);} pinMode(U18, INPUT); } void loop() { State = digitalRead(U18); if (State != lastState){...
Cześć, działam sobie nad zadaniem: program Timer1 działa w trybie porównania( CTC). Licznik T/C1 taktowany jest wewnętrznym sygnałem zegarowym. Wpisz odpowiednią wartość do rejestru OCR1A. Licznik zlicza od 0 do odpowiedniej wartości i po jej osiągnięciu generuje przerwanie. Proszę ustawić preskaler. Dioda podłączona do PA.7 mruga w takt licznika co...
Faktycznie, teraz wiem że w tym trybie praca PWM nie jest powtarzalna. Jest jak najbardziej powtarzalna i zgodna z dokumentacją. Ogólnie ATMegi stare mają tak zrealizowany PWM, że występuje szpilka o czasie trwania jednego taktu zegara taktującego timer. Jeśli przeszkadza, to należy zmienić tryb pracy timera. Natomiast w ramach trybu efekt ten jest...
Jakiś fizyczny sposób załączenia przerwania timera przerwaniem od INT0 . Szukam i nie mogę znaleźć żadnych przykładów ani bardziej szczegółowego opisu jak to ugryźć , we wcześniejszych odpowiedziach nikt nie napisał dlaczego nie można używać delay w przerwaniu a w prostej wersji programu nie wpływało to na działanie. Teraz mam bardziej rozwinięta wersje...
Cześć. Zrobiłem prosty zegarek na LCD i atmega8 , kwarc wewnętrzny 8Mhz No i problem ,kod jest dość prymitywny : Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Config Lcd = 16 * 2 Dim Sekunda As Byte Dim Minuta As Byte Dim Godzina As Byte Do Waitms 1000 Incr Sekunda If Sekunda = 59 Then...
Witam. Napisałem sobie prosty kod: /** * Timer - test */ #include <avr/io.h> #include <avr/interrupt.h> #define T0_INIT 0xFF //Wartość początkowa timera volatile uint32_t timer; //Odliczanie czasu przez timer /** * Przerwanie przepełnienia timera */ SIGNAL ( SIG_OVERFLOW0 ) { TCNT0 = T0_INIT; if ( timer > 0 ) timer--;...
Witam serdecznie Próbuję uporać się z tym okropieństwem. Dopiero zaczynam, ale cóż mam zrobić, kiedy nie działa podstawowa sprawa. Napisałem taki program $regfile = "m128def.dat" $crystal = 4000000 Config Pinc.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As Byte Enable Interrupts Enable Timer0 Load Timer0 = 250...
Witam. Do tej pory udało mi sie przesatwic w fusach na wewnetrzny oscylator 8Mhz. Napisałem nawet zegarek na timer1 ale jest niedokłady(przyspiesza ok 1 s na minute). Chce usatwic na zewnetrzny kwarc 8Mhz. Poczytałem na datasheet ze moga to byc takie opcje jak na rysunku: Jezeli ktos juz pzrestawil fuse bity w sposob ktory ja chce zastosowac to prosze...
przecież pisałam że wszystko było wcześniej w porządku, wszystko uruchomione, prosty błąd się wkradał gdzieś bez przerwy, w końcu ruszyło( oczywiście wcześniej ale zapomniałam umieścić tu rozwiązania): unsigned int rtc_sec=0; //zmienne globalne void rtc_init(void) { ASSR=1<<AS2; // RTC clock from 32kHz crystal TCNT2=0; OCR2=((32768/1024)-1);;....
Witam, Chciałbym zrobić sobie zegarek i nie wiem jaka metoda będzie dokładniejsza: 1. wykorzystując RTC atmegi z kwarcem 32,768kHz (Atmega na 8MHz z RC) 2. zewn kwarc 16 MHz i zrobić to na timerze np 2 Czy też inne wyjścia jak DS1307, PCF8583. Chodzi mi o dokładność Do układy będą też dopinane m.in. DS18B20 (2x) Pozdrawiam.
mala szansa, zeby ci pomogly, skoro z datasheeta potrafisz przeczytac tylko pierwsza strone (tam gdzie pojawia sie skrot RTC), a nie opis szczegolowy (czyli wielki rozdzial o Timer 2). oczywiscie calkowitym milczeniem pomijam kwestie ilosci wynikow jakie da google i wyszukiwarka tego forum dla zapytania RTC Atmega8... gratulacje! teraz da o jeden wynik...
Ja doskonale rozumiem, że Atmegi moga pracować na kwarcu zegarkowym, tylko chciałbym wiedzieć na jakiego rzędu dokładność mogę liczyć na zwykłym kwarcu w porównaniu do kwarcu zegarkowego. -- pozdrawiam, demeus Taka sama!.... Wszystkie resonatory kwarcowe maja dokladnosc rzedu +/- 20ppm. Rezonatory zegarkowe jest o wiele wygodniej stosowac do odmierzania...
To przerwanie nie działa mi jak należy :| Albo ja znowu robię coś źle. Jak zrobię bez przerwań np tak: overflowT3 = 0; // czas = 0 (zero przekręceń licznika) //ETIMSK |= _BV(TOIE3); // zezwolenie na przerwania dla T3 TIMSK |= _BV(TOIE0); // zezwolenie na przerwania dla T0 TCNT0 = 240; // ustawienie wartości (max-16),...
fbase = fclk/prescaler/(ocr+1). Przy OCR1A=1 (najszybsze przerwania) próbki mogą być podsyłane do PWM z częstotliwością 16MHz/8/2=1MHz. Ja bym powiedział że próbki do PWMa powinno się wysyłać nie częściej niż jeden raz na jeden cykl PWMa. Nawet jak próbki do PWMa będą podsyłane częściej, to i tak odświeżanie wartości rejestru OCRxx będzie następowało...
misiakufal Tak dokładnie. Głównie będzie to zależało od jakości kwarcu i kondensatorów. Jak ja robiłem zegarek na TIMER1 to mi spieszył lub spóźniał, zależy jak ustawiłem : Timer1 = 3036 Np. dla wartości 3500 spieszył a dla wartości 3501 spóźniał się. Najlepiej jest użyć PCF8583 ;) I odpowiednio zmodernizować Twój program, który by współpracował z...
Dokładność czasu 1minuta to standard przy takich zegarach...na if-ach robiłem najpierw sprawdzanie co godzinę czy Tgodz_pcf==Tgodz_kanal_t1_t2_t3_t4 jeżeli tak to sprawdzałem analogicznie minuty i jeżeli znowu tak to sprawdzałem który czas nastawy "pasuje" do czasu bierzącego. To trochę zakręcone i sam się w tym gubiłem dlatego szukam innego bardziej...
Czy ktoś potrafi zrobić z tego kodu użyteczny program ? ? ? .... zaczynam się zastanawiać czy nie zlecić jego napisania ale nie mam pojęcia ile taka usługa może kosztować. Dla zorientowania się o co mi chodzi wklejam cały kod którego część funkcjonuje. [syntax=c] #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include...