Właśnie przed chwilą też uruchomiłem zegar na ATMega8 choć wykorzystujący kwarc 32kHz (tzw. zegarkowy) niezależny od generatora głównego procesora. Jeżeli chcesz pozostać przy swoim pomyśle (równie dobrym) to w BASCOM-mie po kompilacji przejdź do opcji programatora gdzie będziesz miał trzy zakładki FlashROM ,EEPROM i Lock and Fuse Bits. Więc wybierz...
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Więc tak. Odcinek 1 sekundy ma być bardzo dokładny, czy nie musi? Jeżeli procek będzie pędzony z wewnętrznego oscylatora, to czas 1 sekunda nie będzie bardzo dokładny. Musisz zmienić fusebity, aby procek był taktowany z 4MHz, bo teraz jak sam widzisz pracuje na 1MHz.
Kiedy piszesz Config Clock =Soft to tworzone są zmienne When you use the CONFIG CLOCK (in soft or user mode) directive the compiler will DIM the following BYTE variables automatic : _sec _min _hour _day _month _year Jeśli chcesz porównywać wartość minut..to powinieneś stworzyć jakąś zmienną przechowująca wartośc poprzedniej minuty, na przykład Old_min...
Niestety w książce tej jest więcej kwiatków i błędów merytorycznych... Dlatego polecam ją odłożyć na półkę i zająć się C. Witam. Na str.157 jest podana prawidłowa składnia LOAD, w programie Pan Marcin rzeczywiście się pomylił. Sam język nie ma nic wspólnego z błędami w książkach np. język C do książki Pana Kardasia też powstała Errata.
$regfile "m8515.dat" $crystal = 8000000 Enable Timer1 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Timer1 = 34286 dim sek as byte do loop Sekunda: Timer1 = 34286 Incr Sek Return Powinna byc rowna sekunda (wyliczone przez kalkulator avr) Ps. Timer startuje w momencie jego konfiguracji wiec jesli nie chcesz go uzywac odrazu,...
Absolutnie żadne Start Timer0 nie jest tu potrzebne. Wystarczy, że tak będzie skonfigurowane przerwanie: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 On Timer0 Sekunda Const Przerwanie = 131 Counter0=Przerwanie Enable Timer0 Enable Interrupts . . . end Sekunda: Counter0=Counter0+131 . . . Return [/syntax] ...i unikaj jak ognia "drukowania"...
Witam Jedna klatka animacji to 8kB a jedna sekunda to już 120kB. Myślę że powinien wyrobić się z odczytem z jakiegoś FLASHa i zapisem do pamięci grafiki, ale w tym momencie nie będzie mógł za bardzo robić innych rzeczy.
zacznijmy od tego, ze kod umieszczamy w klamrach Dodano po 10 to jest kod na jedna sekunde $regfile = "m8def.dat" $crystal = 8000000 Config Pind.7 = Output Portd.7 = 0 Przekaznik Alias Portd.7 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 31250 Do Loop End Sekunda: Load Timer1 =...
tak? [syntax=csharp]volatile unsigned int dziesiatka = 0; volatile unsigned double sekunda = 0;[/syntax]
Witam, Zbudowałem swojego czasu timer odliczający sekundy na Atmega8 ale zauważyłem, że jak zatrzymuje go przyciskiem kilk razy i włączam, to sekunda jest niepełna. Zapewne jest to spowodowane zapisem jego wartości w jakimś rejestrze i chciałbym móc go kasować do końca... mój kod jest dostępny tutaj: http://mikrokontrolery.blogspot.com/2011...
Witam zrobiłem sobie prosty odmierzacz czasu na atmedze8 i wyświetlaczu hd44780 i wszystko jest prawie ok, tylko że jak sekundy są mniejsze niż 10 to wtedy wyświetlać np. 0:58:09 to wyświetla 0:58:90, nie mam pojęcia jak to naprawić, ma ktoś jakiś pomysł? [syntax=cpp] #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h>...
mam jeszce jeden problem, według kodu z linku dondu #include <avr/io.h> #include <avr/interrupt.h> //definicja LED1 (do którego pinu podłączony LED1) #define LED1 PB0 //definicja LED2 (do którego pinu podłączony LED2) #define LED2 PB1 //definicja KLAWISZ (do którego pinu podłączony KLAWISZ) #define KLAWISZ PC0 //definicja...
Proszę. Pisałeś kiedyś, że przy okazji chciałbyś się czegoś nauczyć, więc masz tu przykład który napisałem przy kawie. Trzy różne czujniki- DS18B20, LM35 i Termistor NTC 10k - podłączone jednocześnie do jednego mikrokontrolera. Dla czujników NTC wyznacza się ich "Betę" czego nie robiłem dlatego wskazywana przez niego temperatura różni się nieco od tych...
Właśnie zmontowałem układzik, użyłem kwarcu 4mhz i każda sekunda w moim zegarku trwa kolo 5-6 sekund rzeczywistych. Gdzie popełniłem błąd??
Dodam, że Atmega8 liczy trochę inaczej czas, tzn. sekunda w Arduino to 16 sekund w Atmedze. To wiele wyjaśnia - pomyśl - sygnał z pilota jest krytycznie zależny od czasu, i żeby go zdekodować potrzebny jest dobry wzorzec czasu. I tu niestety jest błąd, bo wzorzec czasu Atmegi8 jest 16 razy wolniejszy od wzorca rzeczywistego, potrzebnego do zdekodowania...
Mała zmiana schematu (oczywiście schemat poglądowy) Po naciśnięciu dowolnego klawisza np. SW2 zapala sie odpowiednia dioda LED2 (SW1-LED1...SW4-LED4...SW6-LED6)i jednocześnie dioda D7 miga określoną ilość razy, oraz dioda LED9 zapala sie na 2sek. czyli np. Naciskamy SW2 zapala się LED2 a LED7 miga 2 razy, przerwa 1 sek i ponownie 2 mignięcia aż do momentu...
Witam, przed chwilą zaprogramowałem mojego pierwszego AVR'a - ATMEGA8. Program banalny - naprzemiannie stan niski i wysoki na jednym z portów. Czas jaki wprowadziłem w programie to 1 sekunda na impluls. Jak się okazało czas ten jest znacznie dłuższy w praktyce (około 10 sekund). Do ATMEGI podłączyłem rezonator 11.0592 MHz, w Bascomie również taki wybrałem....
Dodatkowy wpływ na błąd ma niedokładność częstotliwości generatora kwarcowego. Błąd w sekundach na dobę, wyraża się wzorem: \Delta=86400*(1-\frac{fwzr}{f}) \Delta - błąd w sekundach na dobę (wartość ujemna oznacza spóźnianie się) fwzr - częstotliwość wzorcowa (czyli to co ma być np. 4000000 Hz) f - częstotliwość rzeczywista kwarcu lub generatora kwarcowego...
a czas świecenia jednej diody równy jednej mikrosekundzie i rezystory przy nich 100 omów będzie dobrze? to chyba trochę za krótko. 1 mili sekunda była by w sam raz.
Ale 1sekunda = 100 milisekund a nie 1000!! Człowieku co Ty za herezje głosisz? 1 sekunda = 1000 mili sekund. sam przedrostek mili oznacza jedną tysięczną. wiec 1 mili sekunda to jedna tysięczna sekundy, jeden mili gram to jedna tysięczna grama i tak dalej...
Kod od Kolegi matekogon nie działa. Cały czas świeci led. Ano dlatego że podobno się nie da zrobić dłuższego czasu na timer0 niż 1 sekunda. A mi nie potrzebna jest jedna sekunda tylko dłuższy czas. Zrobiłem na wzór tego kodu, który mi podałeś i też nie działa: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 $hwstack=32 $swstack=32 $framesize=40...
Witam Zastanawiam sie nad tym jak obliczyc blad zegaza ktory wykonalem na atmega8 miktokontroler jest taktowany rezonatorem 8 MHz sekunda jest odmierzana przez timer1, preskaler - 256 wartosc poczatkowa licznika 34286 .... 1sek: counter1=counter1+34286 incr sekundy set new if sekundy =60 then sekundy=0 incr minuty ' zezwolenie na wyswietlanie czasu...
Czy takie coś będzie liczyć czas w miarę poprawnie? - taktowanie układu kwarcem 4MHz (1 takt = 0,00000025s) - preskaler /128 (po przeskalowaniu będzie 1 takt = 0,000032s) - inicjalizacja timera od 34286 (65536 - 31250), 31250*0,000032=1s Nie ma preskalera 128. Masz do wyboru 1|8|64|256|1024 A u mnie tak właśnie liczy na kwarcu 8Mhz/256 tyle, że w CTC...
Wzorowałem się na kilku przykładach i wyszło mi właśnie że przy f=8Mhz i dzielniku 256 zegar timera pracuje z f=31250Hz, tym samym sekunda minie po tych 31250 cyklach i wtedy powinno wystąpić przerwanie. Dokładnie tak... http://obrazki.elektroda.pl/8414837200_1... Również dobrze jest pamiętac że minuta ma 60 sekund zamiast 61.... Licznik...
Masz czym zmierzyć częstotliwość zegarową. Może Twoje 1 Mhz to wcale nei jest 1 Mhz ? ja bymjeszcze się przyjżał czy przypadkiem liczba którą wpisujesze do licznika jako wartość do porównywania tak samo jak w.w. sekunda nie jest zaniżona o 1 ? myślę że to jest powodem. Tam powinno być chyba 15626 bo dopiero przekroczenie 15625 o jeden będzie równoważne...
...jak ja mam to napisać?? Nie mam pojęcia o Timer'ach! Kubbaz napisał coś o tym ale słabo czaję... Pierwsze zdanie z postu kolegi matgaw , możesz włożyć między bajki , bo ma sie nijak do rzeczywistości , jeśli mówimy o ATMega8 i podobnych :D Poniżej dowód w postaci najprostszego zegarka na M32 , ale na M8 też powinien działać. $regfile = "m32def.dat"...
Można jeszcze sprawdzić, czy generator w PCFie pracuje, co sekunda powinien być impuls na wyjściu INT, sprawdź to, i ja też mam kondensator przy samych nóżkach, za diodami, bo był trochę oddalony i wtedy nie odmierzał tak dokładnie.
potwierdzam, mam system rejestracji czasu pracy, w terminalach kwarc 32... na timer asynchr. opóźnienie do 6-ciu sekund na dobę, o północy synchronizuje 18 terminali i jest sekunda różnicy o 6-tej rano. 4 sekundy to dobry wynik. na zegarkowym bez korekty trymerkiem i chuchaniem/dmuchaniem (czyli stabilizacji temperatury) to sie musi rozjechać. nawet...
... na pewno wewn oscylator RC w tym przypadku nie ma wpływu na dokładność twojego zegarka ;) - jego dokładność zależy od kwarca 32,768kHz oraz twojego programu. A jeśli u ciebie sekunda miewa różną długość to stawiałbym na problem z twoim programem - i tam możesz szukać dalej problemu
Przy okazji - odmierzanie czasu w ten sposób zawsze będzie obarczone błedami i to całkiem sporymi. Zwróć uwagę, że w gónym programie do odmierzania czasu jest użyte przerwanie tajmera, a nei licznei pętli. a użtkownik VSS pisze: Przez tydzień spóźniał sie o około 1 sekundę w stosunku do DCFa Więc o co chodzi?? Jak dla mnie 1 sekunda tygodniowo by w...
Piszę ponownie, ponieważ jako, że z układem nie mam już problemu mam problem z napisaniem programu. W swoim rozwiązaniu chciałbym użyć dwóch przerwań od TIMER0 oraz zewnętrzne INT0. Teraz tu moje pytanie czy te dwa przerwania zaimplementowane w ten sposób jak poniżej, nie wpłyną na niedokładność pomiaru i czy jest może na to lepszy sposób. Mój kod:...
Masz rację, ale maje pytanie bardziej dotyczyło samochodów w których są wskaźniki wychyłowe. Chyba w Pandzie jest to tak zrobione. Przecież zanim weszły silniki krokowe musiało coś takiego powstać? Jak dotrzec do takich instrukcji. A może z innego zastosowania można podpatrzeć? Jakies sugestie? A tak przy okazji. Macie pomysł na pomiar prędkości, raczej...
witam wszystkich Dopiero zacząłem przygodę z programowaniem i pojawił się problem Chciałem zrobić zegar na Atmega8. Przepisem program z książki (wiec domyślam się zę nie ma błędów) Zrobiłem prosty układ na płytce stykowej. Do Atmegi podpiąłem kwarc 8MHz dwa kondensatory po 27pF i i wyświetlacz LCD 2x16. Program ruszył od razu ale za wolno chodzi sekunda...
Witam Mam płytkę z Atmega8 połączoną z czujnikiem PIR ( wejście INT1 przez transoptor ), do tego pomiar ADC ( od wartości adc zależy czas po jakim PWM będzie zmniejszone, opcjonalnie chcę też pod INT0 podpiąć przycisk, coby włączyć światło, gdybym nie znalazł się w zasięgu czujnika. Dodatkowym "bajerem" jest to, że światło ( listwa LED ) powoli się...
Witam W jaki sposób mogę skonfigurowac atmegę 8 aby odbiór rc5 zrealizować na timerze1.Ta timerze 0 mam odliczanie sekund oczywiście wprzerwaniu.Mam skonfigurowane tak: Config Int1 = Low Level , [timer = 1] Config Rc5 = Pind.3 [timer = 1] Enable Int1 Enable Interrupts On Int1 Rc5 Config Timer0 = Timer , Prescale = 1024 Enable Interrupts...
Witam Mam płytkę sterującą dwoma kanałami PWM - przez ULN oraz MOSFETY. Płytka ma dwa wejścia oraz wejście czujnika PIR - INT1. Ma przede wszystkim sterować włączaniem taśmy LED 12V z czujnika PIR ( oprócz tego z drugiego wejścia ). LED włączona przez PIR ma docelowo świecić określoną ilość czasu ( zależną od natężenia światła ) i się wyłączyć. Żeby...
Poszukałem, poczytałem, wypociłem coś takiego: [syntax=c] ... ISR(TIMER1_COMPA_vect) { if(ssek == 124) { sek = sek + 1; ssek = 0; } ssek = ssek + 1; TCNT1 = 0; } int main(void) { OCR1A = 0x7C; // do 124 TCNT1 = 0x00; TCCR1A = 0x00; TCCR1B |= _BV(CS12); // preskaler 1024 TCCR1B |= _BV(CS10); // preskaler 1024 TCCR1B |= _BV(WGM12); // tryb ctc TIMSK |=...
Ustawiłem sobie w kodzie W=128 i sygnał wygląda tak: http://obrazki.elektroda.pl/3128156700_1... Nie wiem czy wiesz jak działa Phase Correct. Timer liczy aż napotka wartosć OCR i zmienia stan pinu. Jedzie jednak dalej i jak dojedzie do końca licznika to tego pinu nie wyłącza tylko zawija się i zaczyna liczyć w dół. Kiedy znów napotka...
Witam, chciałbym przerobić projekt z tego linku http://www.elektroda.pl/rtvforum/topic90... 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...
A tak sobie siadłem i napisałem migacz. Kod na ATMega8 taktowana 8MHz http://obrazki.elektroda.pl/9449768600_1...
Witam, Mam nadzieję, że piszesz programy z wcięciami a tutaj tylko przypadkowo wkleił ci się kod bez wcięć - bo masakrycznie się to czyta - nie tylko komuś ale i samemu można się pogubić na maxa, ale do rzeczy .... widzę, że odczyt robisz sobie w jakiejś tam procedurze i ok - skaczesz do tej procedury gdy twoja zmienna Byt = 0 . I jak się patrzy na...
$regfile = "ATtiny25.dat" $crystal = 8000000 Config Pinb.2 = Output ' pompa Config Pinb.1 = Output ' dioda Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Dim Sekundy As Byte Dim Minuty As Byte Dim Milisekunda As Byte Enable Interrupts Enable Timer1 'Timer1 = 6 ldi R16, 6 !Out TCNT1, R16 Set Portb.2 Set Portb.1 Do If Minuty = 0 Then...
Witam, Mam następujący problem, buduje sterownik do akwarium i potrzbny jest mi do tego czas. Na początku stworzyłem procedurę przerwania na kwarcu wew taktowanym na 1mhz i t2, oczywście okazało się, że czas jest baaardzo nieprecyzyjny, pomyslałem że przy 16 bitowym t1 będzie to mozna dokładniej ustawić i przepisałem procedurę - efekt taki sam. Więc...
Witam. Chciałem sobie zrobić prosty zegarek. Napisałem kod, podłączyłem wszystko na mojej płytce testowej i niby działa, ale ... Za szybko odmierza czas. 1 sekunda trwa tutaj dużo krócej. W ciągu 1 minuty w rzeczywistości, naliczy 170 sekund. ATmega ma ustawiony fusebit na wewnętrzny oscylator 8Mhz, do XTAL1 i XTAL2 mam podłączony kwarc zegarkowy. Kod...
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę (więc wynik od razu w Hz). Po upływie sekundy ma...
Witam! Popełniłem sterownik do pompy pieca C.O., jednak mam problem; wygląda na to, że po pewnym czasie zawiesza się czujnik temperatury (DS18B20) i wskazuje jedną, nieprawdziwą wartość... DS działa w trybie parasite, rezystor podciągający 4,7k, Vcc do masy. Poniżej kod programu. [syntax=c_mac]/* * main.c * * Created on: 27-09-2014 * Author: BrT */...
Witam,mam problem, ponieważ nie wiem czy do zegaraka na atmega8 trzeba przy programowaniu podłączyć kwarc czynie (programuje w STK200).Koledzy z forum mi muwili ale coś nie załapałem. Tu jest schemat zegarka: http://obrazki.elektroda.net/59_12318796... A ty kod żródłowy do atmega8: /* zegar.c - firmware for simple digital clock based on AVR...
założona na początku wartość 22336 odnosi się wyłącznie do taktowania 8MHz. Właśnie wartość licznika 22336 odnosi się do taktowania 11.0592 MHz, bo nie wiedziałem co jeszcze tam zmienić i zmieniłem tylko $crystal=11059200 na 8000000 nie ingerując w dalszą część kodu pod względem taktowania. Jest na to jakiś ogólny wzór, żeby to wyliczyć? 1. Nie ma...
Posiadam książkę pt. "Programowanie mikrokontrolerów AVR w języku BASCOM" Marcina Wiązania i jest tam przykład zegarka z wykorzystaniem timera. Problem polega na tym że sekunda tak naprawdę trwa "wieki" prawie 8s prawdziwych. Połączyłem układ zgodnie ze schematem w książce i tak samo, odłączyłem rezonator nic się nie zmieniało, zmieniałem taktowanie...
atmega8 timer sekunda atmega8 bascom przerwać sekunda sekunda wyłancza
oporność głośnik schemat amperomierz kondensator mniejszy zasilacz
instrukcja napraw chevrolet instrukcja napraw chevrolet
Fiat Panda II – silniki z paskiem rozrządu 15mm: modele, roczniki, FIRE 1.1 1.2 8V Spadek ciśnienia w instalacji CO - możliwe przyczyny i diagnostyka