Witam Od jakiegoś czasu próbuję uruchomić pierwszy projekt na mikrokontrolerze ATmega328P. Ma to być zegarek oparty o moduł RTC DS1307. W Internecie znalazłem dość dobrze opisany kod autorstwa Bruce E. Hall, na stronie internetowej W8BH (nie mogę wklejać linków, ale bardzo łatwo go znaleźć w Google), który postanowiłem wykorzystać. Przypisałem wszystkie...
Witam. Szukalem na forum podobnego wątku, ale nie znalazłem. Chciałem więc zapytac, jak odmierzać czas w dół. Użytkownik wprowadza np. liczę minut i na lcd wyświetlamy odliczanie do zera. Mozna coś takiego zrobić na timerach? edit: Może zbyt ogólnie sie wyraziłem. Wiem, że coś takiego można zrealizować za pomocą odpowiedniej struktury, a potem za pomocą...
Witam Mam oto taki problem jak ww w temacie. Napisałem program na odmierzanie czasu przerwanie co 1 sekundę i ogólnie po wgraniu programu wszystko działa czas leci i jest wszystko OK. Lecz po chwili a dokładnie 9-14 sekundach wyłącza mi się lcd. Nie wiem w czym jest problem:( A o to program $regfile = "m8def.dat" $crystal = 8000000 '$sim Config...
Mam do zrobienia program o następującym działaniu: przerwaniem zewnętrznym (INT0) uruchamiam całą machinę - czas zaczyna być mierzony, kolejnym przerwaniem zewnętrznym (INT1) robię STOP, i w tym momencie wynik powinien być wyświetlony na wyświetlaczu LCD. Niestety jak chce odpalić program już na płytce to się nic kompletnie nie dzieje. Zapewne coś jest...
Witam, Chciałbym się poradzić, jaki jest najlepszy przepis na uzyskanie przerwania od timera co 100ms. Chodzi o zbudowanie dokładnego urządzenia pomiarowego. Rozważalem tryb CTC, dołączanie zewnętrznego kwarcu ale chciałbym poznać jakiś sprawdzony sposób.
Witam. Zapewne temat odmierzania czasu był poruszany wielokrotnie na forum. Problem mój jest nastepujący: Napisałem swego czasu dwie funkcje realizujące opóźnienie : delayms - opóźnienie time milisekund delaus - opóźnienie time mikrosekund void delayms (int time) //funkcja dajaca opoznienie w ms { int i,k; for (k=0;k<time;k++)...
Witam, Za nic w świecie nie mogę dojść do tego, więc skorzystam z wiedzy Szanowny Kolegów z forum. Otóż mam pewną zabaweczkę zrealizowaną na mega32 (projekt jak ukończę to udostępnię na forum) Ustawione mam przerwanie od Timera0, który ładnie odmierza mi 1 sekundę przy zastosowanym kwarcu 8Mhz. Wszystko pięknie ładnie, ale chciałbym zastosować "kwarc...
A wiec tak: Gdzie się podziało zainicjowanie licznika podczas wejścia w procedurę przerwania, drogi kolego ? oto ona: // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x40; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;...
Witam, jestem początkujący, chciałem zaimplementować w swoim układzie (dodatkowo) funkcję pokazującą czas, czyli generalnie zegarek. Układ będzie oparty na procesorze ATmega*. Poczytałem trochę na forum o kwarcach i chciałem uporządkować wiadomości. Jeżeli chcę by nie było dysproporcji między aktualnym czasem a wskazaniem układu, to rozumiem, że potrzebuję...
Dzięki Marcin za odpowiedź. W sobotę kupiłem TowerPro SG-5010, bo tamte, faktycznie za delikatne były, jak mi sprzedawca w sklepie pokazał (prawdziwe mini) ;-) Uruchomiłem serwo bez problemów. Sterowanie sygnałem z regulatora PI zbudowanego na Atmega16. Jedynie problem mam tego typu, że przy korzystaniu z drugiego timera Timer1 (Timer0 wykorzystuje...
Witam, Mój problem jest dziwny. Mam przetestowany układ na płytce stykowej, program też działał bez zarzutów. Wykonałem PCB złożyłem, ATmega normalnie została zaprogramowana i reaguje. Zczytałem pomiary temperatury przez UART- też działa. Obecnie sterowanie jest dwustanowe, docelowo będzie PWM i PID. A teraz moje 2 problemy: 1) Sterowanie MOSFETEM....
Witam Właśnie przeczytałem rozdział manuala M8 dot. pracy T/C0 i rejestrów odpowiadających za timer, tylko nie wiem jak zrobić, aby timer odmierzał wartość 1 sekundy .... ;| Otóż policzyłem, że wg tego co mam to: F-CPU = 8MHz Prescaler = 64 MAX_VAL = 256 (bo 8-mio bitowy) więc: TOV ck = (F_CPU/Prescaler)/MAX_VAL = 488 czyli wynika że w ciągu jednej...
Witam, piszę całkiem spory (w moim mniemaniu) program do sterowania silnikiem i paroma jeszcze innymi rzeczami (aktualnie na ATmega32L i 8MHz wewnętrznego oscylatora) i mam niezrozumiały dla mnie problem z obsługą przerwania od timera, kod obsługi przerwania wygląda mniej więcej tak: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16,...
Spokojnie panowie...... po co tyle opinie sprowadzających się do "nie"... Atmega8 ma możliwość podpięcia rezonatora zegarkowego 32kHz do pinów i emulacje RTC z wystarczająca dokładnością do zastosowań amatorskich w oparciu o pracę asynchroniczna jednego z liczników. Wtedy reszta uP pracuje w konfiguracji taktowania wewnętrznym zegarem RC. Dodanie zewnętrznych...
Witam Kolegów Mam taki problem z układem RTC DS1307 oraz Atmega16. Układ rtc odmierza czas, atmega16 co 1 sek odczytuje poprzez TWI i wyświetla na wyświetlaczu. Problem polega na tym, że po kilku minutach 5-8 min układ się zawiesza, tzn. nie odczytuje czasu, nic nie robi. Nie pomaga nawet resetowanie. Doszedłem, że program zawiesza się w momencie próby...
Witam. Piszę program na ATMEGA32. Przedstawiam część kodu i opis. Dane z pomiarów analogowych gromadzę w tablicy pomiar . Tablica pomiar_temp wykorzystywana jest do dalszych operacji. Czy poniższy ATOMIC_BLOCK może wprowadzić duże opóźnienia w dla wykonywania procedury obsługi przerwania. [syntax=c] volatile uint32_t pomiar[8]; volatile uint8_t kanal...
Witam Od dawna przymierzałem się do zbudowania zegara nixie na sześciu lampach. W internecie jest sporo takich projektów, jednak większość z nich nie odpowiadała moim założeniom. Postanowiłem więc zaprojektować i wykonać zegar od podstaw wykorzystując podzespoły, które miałem pod ręką. Założenia Projektując układ kierowałem się poniższymi założeniami:...
Witam, pracuje nad pierwszym urządzeniem opartym na AVR Atmega32. Chodzi mi o zmienną Sekundy, którą chciałbym inkrementować w warunku While ... Wend zaraz na początku głównej pętli Do ... Loop. Zmienna Czas zwiększana jest przez Timer0 po przepełnieniu (odmierzanie stałych odcinków czasu) i kiedy osiągnie 30 i więcej ma się wykonać to co po warunku...
Witam. Testując dzisiaj kod zauważyłem, że moja ATmega328P źle wykonuje funkcje _delay_ms ( wewnętrzny kwarc 8Mhz, eclipse 8Mhz, a źle odmierzał 1 sekundę - ale nie o to chodzi ) i zacząłem szukać w internecie przyczyny. Jedyne co znalazłem to zmiana fusebitów. Dokładnie wyłączyłem CKSEL0, a włączyłem CKSEL1 ( robię w MkAvrCalculator ). Niestety zablokowała...
Witam! Ucze sie dopiero programowac w uC i wlasnie chcialem napisac sobie program ktory odmierza mi wartosc 1 sekundy.Ale mam problem bo wedlug obliczen wszytko jest OK, natomaist dioda mruga jak szalona. A wiec z tad moje domysly, ze moze cos jest nie tak z Fus'ami? Tzn korzystam z programu A.Dybowskiego, w ktorym mozna ustawic sobie te bity ale ja...
Posiadam przykład kodu na atmega16 (coś mnie ten procek prześladuje :/) i chcę to przerobić na atmega128. Pod atmega16 wygląda on następująco: .cseg RESET:cli clrr30 outEECR, r30 outMCUCR, r30 ; watchdog na ok.1s ldir31, (1<<WDE) | (1<<WDP2) | (1<<WDP1) outWDTCR, r31 ; inicjalizacja stosu ldir31, high(RAMEND) outSPH, r31 ldir31, low(RAMEND)...
Witam Napisalem prosty programik do sterowania jednym serwem lecz serwo przesuwa sie powolutku w jedna strone tylko. Serwo to mini serwo z Conrada ES-05 .include "m16def.inc" .org 0x00 rjmp reset .org OC2addr rjmp KrotkiCykl .org OC1Aaddr rjmp DlugiCykl DlugiCykl: ldi r16,0xFF out PORTA,r16 ldi r16,0x00 out TCNT2,r16 in r16,TCCR2 sbr r16,7...
Witam, próbuję zrobić prosty miernik częstotliwości przy użyciu ATMega8 i jego wbudowanego komparatora analogowego. O ile pomiar dla sygnałów prostokątnych działa bez zarzutu, to już dla sinusoidy pokazuje bzdury - np. dla sinusa 110 Hz, wychodzi 3,5 kHz i nie mogę rozgryźć dlaczego tak jest. W swoim testowym obwodzie, sinusoidę generuję za pomocą PWM,...
witam Temat być może jest trochę mylący. Ale do rzeczy. Bawię się zestawem zl3avr i jestem na etapie obsługi transmisji w kodzie RC5 w asemblerze. W książce "Mikrokontrolery AVR ATmega w praktyce" podane są gotowe programy do nadawania i odbierania wiadomości w RC5. O ile procedurka nadawania nie budzi żadnych moich wątpliwości, o ile w przypadku odbierania...
zasada prosta zbocze na t1 odlicza czas zwłoki zmienia 2 porty na przeciwne i tak w koło $crystal = 8000000 $regfile = "m8def.dat" Config Timer0 = Timer , Prescale = 64 ' 8 us Config Timer1 = Counter , Edge = Rising Dim Wartosc As Word Dim Licznik As Integer Config Portb.1 = Output Reset Portb.1 Config Portb.2 = Output Set Portb.2 On Timer0...
Witam. Jestem początkującym jeśli chodzi o programowanie w BASCOMie i mam następujący problem: Chcę wykonać do mojego urządzenia prosty licznik czasu, tzn. stanem początkowym jest cyfra 5 i oznacza ona czas pozostały do końca pracy w minutach. W zasadzie cały program działa w porządku, timer odlicza od 5 dół, ale chciałbym dodać jedną rzecz. Korzystam...
Więc musisz zdecydować o czasie zliczania. najlepiej wykorzystać wejście licznika. Teraz pytanie czy konieczne w twoim przypadku jest zliczanie wszystkich enkoderów jednocześnie czy wystarczy je zliczać pojedynczo i poklei wystarczająco szybko o ile do możliwe. Innym licznikiem odmierzasz czas zliczania. Tu istotne jest aby po uruchomieniu licznika...
Witam. Zbudowałem obrotomierz na Atmega8. Sprzętowo działa poprawnie by sie wydawało. Lecz odczyt obrotów samochodu jest z przedziału 6 - 30 obr/min. Wydaje mi się ze mam bład w samych obliczeniach wyniku. Mój obrotomierz działa następująco przy założeniu 1 impuls na obrot (w rzeczywistosci 1,5 imp/obr): impuls z cewki podawany jest na przerwanie int1....
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Napisałem coś takiego (oczywiście to część z większego projektu) '$sim $regfile = "m8def.dat" 'informuje kompilator o...
Witam! ATmega32 16MHz jako slave odbiera dwa bajty po SPI 1MHz ( 15cm taśmy 10 żyłowej )od mastera LPC2148 . Jeżeli jest włączone tylko SPI, a inne przerwania są wyłączone jest wszystko dobrze. Jeżeli włączę przerwanie od timera2 generowane co 100us to zdarza się że atmega gubi jeden bajt i krzaczy się cała transmisja, ale po jakimś czasie jak zgubi...
Witam. Przygotowałam taki schemat sterowania diodą RGB i zastanawiam się czy ma szansę zadziałać. Urządzenie zasilanie bateryjnie (lipoly 3.7V) Mikrokontroler: ATmega168PA zasilany 1.8V dioda LED RGB (sztuk: 1). Driver LED: najbardziej to bym chciała TCA6507 (również zasilany z 1.8V), ale nie widze go w żadnym polskim sklepie. N-MOSFET: irll024n (próg...
Tutaj ci już nie pomogę gdyż nie korzystam z rtc. Ja do odmierzania tylko czasu jako godzin stosuje ctc timer'a 2 i to w Atmega8 ale 88 też to powinna posiadać. Odsyłam do not katalogowych. Pozdrawiam :) Ps: tranzystory to tak jak piszesz. Masz maksymalnie 4 diody każda o maksymalnym prądzie 20mA więc w sumie daje to maks 80 mA więc 100mA wystarczy....
Witam wszystkich, jest to mój pierwszy projekt opisywany na tym forum. Przedstawiam projekt mojego autorstwa, zegar z termometrem wyświetlający aktualną datę, godzinę oraz temperaturę z 3 czujników. Założeniem projektu było zbudowanie zegara wyświetlającego godzinę oraz temperaturę wewnątrz mieszkania, na zewnątrz, oraz wody w instalacji CO. Projekt...
Pomijając jak działa ten program to źle się do tego zabrałeś. Jak chcesz w sposób wiarygorny liczyć impulst >240kHz, jeśli ATMega jest taktowana np. 8MHz? To daje ci zaledwie 33 takty pomiędzy przerwaniami. Należy mierzony przebieg podać na wejście XCK timera, tak, żeby timer sprzętowo liczył impulsy, a przerwanie z drugiego timera wykorzystać do odmierzania...
Jeżeli w programie występuje konieczność odmierzania czasu ATmega musi mieć swój "zegarek" na którym będzie ten czas odmierzał. Tym zegarkiem jest Timer, natomiast funkcje typu delay() wstrzymują tylko wykonywanie programu.
Projekt wykonany poprawnie- atrakcyjny wizualnie. Co prawda konstrukcja tego typu układów nie powala mnie na kolana i to nie ze względu, że jestem malkontentem i nic mi się nie podoba ale raczej z już jestem znudzony oglądaniem wszelkiej maści zegarków które w swej koncepcji nic nowego nie wnoszą. Po oglądnięciu schematu zastanawiają mnie jednak dwie...
main.c: [syntax=c] /* * main.c * * Zegar z wyświetlaczem led(dwa podwójne + dwukropek) na Atmega8. * Pobiera czas z PCF8583P + kwarc 32.768Hz. * */ #define F_CPU 4000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #include <util/delay.h> #include "i2c.h" #include "rtc.h" #include "7SEG.h" volatile uint8_t...
Wykonuje prace inżynierską "stanowisko szkoleniowe silnika krokowego", chciałbym wykonywać kilka rzeczy czasowo niezależnie bez używania delay, takich jak taktowanie częstotliwości na sterownik krokowca, odmierzanie czasu, cykliczne sprawdzanie stanów wejść. Z bibliotek znam Timer1.h jedynie. Mógłbym to zrobić w "C" chyba, bo kiedyś dużo bawiłem się...
Atmegi mają wewnętrzny układ taktujący 1MHz, do tego trzeba zmienić ustawienia programowania w stk200 (przełączyć fuse na zewnętrzny kwarc). co do zworki - jakaś bzdura, 1wire niewymaga żadnych zworek, 1-wire to kwestja programu, timer służy do odmierzania czasu i niemusi byc połączony z portem. co do i2c- niewiem...
Wie ktos cos moze na temat prawidłowego odmierzania czasu w ATMega8L, jak skonfigurować jeden z wewnętrznych Timerów i jaki oscylator zastosować by uzyskać przerwanie dokładnie co 1s ? Gdzie w programie zadeklarować wybrany rezonator?
Oscylator może mieć +-3% dla 1MHz i 25stopni zgodnie z notą katalogową (ATMEGA16, str. 27), więc do dokładnego odmierzania czasu zaleca się używanie zewnętrznego kwarca. Podobno może uzyskać +-1%.
Mam problem. Procek atmega 32 + dolaczony zewnetrzny kwarc 16MHz (kondensatory po 22 pF). Znalazlem w necie funkcje do odmierzania dokladnego czasu (np. 1s). Plik w zalaczniku zawiera te funkcje. Jednak u mnie zarowno funkcja nop_1s() jak i czekaj() trwaja ok. 12s, a nop_100ms trwa ok. 3s. Wydaje mi sie, ze wina moze lezec po stronie programowej. W...
Funkcja wait w Bascom nie jest dokładna i na dobra sprawę nie należy jej stosować do odmierznia czasu. Aby dokładnie odmierzać czs należy posłuzyć się timerami. Jakie dałeś kondensatory do kwarca?
IMHO takie działania jak kalibracja RC z 32kHz, albo synchronizacja z USARTem nie są warte zachodu. Łatwiej wziąć jakiś kryształek USART friendly i za jego pomocą również odmierzać czas, a jeśli użycie 32kHz jest krytyczne to troszkę większy kontroler z osobnymi pinami XTAL i TOSC. No chyba, że sytuacja nie pozwala.
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
Witam po przerwie. Zrobiłem rozbudowany zegar z budzikiem na ATMEGA32, ale jest problem z prawidłowym odliczaniem czasu przez układ zegara. PCF spóźnia się o 2 sek na minute, dużo według mnie. Zegar poprawnie działa, gdy odłączę zasilanie ATMEGI(PCF podtrzymywany przez baterię) lub gdy odłączę przewód łączący wyjście INT w PCF. Przez co mikrokontroler...
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
shadow0013 : Zacytuję pierwszą stronę dokumentacji: – Real Time Counter with Separate Oscillator RTC służy do odliczania czasu niezależnie od stanu procesora (np uśpienie) czy oscylatora taktującego procesor (wahania częstotliwości), funkcja zegara/kalendarza jest tylko często stosowanym dodatkiem. Tutaj tą funkcję trzeba zrealizować programowo....
Witam, Pracuję na ATmega16 taktowanym wewnętrznym oscylatorem RC. Chciałem wykorzystać Timer1 do odmierzania czasu np. 1s lub 1min (po zastosowaniu preskalera 1024), a Timer2 razem z przerwaniem zewnętrznym do wykonania regulacji fazowej. Kiedy chce tylko odmierzać czas, albo tylko regulować fazowo to wszystko działa poprawnie. Jednak kiedy chcę połączyć...
Widziałem Twój sterownik. Pomogłoby mi gdybyś mógł dosyć szczegółowo opisać dwa przerwania timera1 i 2 oraz dlaczego takie a nie inne ustawienai liczników? Czy dobrze widzę,ze do odmierzania impulsów używasz licznika/timera2 czyli 8bit? fajnie byłoby gdybym miał jakieś odniesienie do dalszej pracy, bo musze obsłużyc w sumie 6 serw z dokladnoscia ok...
Jeżeli chodzi o kwarc, to zgadza się wymontowany z jakiegoś zegarka, powodem były jego niewielkie rozmiary. A dokładność odmierzanego czasu z tym nie jest tak bajecznie. Właśnie testuje i wychodzi że tak około 1,5s za szybko na dobę, może dlatego że nie dodałem kondensatorów zewnętrznych, tylko włączyłem wewnętrzne, ale z powodu braku miejsca, to raczej...
Program po skompilowaniu ukazuje takie błędy: avr-gcc -g -Wall -O2 -mmcu=atmega8 -c -o sterowanie.o sterowanie.c sterowanie.c:2:24: util/delay.h: No such file or directory sterowanie.c: In function `main': sterowanie.c:18: warning: implicit declaration of function `_delay_ms' sterowanie.c:21:2: warning:...
Witam, od paru dni męczę się z ds18b20, spakowałem go na płytkę testową, wszystko podłączone dobrze, nie na pasożytniczym tylko na normalnym zasilaniu. Odpowiada na reset a później już na nic. Krótki kurs obsługi wziąłem z karty i z Bardzo przyjemny pdf. Program jest napisany na podstawie tego pdf. Jako, że podłączony jest tylko jeden ds to nie muszę...
Witam :) Dzięki za kolejne koncepcje. Ale nie uśmiecha mi się dokładać kolejne kostki liczników, tym bardziej jak ma ich być "bateria". Zależy mi raczej na małych gabarytach układu. Liczniki też wolał bym zarezerwować dla innych celów - choć by odliczania czasu całej sekwencji i PWM,u Jak pisałem powyżej komenda Waitms wystarcza tu w zupełności gdyż...
Dzieki wilkie, dziala wszystko jak trzeba :) A wiecie moze o jakims "skrypcie" dla zegara? Albo jak sie do tego zabrac? Chcialbym wyswietlic godzine np. wiem, ze normlanie to godzine program by pobral z systemu, ale przeciez Atmega nie "wie" ktora godzina :D dlatego zastanawiam sie, jak do tego mialbym sie zabrac :) Dzieki wielkie :) Musiał byś powiedzieć...
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...
Witam Mam problem z programem odmierzającym czas. Mikrokontroler współpracuje z czujnikami ultradźwiękowymi. Ogólne założenie programu jest takie że generuje paczkę 8 impulsów prostokątnych o częstotliwości 40KHz następnie 4ms na wyciszenie układu. Generowanie paczki wykonywane jest za pomocą Timera2 w trybie CTC. Następnie za pomocą Timera1 powinien...
A ja znowu nie wyobrazam sobie tego abym muial angazowac program głowny który przewaznie słuzy w innym celu jak tylko pomiar temp. W przerwaniu to wychodzi elegancko a ilosc czujników jak moze byc obsłuzona jest dowolna. W programie głownym umieszczam tylko procedure odczytu uzyskanych wartosci z przerwan i ewentualne sprawdzenie CRC co zajmuje ułamiki...
Przytoczę tu słowa z książki Marcina Wiązania. W uC atmega8 jest możliwe taktowanie licznika timer2 w trybie asynchronicznym z zewnętrznym rezonatorem kwarcowym tylko wtedy, gdy sam mikrokontroler jest taktowany sygnałem wewnętrznym oscylatora RC. W takim przypadku precyzja odmierzania czasu przez timer2 zależy od oscylatora kwarcowego 32768 Hz, a nie...
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
Mam pytanko. Jaki jest minimalny czas odmierzany przez timer 8-bitowy? bo mi minimum na zegarze 8mhz wychodzi 0.016ms, nawet jak preskaler dam 1 i OCR0 =1. A 16 bitowym mogę mniejsze odmierzyć. według mojej wiedzy powinny minimalny czas mieć taki sam (1/czestotliwość zegara głównego) edit: No i jest problem atmega z zegarem 16mhz jest za wolna. Gdy...
wow tego nie wiedziałem... Dzięki Przetestowałem, zaczęło działać. Ale... Jeśli zrobię tak:[syntax=cpp]ISR(TIMER0_COMP_vect) { rob_cos=1; }[/syntax]a w main:[syntax=cpp]while(1){ if(rob_cos==1){ PORTD &= ~_BV(3); OCR1A=0; _delay_ms(1); PORTD |= _BV(6); OCR1B=50; _delay_ms(1); rob_cos=0; } }[/syntax]to i tak dalej się resetuje. A potrzebuję umieścić...
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 serdecznie! Najpierw może podzielę się kodem: [syntax=basic4gl] $crystal = 8000000 $regfile = "m644pdef.dat" Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Dim Plynnosc As Integer Dim Plynnosc_r As Single Dim Plynnosc_t As Single Dim Reszta_pwm1b As Integer Dim Ustaw_czasu_ms As Integer...
Użyj funkcji z delay.h do odmierzania czasu. Przynajmniej jedna niewiadoma zniknie. Inna sprawa, że twoje funkcje nie testują powrotu magistrali do 1 - używasz stałych opóźnień, które niekoniecznie są prawidłowe. I kolejna sprawa - zamiast czytać wtórne dokumentacje Atmela, nie lepiej zajrzeć do oryginalnych not Dallasa?
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Witam, zrobiłem projekt w którym w dwóch niewielkich domkach steruję ogrzewaniem. Program na PC napisany jest w C# a program Atmegi w winAVR w (języku C). Przy połączeniu przez port szeregowy z komputerem, uzyskałem możliwość sterowania ogrzewaniem niezależnie w każdym z pomieszczeń. Również logi z temperaturami zapisują mi się na dysku C. Chciałbym...
Witam ponownie! Otóż zmodyfikowałem program i teraz wygląda tak... [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 '$baud = 4800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portb.0 Config Sda = Portb.2 Config Scl = Portb.3 Config Portb.4 = Input Const Ds1307w...
Teraz spróbuję ustawić RTC na zewnętrznym kwarcu. Zanim zamknę temat może ktoś zechciałby podpowiedzieć na co tutaj zwrócić uwagę? (Myślę że to nie odbiega od tytułu tematu) A konkretnie - jaki kwarc? przy okazji jeszcze ten link: Czas - odmierzanie
Zastanawiałem się też nad zegarem RTC, mam scalaka PCF8583, którego można by zatrudnić. Tylko zastanawiam się w jakim trybie musiał by on pracować ? Timer ? Alarm ? Dajmy na to wybiorę PCF'a nie wiem za bardzo jak on miałby odmierzać mi zadane godziny - musiałbym za każdym razem gdy włączam sterownik ustawiać od nowa czas i dopiero względem niego odmierzać...
Witam Mam 7 układów DS18B20 i chciałem dokonywać ich odczytu w kolejności. W przerwaniu od Timer0 ustawiam co 4 sekundy flagę, która ma spowodować wywołanie programu odczytu. ................ Tylko, że wstawienie tego w Case nie ma chyba sensu, bo w momencie wyboru z Case, dane jeszcze nie są obliczone. Pierwsza uwaga to nie dajesz wymaganego czasu...
Można to zrealizować w pętli głównej programu. Deklarujesz zmienna "nr_programu". Dla każdego podprogramu wstawiasz instrukcje warunkową która w zależności od wartości zmiennej "nr_programu" realizuje odpowiednią sekwencje czyli dla nr_programu = 1 -> program 1 nr_programu = 2 -> program 2 nr_programu = 5 -> program 5 itd.. Zostawiasz 1 przycisk którym...
Witam! To mój pierwszy post, więc proszę o wyrozumiałość. Skonstruowałem licznik impulsów - częstościomierz, w oparciu o projekt AVT5025 (Mikroprocesorowy wykrywacz metali). Sonda wykrywacza umieszczona będzie przy bramie wjazdowej na parking i jeśli pojawi się nad nią samochód to na danym pinie mikrokontrolera pojawi się stan wysoki. Układ ma po prostu...
No to przejdźmy do programu:) Po pierwsze z twoich kalkulacji wynika to że co 1s dioda LED ma zmienić stan a nie się zapalać. Przy zmianie stanu z częstotliwością 1Hz gdy przerwanie zmienia stan pinu to częstotliwość sygnału jaka jest na nim generowana to 0,5Hz. Nie wiem gdzie ustawiłeś to, że AVR jest taktowany 8MHz. Wpisanie tego w ustawienia Atmel...
Witam Mam dziwny problem nigdy mi się tak nie zdarzyło z poleceniem Wait/ waitms w Bascomie. Chodzi o to, że mam nowy procek Atmega 8 ustawiony fabrycznie na 1 Mhz i powinien odmierzać dokładnie 1 s na takim ustawieniu fabrycznym a ja wpisuje w programie np. waitms 100 to dioda zapala się na 5 sekund... dziwne. Próbowałem na zestawie ZL2AVR , na innej...
Określ częstotliwość tych impulsów, lub ich szerokość. Jeśli trwają milisekundy, to najlepiej wykorzystać timer w trybie przechwytywania impulsów zewnętrznych - piny ICP i rejestr ICR. Jeśli są krótkie (setki ns lub us) to lepiej tymi impulscami taktować wejście licznikowe timera, a drugi timer wykorzystać do odmierzania odcinka czasu wzorcowego. Ze...
Witam, jako że po raz pierwszy próbuję zrobić coś z wykorzystaniem sygnału PWM i timerów, chciałbym zapytać się bardziej doświadczonych kolegów o to czy ten program ma szansę zadziałać. Z założenia ma to być sterowanie silnikiem krokowym poprzez : - podawanie sygnału PWM na wejścia ENABLE A i B układu l298 tak aby sterować prądem baz - Podawanie sygnału...
Witam, ostatnio zabrałęm się za projekt prostego zegara. Układ wyświetla godzinę na 4 cyfrach wyświetlacza LED wspólna anoda. Oto wyniki mojej pracy: schemat: Do mikrokontrolera Atmega8A podłączony jest kwarc 8MHz. A to program [syntax=c]/* * zegar.c *F_CPU 8000000UL zewnetrzny kwarc częstotliwość odświeżania 300hz * Created: 2014-02-16 01:11:51 * Author:...
Witam, Potrzebuję wykonać urządzenie, które na podstawie sygnałów z zewnątrz, będzie w stanie odmierzać ściśle określony czas (zmieniany programowo) i zmieniać stan wyjścia na pinie. Wiem, ze jest to banalne używając do tego np przerwania, lecz mnie interesuje aby to robić za pomocą PWMa, aby nie obciążać działania procesora, ponieważ są to dość szybkie...
Zmieniasz wartość x w przerwaniu i w pętli główniej (pętlą while) To nie ma znaczenia, x nie jest zmienną globalną i jest widziana niezależnie w przerwaniu i w pętli głównej. Timerem TIMER0 odmierzasz czas 1ms. W pętli głównej inkrementujesz zmienną x (16 lub 32 bitową). Jeśli jest ona 16 bitowa to inkrementacja jej wymaga wygenerowania mniejszego...
Witam, walczę już kilka dni i mam wrażenie, że brakuje mi jednego przecinka tylko nie wiem gdzie . Może ktoś widzi ten tragiczny błąd :( [syntax=vbnet] $regfile = "m88pdef.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 Cls Cursor Off Config Portd.0 = Output Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Disconnect...
Ustawiasz tryb Fast PWM mode 14, gdzie okres sygnału (TOP) wyznacza wartość rejestru ICR1. Włączasz przerwanie od porównania z rejestrem OCR1A, ale nie ustawiasz go więc jest on wyzerowany po resecie. W rezultacie dostajesz przerwanie na początku okresu timera, ale jeśli tak to chcesz wykorzystywać, to powinieneś dla porządku zastosować wektor TIMER1_OVF_vect...
Mam następujący problem, mikrokontroler ATmega328 wykonuje program w którym nie może być przerwań. Jednak co pewien czas musi wykonać inne zadania, więc potrzebuje jakiegoś odmierzania czasu. Zastanawiam się czy dałoby się tak zrobić aby timer działał ale nie robił przerwań. Dopiero program w odpowiednim momencie sprawdzałby jakąś flagę/rejestr, i wykrywając...
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! Wykonałem taki diy , znaczy na atmega 8 , do niego podpinam dwa klawisze , dwa termometry DS18B20. W skrócie - mierzy czas , dwie temperatury oraz napięcie do 20Vdc . W fusebit-ach ustawiony tylko kwarc wewnętrzny 8MHz , jednak do wejść xtal dolutowałem kwarc zegarkowy. Wszystko chodzi idealnie, a jednak... Nie ma podtrzymania zegarek i za każdym...
Wybacz, ale nie rozumiem współpracy tych linii kodu. Zastanów się nad użyciem [syntax=c]ISR(TIMER0_OVF_vect) { timer0_licz--;[/syntax] i dalej, cała funkcja [syntax=c]void delay_500ms(void) { ATOMIC_BLOCK(ATOMIC_FORCEON) { TIFR |= _BV(TOV0); //zerowanie flagi przerwania (zapis 1) TIMSK |= _BV(TOIE0); //aktywacja przerwania od przepełnienia TIMER0 (OVF)...
Mam ustawiony timer w Input Capture Ustawienie timera z przepełnieniem licznika IC_Timers 40000 (po prostu potrzebowałem równy czas też dla odmierzania zegarka i innych bajerów do odmierzania czasu ) przerwanie co 20ms. Od lewej okres, czas stanu wysokiego, aktualny timer ICR1, poprzedni timer ICR1. Po obrazku widać ze mam problem kiedy występuje przerwanie...
Tak jeszcze powrócę do tematu bo mam taki zapis jak usypiam [syntax=csharp] if(Sleep_ON){ //////////////////// wylacz WDT wdt_disable(); //////////////////// uspij mikrokontroler set_sleep_mode(SLEEP_MODE_PWR_DOWN); power_all_disable(); // wylacz wszystkie peryferia cli(); // wylacz przerywania sleep_enable(); CLKPR = bit (CLKPCE); // zmniejsz zegar...
PWM potrzebuje licznika, aby odmierzać czas w którym ustawia pin w stan wysoki i niski. Używasz również timera do regularnego pomiaru czasu echa. To nie może być ten sam timer, co do odmierzania czasu w PWM. Atmega32 ma 3 timery (dwa 8-bitowe i jeden 16-bitowy). Spójrz do datasheet-u mikrokontrolera. Pamiętaj również o tym, aby wszystkie zmienne, których...
Mój problem związany jest z ATmega16 a dokładniej napisałem w BASCOMIE prosty program do migania diodą led ten sam program działa na 908515 a tu nie chce działać , tzn nie odmierza takich odstępów czasowych jakie mu podałem instukcją "waitms", procek zaczyna działać dopiero wtedy gdy zdefiniuję mu programowo kwarc instukcją $crystal=1000000 czyli 1...
Każdy zapis ma wymagany czas. Chyba że urzywasz trybu stronicowego to tylko raz odmierzasz ten czas na stronę.
mam dziwny problem: przy takim programie ldi r16,0b101 out 0x21, r16 ldi r16,0b011101 out 0x21, r16 ldi r16,low(0x199) out SPL,r16 ldi r16,high(0x199) out SPH,r16 sbi ddrb,6 sbi portb,6 reset2: nopnop jmp reset2 reset jest co 20 ms (+-) ldi r16,0b101 out 0x21, r16 ldi r16,0b011101 out 0x21, r16 sbi ddrb,6 sbi portb,6 reset2: nopnop jmp reset2 reset...
Oj...prawda o programowym UARCIE nie jest do końca taka, jaką przedstawił kolega BoskiDialer . Transmisja nie wymaga blokowania uC, ponieważ można wykorzystać licznik do odmierzania zegara bitowego w transmisji. Transmisja nie musi odbywać się w trybie półdupleksowej. Da się zrobić full-duplex, mało tego, możena zrobić nawet różna prędkości w nadawaniu...
Okazuje się że tak jak wiele kolegów pisało - problem leży w dokłądnym odmierzaniu czasy dla one wire... To co na zwykłym AVR chodzi wolniej to na ATmedze chodzi szybciej - nie do końca wiem dlaczego tak jest... Ale dopiero pomiary oscyloskopowe pomogły wyznaczyć dokładne interwały czasowe... no i temperaturka się ładnie mierzy...
Dokładne odmierzanie czasu realizuje się przy wykorzystaniu timera2 z kwarcem zegarkowym na przynależnych mu wejściach... Jak nie chcesz się bawić z takim kwarcem to jest jesze możliwość odmierzania sekundy na timerze 16-bitowym... Przy ustawieniach... 1MHz... prescal 64... wartość początkowa 49911... Pozdrawiam Rafał...
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...
Witam prosze mi powiedziec co źle robie... bo albo trace wiare w cokolwiek... napisalem program, zegarka, nieskonczony, tak czy inaczej w chwili obecnej odmierza i pokazuje czas, na timerze 0 multipleksowanie, na timerze 2 w trybie asynchronicznym odmierzana jest jedna sekunda, kwarc zewnetrzny zegarkowy, schody zaczynaja sie gdy w petli głównej, patrz...
Rozumiem a czy któs z WAS mógłby zerknąć i powiedzieć mi co mam tutaj zmienić. Dim Adress As Byte , Command As Byte Dim Odebrano As Bit , Flaga As Bit Dim X As Byte Config Pind.2 = Input : Portd.2 = 1 Config Timer1 = Timer , Prescale = 8 'co 2usek przy 4MHz Stop Timer1 On Timer1 Przer Config Int0 = Low Level On Int0 Rc Enable Int0 Enable Timer1...
W skrócie zajrzałem do noty katalogowej i dowiedziałam się, że do MEGA 16 można podłączyć 2 kwarce. Końcówki to XTAL1 i 2 oraz TOSC1 i 2. Należy pamiętać, że z końcówek TOSC1 i 2, do których można podłączyć kwarc zegarkowy można sterować asynchroniczny timer2, który należy zatrudnić do odmierzania czasu. Do XTAL1 i 2 podłaczysz sobie kwarc o wysokiej...
Witam. Mógłbyś pominąć owijanie przewodu WN cewką i zamiast tego wpiąć się w uzwojenie pierwotne cewki. Możesz też wpiąć się w impulsy z czujnika Halla który jest chyba w każdym samochodzie. PS. Jeśli chciałbyś zaoszczędzić jeden timer to możesz odmierzać czas instrukcją wait 1. Niby wszyscy piszą że nie jest to dokładna sekunda, ale mierzyłem na ile...
To dobrze własnie widać róznice między danymi producenta a rzeczywistością. Bez tych kondestatorów PCF8583 źle odmierzał czas a to własnie było na tych zaleceniach producenta. Wsatawiłem kondestator i problem zniknął.
przykładowa procedura mogłaby wyglądać tak: .EQU DATA = 5 .EQU CLOCK = 6 .EQU CHIP_ENABLE = 7 ;parametry wejściowe ; ; 3 bajty danych do wysłania umieszczone w SRAM ; pod adresem dane: send: ldi XL, Low(dane) ldi XH, High(dane) ldi R17, 3 cbi PORTD, CLOCK cbi PORTD, DATA cbi PORTD, CHIP_ENABLE sbi PORTD, CHIP_ENABLE racall wait_ms ; Petla_0: ldi R18,...
Ten temat przewinął się już ze 100 razy ale i tak nie mogę doczytać się odpowiedzi. Napisałem taki program ale zegarek ten nie odmierza dokładnie sekundy. Czy może ktoś to zgrabnie uzupełnić o obsługe timerka i podpiętego kwarca 32,768kHz ? A może jeszce jakiś mały zrzut ekranu jak ustawić wówczas fusebity w Bascomie na ten zewnętrzny kwarc. $regfile...
A może zrobić funkcję _delyms(1000) i wywołać ją w pętli 180 razy? NIe trzeba wtedy przerwań. Ja tak ostatnio odmierzałem minutę. Pozdr. Tomgart #define F_CPU 1000000 /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000) /* cpu cycles per microsecond */ void delay(unsigned int us) { unsigned int delay_loops;...
Potrzebuję czterech PWM i dwóch wejść odmierzających długość impulsu o zakresie od 1 do 2 ms. Pytanie czy atmega 8 się wyrobi czy muszę brać 16 . I jak rozumiem z wszystkich postów muszę pwm zrobić programowo bo potrzebuję pozostałych timerów do pomiaru impulsów. I pytanie o oscylator wewnętrzny czy mogę go użyć czy lepiej kwarc bo zależy mi na wielkości...
Zgadzam się z przedmówcą. Kiedyś nie mogłem wyjść z podziwu, że program przestawał działać po załączeniu optymalizacji. Dopiero po pewnym czasie zauważyłem, że optymalizacja pod względem prędkości działania dosięgnęła również... pętli opóźniających :) Dlatego odmierzanie czasu na timerze jest najbardziej precyzyjnym i uniwersalnym wyjściem. I optymalizacja...
Hi hi hi :) Kolega zaczyna jak i ja... też jakieś klika dni i ten sam problem :) Też jak narazie pomocy nie otrzmałem . Może napisz na gg do mnie 15179, jak bede mial chwile wolna to odpisze. Sai sobie poradzimy jak na nie chca pomoc ;) - mało prawdopodobne. Główny problem to odmierzanie mkro sekund . Tak mi się zdaje. Radzio
witam. próbuję napisać sobie procedurki do obsługi 1wire na podstawie pdfserv.maxim-ic.com/en/an/app162.pdf, ale mam problemy z precyzyjnym odmierzaniem czasu. jaki sposób mierzenia jest najpraktyczniejszy? timery, funkcje z util/delay.h czy jeszcze coś innego? i kolejne pytanie: jak sprawdzić ile faktycznie zajmują poszczególne instrukcje?
... Oczywiscie nie siedzialem bezczynnie i majsterkowalem z programem. I niepotrzebnie :( Trzeba było ten czas poświęcić na "podszkolenie" się w C(zapoznanie się z manualem AVR GCC) , bo to co wyprawiasz z kodem , przyprawia o mdłości :) Porównaj poniższe , z tym co napisałeś unsigned int licznik=0; unsigned long int licz=0; char tekst[16],...
Witam ponownie,z odmierzaniem 1s sobie poradziłem ale z zapisem temp.minimalnej mam problem na lcd temp.min wyswietla mi zero,chce zrobic cos takiego właczam termometr: pokazuje temp 25C i w tym momencie ma pokazac temp max 25C i tak sie dzieje i min. tez ma pokazac 25C i tu problem nie pokazuje,podgrzewam czujnik do 30C zapisuje max jako 30C a min...
Witam, Chce mierzyć długość trwania impulsu (stan niski) przy użyciu ATMEGA32. Napisałem poprawnie działający programik, problem w tym, że w czasie pomiaru impulsu procesor nie może robić nic innego. Do wykrycia stanu niskiego użyłem przerwań z INT1 a do odmierzania czasu trwania impulsu użyłem Timer2. Czy jest jakiś sposób, żeby mierzyć czas trwania...
Witam Jakoś dziwnie to napisane. Przede wszystkim jak piszę TIMER to nie używam potem OVF1. Jakoś mi to brzydko wygląda choć działać powinno. Skoro chcesz mieć jeden odczyt na dwie sekundy to zrób to zupełnie inaczej. Np. w programie głównym zrób sobie licznik i dla wartości powiedzmy jeden niech wyśle rozkaz do DSa ażeby przetwarzał temperaturę. następnie...
Witam wszystkich i proszę o pomoc. Otóż potrzebuję wykonać sterownik 18-tu serwomechanizmów, ale nie bardzo wiem jak. Na pewno Bascom, właśnie z tego powodu. Ktoś miły przekazał mi taki oto kod: Nr_wy=0 Timer_2500us: Czas1=248 ; czas stałej części impulsu Czas2=pozycja[nr_wy] ; czas zmiennej części impulsu SetWY(nr_wy) ; ustawia wyjście na 1 Inc(nr_wy)...
Sprawdzałeś w fusebitach na jakiej częstotliwości pracuje µC? Może w tym problem. Procedury które znalazłeś były pisane dla określonej częstotliwości pracy µC. Wykrywać DS-a może bo akurat mieści się w jakichś widełkach czasowych, co nie oznacza że reszta procedur będzie pracować prawidłowo. Tak w ogóle to dla większej precyzji odmierzania...
Ja od siebie dorzucę, że moim zdaniem to powinno być nie: a = OWPININ & _BV(OWIN); // 0 - obecny, else - nieobecny a a = OWPININ & _BV(OWPIN); // 0 - obecny, else - nieobecny Kolejna sprawa jest taka, że definiowanie OWIN, jest bez sensu, no chyba, że chciałeś sprawdzić czy będzie działać tylko dla jednego pinu. Po drugie definiowanie...
Komunikacja pomiędzy rtc a atmega przebiega bez problemów poza szczególnym przypadkiem. Sprawdzając zależność częstotliwości (poprawności działania rtc) od temperatury zauważyłem że rtc niezawsze działa prawidłowo. Do rzeczy - wkładałem rtc wraz z atmega do zamrażalnika :D (tak zamrażalnika) na dobe i sprawdzałem czy wystepuje błąd pomiaru czasu - zazwyczaj...
#define PIN_1W 6 #define DDRx DDRD #define PINx PIND #define PORTx PORTD void init1w() { DDRx &=~_BV(PIN_1W); PORTx&=~_BV(PIN_1W); } unsigned char reset1w() { unsigned char jest; jest=0; DDRx|=_BV(PIN_1W); delay_us(500); DDRx&=~_BV(PIN_1W); delay_us(70); if(bit_is_clear(PINx,PIN_1W)...
Witam wszystkich forumowiczow. Mam zrobic stoper odmierzajacy czas z wyswietlaczem lcd z sterownikiem HD44780 na ATMEGA 128 (na zajęciach jest takie pudło z całym mikrokontrolerem oraz wbudowaną klawiaturą i wyświetlaczem) w programie Programmers Notepad #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #define...
Witam, Chciałbym zrobić na Atmega8 odmierzanie czasu co 1s. Chciałbym do tego celu użyć Timer0/Counter0, taktowany zewnętrznie. uC ma wyprowadzenie T0, do którego podłącza się sygnał taktujący. Teraz moje pytanie. W jaki sposób podłączyć tam kwarc 32,768kHz? Prosiłbym o schemat podłączenia.
Witam Próbuję zrobić miernik częstotliwosci na atmega16 poprzez zliczanie impulsów w czasie 1s. Max częst. to 20kHz (min. 20Hz) a więć po 1s będze 20 000 impulsów dla max częstotliwości. Dlatego do zliczania ich wykorzystuje licznik 16 bitowy T1. Do odmierzania czasu 1s chciałem wykorzystać licznik T0 z ustawionym preskalerem na 1024. Kwarc uk to 8MHz...
Cześć OPIS PROBLEMU: Podjąłem się skonstruowania tego zegara, ale jak dotąd nie udało mi się go uruchomić. Korzystam z Atmega8L i wewnętrznego oscylatora 8MHz. Kostka zdaje się działać dobrze, ponieważ daje się zauważyć zmianę stanów przy pomocy zwykłego miernika napięcia spowalniając program. Niski sygnał z dowolnego wyjścia PCx nie potrafi otworzyć...
Wlasnie zauwazylem temat i postanowilem, ze wrzuce swoje '3 grosze' ;). Niedawno tez pomyslalem, ze jako poczatek przygody z mikrokontrolerami zrobie sobie zegarek jakis na wyswietlaczu LCD (rowniez na wewnetrznym oscylatorze). I faktycznie, ku mojemu zdziwieniu, jego dokladnosc byla praktycznie zerowa :|. I tu mam pytanie: jak to jest mozliwe, zeby...
Nie umiem odczytać temperatur z ds18b20. Rezystor podciągający jest(4.7k), VDD i GND też są podłączone. Linia danych podpięta jest pod pb.7 Aha wyświetliłem sobie też wartości odczytanych bajtów, zarówno 1szy jaki drugi mają wartość 0xFF. podaję kod może koś znajdzie błąd. Dim Cyfra(10) As Byte Cyfra(1) = &B00000101 Cyfra(2)...
Jako ze sporo osob sie pyta o zasade dzialania tego programu to wklejam tutaj kawalek z mojej pracy mgr gdzie zostal ten kod opisany "Generowanie sygnału sterującego serwami odbywa się przy pomocy trzech liczników, jednego ośmiobitowego, licznik „0”, oraz dwóch szesnastobitowych, liczniki „1” oaz „3”. Ośmiobitowy...
ZbeeGin, ale przepełnienie nie nastąpi, podobnie jak Compare nie (chyba, ze będzie wcześniej niż ctc)... Wystąpi, wystąpi. Gdyby rejestr porównania nie działał w tym trybie to licznik by się sam nie skasował w trybie CTC, bo niby skąd miałby wiedzieć kiedy ma to zrobić... :) An interrupt can be generated at each time the counter value reaches the TOP...
witam! Musze dosc precyzyjnie odmierzac czas (1ms) dysponuje ATmega 32 z zewnetrznym kwarcem 8Mhz... ustawilem sobie preskaler timmera na 8 ( czyli stuka sobie z f= 1Mhz) teoretycznie powinno byc dobrze... ale w praktyce pomiar spoznia mi sie o 3sec. na minute ( ???!!!) juz nie wiem co robie nie tak... jesli ktos moze spojrzec bylbym wdzieczny... #include...
witam,mam taki swój własny projekcik gdzie sercem układu jest atmega16, mam problem z częścią programu wyświetlającą czas na ekranie LCD alfanumerycznego.pomimo licznych poszukiwań znalazłam tylko poniższy kawałek programu. Pytanie brzmi jak zrobić by działał on na alfanumerycznym, a jeszcze lepiej by po prostu odliczył dokładny czas np. 10h (wiem że...
Ja się dziwię dlaczego nie używasz timer'a do dokładnego odmierzania czasu... Przecież po to one są...
Jakie chcesz odmierzać odcinki tego czasu? Jeśli długie np 1h to atmega bez kwarcu będzie dość niedokładna, jeśli odcinki czasu mają być bardzo długie(12h) i ma je odmierzać bardzo dokładnie będziesz niestety musiał użyć jakiegoś RTC.
Używasz INT0 i INT1 do zliczania impulsów na linii A impulsatorów, ustawiasz generację przerwań na opadające zbocze. W przerwaniu sprawdzasz linię B danego impulsatora, jeśli B jest w stanie wysokim, to masz impuls "w lewo", jeśli B jest w stanie niskim, to masz impuls "w prawo". Pozostaje jeszcze eliminacja drgań styków... ;) Timer1 wykorzystujesz...
Kol. Roko . Częściowo takie rzeczy pojawiły się już w polskiej pomocy do BASCOM-a On-Line. Obecnie jest jednak ona czasowo niedostępna. Przykład: BASCOM AVR - Tworzenie programu W trakcie edycji (...) Jak nie pisać programów. Dość często podczas przeglądania programów udostępnionych przez inne osoby da się zauważyć pewne charakterystyczne i powtarzane...
Hehe, tekstu przesuwać nie próbowałem, bo nie takie jest przeznaczenie tego wyświetlacza (zresztą widać po jego kształtach :P ), jest to prezent dla dziewczyny (dlatego nawet matryca była ręcznie robiona ;) ). Ale to niebyłby problem, wystarczy zaprzęgnąć do pracy timer'a, właśnie nad tym pracuje :P ATMege8 można by dać, ale trzeba by modyfikować schemat,...
przestawiłem wszystko (prawie) oprócz CKOPT-a którego dalej nie ma.. a to jest mój program.. chodzi poprawnie jak ustawię $crystal = 1000000 a jest przecież $crystal = 16000000 $regfile = "m32def.dat" ' specify the used micro $crystal = 16000000 ' used crystal frequency '$crystal = 1000000 '****************************** KONFIGURACJA ******************************'...
Podchodzisz do tego w najprostszy z możliwych sposobów i dlatego nie wychodzi albo bardzo kiepsko wychodzi. 1. Zapomnij o stosowaniu poleceń typu waitms itp 2. Synchronizuj się wraz z odbieranym sygnałem programowo - np poprzez zobocza narastające czy opadające lub jedne i drugie wtedy nie będziesz miał problemów, że jak pilot jest pod innym kątem to...
Witam Nie pisałem nigdy pod atmega8, więc nie analizuję Twojego kodu. Pisałem rozpoznawanie NEC'a w ASM na PIC. Stosowałem prostą metodę detekcji 0 i 1. Tak naprawdę (pewnie już to wiesz) sygnały z odbiornika TSOPxxx są odwrotne do tych na rysunku na stronie opisującej standard. Wynika to z tego, że przy odbieraniu sygnału z pilota na wyjściu układu...
do Freddie Chopin: * Jedynym założeniem jest możliwość ustawienia serwa z dość dużą dokładnością. Nie wiem względem czego obliczyć dokładność, bo co z tego, że będę mógł zmieniać wartość sygnału nawet o 1 us (np 10 bitów, wartości od 1000 do 2000, gdzie 1500 to środek) jeśli serwo nie odczyta tego poprawnie lub zegar wprowadzi zaburzenia. Chciałbym...
Podłączę się pod temat ponieważ mam podobny problem. W atmega8 mam prawie identyczny program do odmierzania 1s (przepisany z książki).Do uC mam dołączony kwarc 8MHz poprzez 2 x 30 pF, żadnych fusbitów nie ustawiałem, problem polega na tym, że 1s trwa około 10 sekund. Gdzie szukać problemu?? Jezeli nie zmieniales zadnych fuse bitow wiec pracujesz na...
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...
Witam, Pojawił się ostatnio u mnie taki problem. Otóż odczytuję z przetwornika ADC ATmegi16, z kanału ADC0 wartość napięcia (od 0 do 5VDC). Wyświetlam sobie wynik konwersji na LCD i wszystko ładnie działa (liczba na LCD zmienia się w zakresie od 0 do 1023, jak kręcę potencjometrem). Chciałem sterować tym napięciem podłączonym do ADC0 obrotami silnika...
Zegar na Timer0 ruszył, natomiast PWM jest zrobione na Timer1. Przyczyną nie działania Timer0 to procedura RC5(!!??) Teraz tylko pozostało wyregulować odmierzanie czasu..
Mam problem ze zliczaniem czasu przez timer w układzie PCF8583. Na starcie programu ustawiam timer: I2cstart I2cwbyte 162 I2cwbyte 0 'rejestr kontrolny I2cwbyte &B00000100 'alarm aktywny I2cstop I2cstart I2cwbyte 162 I2cwbyte 8 'rejestr kontrolny timera I2cwbyte &B01000010 'zapis rejestru alarmu 'odmierzanie sekund ' włączony alarm timera I2cstop I2cstart...
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w trybie asynchronicznym(RTC). Program nie działa, bo mam problem...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak rozwiązać odliczanie setnych części sekund, zależy mi żeby...
Nie migam diodkami. Mam tutaj dość skomplikowane menu, task czytający z ADC, Task kontrolujący PWM na podstawie odczytów z ADC, task sprawdzający czy stos sie gdzies nie skonczył, task do obsługi klawiatury, task odmierzający sekundy i idle. Może cos mozna by połączyć ze sobą ale po to używam RTOS zeby to bylo rozbite na taski. Chyba znalazłem metodą...
Mam Panowie jeszcze pytanko , dotyczące samego PWM'a . Czy układ ma pracować na zasadzie dwóch timerow , w ktorym jeden dziala w trybie PWM , a drugi co okreslona czestotliwosc nastawia pierwszy względem pobranej próbki ? Wtedy do samego odmierzania czasu użyłbym timera 16-bitowego , który w miare precyzyjnie bedzie odliczał okres miedzy kolejnymi probkami...
Nie no reset to reset ja już nie pamiętam ale reset przetrzymywał go doś długo. Nie rób resetu. Słuchaj gdyb chcieć resetować odczytywać to sam wiesz 800ms to sporawo. Możesz jak chcesz to sflagować czyli po wydaniu komendy konwert ustawiasz flagę że rozpocząłeś proces i robisz coś innego Timer Ci odmierza te 800 ms i wiesz że masz dobry odczyt. Ja...
Napisałem w gcc mały programik odmierzający czas, ale z jakiegoś powodu gdy zmieniam częstotliwość zegara w pliku Makefile mój program odmierza czas zawsze tak samo. void Inicjalizacja(void) { TCCR0 =0x05; // clock source/1024 for T0 /0101 TIMSK = _BV(TOIE0); TCNT0 = 0 } ISR (TIMER0_OVF_vect) { tr2++; if (tr2>=14)...
Wybacz ale nie znam dokładnie twojego mikrokontrolera, ale w Atmega zdecydowanie lepiej jest ustawić taki preskaler aby czasy jak w one-wire po prostu do niego ładować i stan nóżki z termometrem zmieniać programowo w przerwaniu - w końcu po co robić programowo licznik skoro masz sprzętowy, który nie zajmuje procesora z tak błahego powodu jak inkrementacja...
Witam, 1) Do projektu potrzebuję 2 liczników - jeden do odmierzania czasu, drugi do sterowania wyświetlaczami. Czy to dobra koncepcja?? Odmierzanie czasu - jasna sprawa. Wyświetlacze - po co co Ci licznik do sterowania wyświetlaczami (jakimi, siedmio-segmentowymi?). Nie wiem zresztą jak ocenić Twoją koncepcję gdyż jej praktycznie (szczegółowo) nie przedstawiłeś....
Wyjaśniam: do odmierzania czasu nie używam trybu PWM. PWM został wykorzystany do sterowania silnikami dc (mam dwa silniki). Wybrałem kanały 0C1A i OC1B - Timer1. Do odmierzania czasu chciałem użyć timera0 - ustawiłem preskaler na 1024. Odmierza poprawnie. Problem w tym, że kiedy poprawnie działa odmierzanie czasu, to coś złego dzieje się z PWM generowanym...