Wojtek - wchodzisz tutaj: [url=http://www.frank-zhao.com/cache/avr... z kalkulatorem 16MHZ z preskalerem 1024 oznacza że: - 1 sekunda nastąpi po 15625 cyknięciach timera - przerwanie następuje przy przepełnieniu jeśli wybierzesz OVERFLOW, ale może tez nastąpić przy COMPARE, od tego zależy jaką wartość wpiszesz do timera (czy odejmiesz...
Wyobraź sobie, że przerwanie występuje co 500ms a do procka podłączona jest dioda. Co pół sekundy dioda zapala się i gaśnie. Okres przebiegu to będzie czas świecenia i wygaszenia diody czyli jedna sekunda. Jeśli przerwanie było by generowane co sekundę okres wynosił by wtedy dwie sekundy.
I dla tego właśnie ja nie podalem tego z przerwaniem :]
Stosy to dla mnie czarna magia, wiem tylko, że każdy przeskok wymaga zapisania adresu zwrotnego, ale nic poza tym :oops: No przy takim podprogramie to 1 megabajtowy stos to za mało :D, to się chyba nazywa rekurencja: [syntax=basic4gl]Petlapomiarowa: If Impulsy < 15 Then 'Jesli nie ruszono, wyswietlaj dalej napiecie Gosub Pomiaradc If Konwersja >...
Czy wszystko będzie ok. trudno wyczuć. Zależy jaki zastosowałeś układ wykrywania przejścia przez zero. Jeżeli stan niski utrzymuje się przez większą część przebiegu i tylko w okolicach zera jest wysoki to dopóki jest stan niski to jest zgłaszane przerwanie. Jeżeli dodać do tego że przerwanie int0 ma najwyższy priorytet poza reset to przerwanie od timera...
Wrzuć wszystko do programu głównego tzn. przyciski ( ustawianie czasu załączania/wyłączania pompy), sprawdzanie Adc (poziom wody) przeliczanie wartości dla wyświetlacza , a samo wyświetlanie w podprogramie odświezanym co jedną sekundę za pomocą Timer0 . Timer0 dalej dla wyznaczania 1 sekundy. Buzer zrealizuj za pomocą zwykłej zmiennej licznikowej zwiększanej...
Zrób to tak: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 Config Timer0 = Timer , Prescale = 256 'onfiguracja timera, przescaler 256 On Timer0 Odmierz_1s 'włączamy timer0 Dim Licz_8ms As Byte 'definiujemy zmienną pomocniczą Dim Sekundy As Byte Enable Interrupts 'włączamy zezwolenie na przerwanie Enable Timer0 Load Timer0 = 125 'ładujemy...
Do drasmen: jeżeli chcesz aby układ zadziałał musisz przestawić fuse bity na wew. generator np. 8MHz a do pinów gdzie podłączasz kwarc musisz wpiąć kwarc zegarkowy 32.768kHz. Program dla autora tematu: 'Program wykorzystujący przerwanie od timera0(8 bitowego) generowane co 8ms 'jeżeli przerwanie zostanie wywołane 125 razy, otrzymamy 1 sekundę...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
...Proszę o jakieś podpowiedzi bądź kawałek kodu co ma być dalej, żeby generować te nieszczęsne 40kHz ... To już wszystko :) Na pinie PB1 masz przecudne 40kHz , jeśli faktycznie procek jest popędzany 8MHz. W ramach testu , możesz w pętli głównej napisać: Do Set Tccr1a.com1a0 'dołącz oc1a do pinu Wait 5 'przez 5 sekund fala 40kHz Reset Tccr1a.com1a0...
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
Zablokuj przerwania na czas odczytu temperatury, powinno pomoc. Druga opcja to wykorzystać przerwanie zegara i od razu po odczycie czasu wykonać odczyt temperatury i potem wysłać rozkaz konwersji temperatury do DS. Jak podczas nadawania po 1Wire program wykona jakieś przerwanie to będą problemy z DS (przynajmniej ja takie miałem)
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Witam. Proponuje zacząć projekt od zapoznania się z Timerami i z przerwaniami od nich. Następny krok to wyświetlacze LED sterowane multipleksowo. [url=http://diycenter.acid19.linuxpl.com... szczypta teorii na temat wyświetlaczy. Potem proponuję uruchomić wyświetlacze i wyświetlić na nich jakiekolwiek cyfry. Poniżej (tak...
Włącz timer1 i w jego przerwaniu wstaw getadc np co sekundę. To ma być woltomierz? Rozumię , że masz tylko jedną cyfrę na wyświetlaczu?
Config Serialin = Buffered , Size = 80 Enable Interrupts Dim _Flaga_1s as Bit _Flaga_1s = 0 Config Timer1 = Timer , Prescale = 64 Enable Timer1 : On Timer1 Co1s Cls Do If Ischarwaiting() = 1 Then Znak = Inkey() Print Chr(znak) ; End If if _Flaga_1s = 1 then ' ------> a tutaj wyświetlaj już sobie spokojnie co chcesz co...
Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ?? Ustawić odpowiedni prescaler.Ponieważ timer jest 8'bitowy to przerwanie z prescalerem równym 1 będzie wywoływane 128 razy na sekundę. w M8 na T2 masz dostępne prescalery 1,8,32,64,128,256,1024....
Witam. Powinieneś zastosować przerwanie np. Timer1 do zliczania czasu. Sprawdzanie temperatury powinno dobywać się co sekundę lub dłużej. Załaczanie/odłaczanie pompki i innych elementów musi odbywać się w przerwaniu i powinno być sprawdzane wraz ze zmianą temperatury. Co do wyświetlania można zrobić to w przerwaniu lub nie.
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
Koledzy - wpuszczacie człowieka w maliny. W Bascomie nie da się poprawnie zrobić programowego PWM na więcej iż 1..2 kanały z powodu narzutów czasowych. 100 tysięcy przerwań na sekundę to AVR i w C też raczej nie obsłuży. W Bascomie zgadywałbym, że zatka się przy max. 10 tys./s
Tylko dlaczego /128 ? Bo 32768kHz/128=256, co powoduje że impuls będzie generowany 256 razy na sekundę, a co tyle przepełnia się ośmiobitowy timer, więc przerwanie zostanie uruchomione co równą sekundę :) Co do przebiegów - też pewnie wina programu, timer nie został prawidłowo skonfigurowany i nie uruchamia kwarcu Dodano po 3 Jeszcze po "Enable Interrupts"...
Przeczytaj te artykuły: http://mikrokontrolery.blogspot.com/2011... http://mikrokontrolery.blogspot.com/2011... Timer2 jest 8 bitowy więc zlicza 256 stanów. Ustawiając preskaler timer2 na maksymalną wartość 1024 z poniższych obliczeń otrzymasz: ilość sekund = 1/(32768 /1024 /256)...
Zupełnie inaczej. Obsługa przerwania, która tylko ustawia znaczniki, zupełnie nie ma sensu. W przerwaniu timera zgłaszanym np. 50 (20..100) razy na sekundę, czy poprzednio przycisk był zwolniony, a teraz jest wciśnięty. Jeśli tak - ustaw znacznik do ew. wykorzystania w ew. pętli zdarzeń (to dość nieszczęśliwe rozwiązanie, ale w Bascom i u początkujących...
Zastosuj dostępny kwarc zegarowy 4194304Hz. Config Timer1 = Timer , Prescale = 64 Timer przepełni się co 1 s bez wartości początkowej! Włączasz go i zapominasz, że istnieje. W przerwaniu tylko Incr sekunda. Mam zegar na ATMEGA8 z budzikiem ustawiany z pilota RC5. Chodzi ok.
Na elektrodzie było kilka(naście?) zegarków na ATmega8 w dziale DIY, z czego kilka widziałem oprogramowanych w BASCOM-ie. Zajrzyj na tamte tematy, na pewno ci się rozjaśni. Zegarki lepiej taktować rezonatorami zegarkowymi, bo takowe są do tego najlepiej przystosowane jakby nie było. Chociażby z racji częstotliwości 32768 Hz, które jest 15-tą potęgą...
Chciałbym odmierzyć czas za pomocą Timera0 w moim AVRku - chodzi dokładnie o 1sec. Policzyłem to sobie następująco: Kwarc 7372800 / Preskaler 256 / Load Timer0 = 144. Wynik = 200, więc liczę przerwania do 200 i inkrementuję licznik sekund. Problem w tym że trwa to trochę dłużej niż 1s. Coś źle liczę czy to inny problem?
Spróbuj zapomnieć o komendzie wait. Poczytaj o timerach i przerwaniach. Logiczne jest że jak w podprogramie jest wait to na nic nie reaguje dopóki nie odliczy tych 5 sekund.
piszę w Bascomie a dokładnie chodzi mi o to że odczytuję czas z pcf8583 i wyświetlam go na LCD ale chce dodać do tego pomiar temperatury i niemogę togo połączyć w jedną całość :(
Podepnę się pod wątek, bo temat pasuje :D atmega8 na wewnętrznym oscylatorze 8MHz i przerwanie zliczające sekundy: Config Timer0 = Timer , Prescale = 8 Load Timer0 = 100 'przerwanie co 0,1ms On Timer0 Odmierz_ms do loop end odmierz_ms: Load Timer0 = 100 Incr Licz_ms If Licz_ms = 10000 Then '10000*0,1ms=1s Licz_ms = 0 end if incr sekundy return Wszystko...
Może dodam: jak zrobiłem “estop” na takim patencie: Debounce Estop , 0 , L2 , Sub wszystko działa, niestety potrzebuje to na przerwaniu. Ponadto program skacze z podprogramu na podprogram co mu nie wychodzi na zdrowie :( Dodano po 50 Zrobiłeś co napisałem? jutro rano...
Ok, tylko co jeżeli chciałbym żeby był np taki efekt: dioda świeci 4 sekundy na zielono, pozniej 4 sekundy na czerwono i powiedzmy 4 sekundy na żółto, jeżeli czas świecenia zrealizuję za pomocą funkcji Wait , to nici z obsługi przycisku w petli głównej, jeżeli bym to zrobił przerwaniem zewnętrznym wówczas program najpierw obsługuje przerwanie i sterowanie...
cls nie powinien tu być problemem. A przed wygłoszeniem opinii zapytałeś o częstotliwość sygnałów? Instrukcja CLS może zajmować np. 300ms. Czy 4 impulsy na sekundę to jest coś co przekracza możliwości AVR? A najlepiej sygnał taktujący zliczaniem podaj na pin INT0 lub INT1 i ustaw przerwanie żeby reagowało na zbocze. Bardzo dobre rozwiązanie, pod warunkiem,...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
A nie prościej liczyć to za pomocą Timera1 czyli na sekundę ma być np. wyświetlonych 50 obrazów i każdy z nich zawiera np. 10 części. Daje nam to 500 przerwań na sekundę. W przerwaniu Timer1 ustawiasz za każdym razem początkową wartość timera i ustawiasz jakąś flagę. Możesz również dodać zwiększanie licznika od tego co ma być wyświetlane. W programie...
Hmm dalej nie kumam do końca o co chodzi jestem początkujący ... Znalazłem taki program w książce do odmierzania 1 s tylko jak to do mojego programu dołączyć [syntax=basic4gl]'Przykład wykorzystania Timer0 do generowania w przerwaniu '1 sekundowych odcinków czasu 'Program co sekundę w przerwaniu zmienia na przeciwny stan linii 'PD0 sterującej diodą...
To co piszesz jest słuszne i mądre, widzisz, jest tylko jeden problem - soft jest skomplikowany bardziej niż by się wydawało, atmega8 ma tylko 8kb flash a wszystkie przerwania Atmega8 są zajęte (w tym timer1 do zliczania pojedynczych sekund, int1 i timer2 wykorzystywany przez getrc5). Oczywiście zawsze można skonfigurować bufor wejściowy, np. gdy spodziewamy...
Witam Możesz również zastosować zewnętrzne dzielniki w postaci np. CD4040. Oczywiście dwa timery do zliczania przerwań i jeden do odliczania 1 sekundy. W każdym razie przy wejściowym dzielniku prawdopodobieństwo kolizji (wystąpienia dwoch przerwań jednocześnie będziem mniejsze. Przy tych układach da się uzysakć realnie dokładność 2Hz a rozdzielczość...
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 Nie ma potrzeby az tak komplikowac tak wyjatkowo proste zadanje jak odmierzene czasu 1 sek. Po pierwsze: system ci sie blokuje juz po kilku sekundach...
jak chcesz czytac temp co sekunde to dodaj jedna zmienna, pozniej w petli glownej zrob zapis sekund to tej zmiennej, po czym jak ta zmienna i sekundy sie roznia to wchodzi do nastepnej petli, gdzie odczytuje temperature, a wychodzi jak temperatura jest rozna. W przerwaniach powinno byc jak najmniej rzeczy. Jak bede w domu postaram sie ci dalej pomoc....
Witam, analizator zobaczył tylko ja specjalnie to zwęziłem żeby było widać zarys całego przebiegu,. Teraz tez już wiem, że pomysł stosowania przerzutnika D jest raczej bezcelowy. Bo i tak w programie trzeba sprawdzać stan na pinie kierunku. Oczywiście najlepszym rozwiązaniem jest zastosowanie bramek z histerezą. Jest jednak jeszcze druga kwestia, a...
DZIĘKI WIELKIE Jeżeli dobrze rozumiem to ustalam początkową wartość licznika i kiedy licznik się przepełni zostaje przerwana główna pętla i skok do podprogramu. W jaki sposób wyliczyć jaką musi mieć wartość zmienna aby występowało na wyjściu 8Hz? Czy są może jakiej jeszcze rozwiązania, bo jak zauważyłem to skok do podprogramu będzie wykonywani 8 razy...
Load timer = ... nie jest równy Timer = ... ... no to akurat jest oczywiste :-) Problem dotyczy zupełnie czegoś innego - poczytaj powyżej, ale dokładniej ;-) Skąd te obliczenia? Poniżej masz kalkulator do timerów. Policz i się nie dziw. ... no jakoś się nie dziwię, bo kalkulator (swoją drogą całkiem fajny - szczególnie przydatny dla tych, który nie...
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...
... Do portc.5 mam podłączony LED który ładnie miga co 1s. Szczerze wątpię :( ...problem polega na tym że w ciągu sekundy zegarek zlicza czas dwóch minut... Pierwszy "End if" w procedurze przerwania timera, przenieś na koniec tej procedury, a następnie zastanów się dlaczego.
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...
aha, uzywasz juz timera do multipleksowania. To spoko jak jest wywolywanie przerwanie to wraca spoworotem do petli (tak jest przynajmniej w bascomie). Dodano po 28 Dodaj do petli glownej tryb powersave i wytestuj!
Trochę więcej czasu niż myślałem zajęło mi przerobienie kursu FORBOT, sporo tez czasu straciłem na trawieniu płytek i ich lutowaniu, ale nieważne wszystko wyszło ok i sporo wiedzy sobie przyswoiłem, także wczoraj zacząłem czytać temat timerów http://diycenter.acid19.linuxpl.com/read... podany mi przez Tomq no i trzeba powiedzieć,...
Tu mam jeszcze pytanie - czy mogę wykorzystać timer, do odpytania co kilka sekund o czas z rtc, co kilkadziesiąt ms o stany przycisków, co kilka sekund o temperatury? Użyj techniki opisanej [url=http://stsystem.elektroda.eu/progra... Co prawda kody są w C, ale z opisu bez problemu...
Bez problemu mozna zrobic obsluge klawiatury matrycowej, LCD, RS, ADC na jednym timerze + petla glowna a efekt sekwencyjnego wywolywania kodu jest i tak niewidoczny dla uzytkownika. Jak chcesz migac 3 diodami, np. 1 co sekunde, 2 co dwie sekundy, 3 co trzy sekundy to bez problemu zrobisz to na timerze wywolywanym co sekunde. A i tak jest to przerost...
Witam Żeby uzyskać 1 sekundę albo skonfiguruj sobie timer albo wykorzystaj fakt, że układ ma dodatkowe wyprowadzenia do podpięcia dodatkowego kwarca a np. Bascom w prosty sposób pozwala Ci zrobić zegar. Skonfigurowanie zegar umożliwia skonstruowanie podprogramu (musi nazywać się sectic, więcej o tym w pliku pomocy), do którego procesor będzie wchodził...
Dzieki Atom1477 miałeś racje chodziło o fusebit divide clock by 8. Teraz waity odliczają sie poprawnie .program tez chodzi ok. tylko te przerwania które miały być co sekundę sa teraz wyzwalane według oscylatora wewnętrznego a chce zeby były jak w 8 z kwarcu 32768 czy Config Timer2 = Timer , Prescale = 256 , Async = On jest nieprawidłowa konfiguracją...
Najpierw piszesz że 9 if'ów za długo trwa a potem że chcesz tylko tylko kilak razy na sekundę sprawdzać więc ciężko zrozumieć na czym ci na prawdę najbardziej zależy. Jeżeli faktycznie 9 if;ów nie może być to zrób jak radzi kolega wyżej albo zmień mege8 na mege88 lub podobną tej rodziny i bez zmiany schematu możesz na przerwaniach każda nogę sprawdzić.
To się nie robi jak myślisz. Najprościej jest zrobić to na "przepełnieni" licznika czyli jak doliczy do zera. Na początku ustawiasz mu np. 64287 i podział przez 256. Po dokładnie 0,01s nastąpi przepełnienie i włączenie przerwania. W przerwaniu pierwszą rzeczą jaką musisz zrobić jest ponowne ustawienie licznika na 64287. Jak chcesz jednocześnie sprawdzać...
Wpisałem polecenia wczytywania czasu z EPROM i zapisu. Różnica jest teraz taka, że co sekundę dostaję: 255:255:255 Wyświetlał ci wszędzie 255 bo taka jest wartośc każdej komórki "surowego" EEPROM (FF). Aby tego uniknąc proponowałem 'startowe wyzerowanie': Przy nagłym odcięciu zasilania z 14V IN czas jest zapisywany do EPROM. Natomiast coś dalej jest...
Czas odczytu DS jest określony na 750ms, przecież nie mogę wyłączyć przerwań na taki czas... Chodzi Ci o to, że będę sobie sam sekundę odliczał timer1, a potem zwiększał jakąś zmienną która będzie odp za moje sekundy i tak dalej? Trochę zabawy zwłaszcza że każdy mies ma inna liczbę dni itp. Chyba, że coś nie zrozumiałem do końca. Edit: Sprawdzałem teraz...
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...
Bardzo dziękuje! Wczoraj walczyłem z eeprom'em i dlatego został wpis na początku. Przekaźniki same mi pstrykały co ułamek sekundy i przy zapisie, odczycie miałem tylko "-0.0". Poczytam helpa i postaram się zrozumieć jak działa program poprawiony przez Ciebie. Dodano po 6 Tylko jedna sprawa. Zmienna Termostat i Histereza potrzebne są z przecinkiem. Jak...
Dzięki! Pytałem zapobiegawczo. Muszę wybrać temat pracy inżynierskiej. Kiedyś bawiłem się BASCOM-em, ale do przerwań nie doszedłem- pamiętam, że też miałem problemy z równoległym wykonywaniem zadań przez procesor, ale i moja wiedza była też mizerna. Ten program chcę napisać w AVR-GCC, bo to jest szeroko chwalone środowisko programistyczne i język programowania...
Pisząc posta masz możliwość i powinieneś zapakować kod w "Listing kodu: SYNTAX wybierz" i tam wybrać "Basic Bascom" Zupełnie inaczej to wygląda i da się czytać. Napisz lepiej w komentarzach do kodu co Ty myślisz że to robi bo ja to widze tak: Co 500ms czyścisz wyświetlacz i wyświetlasz zmienną Sek. Zmienna zmieni se dopiero za minute i dwie sekundy...
Program który przedstawiłeś nijak się ma do tego co chcesz osiągnąć. Nie wiadomo co to za zmienna Time1 i po co jest porównywana z jakimiś dziwnymi wartościami. Zacznij może tak. Prescaler=64 to za mało żeby odmierzyć dwie sekundy - musi być co najmniej 256. Skoro impulsy przychodzą na PD.3 to aż się prosi żeby wykorzystać przerwanie Int1. W przerwaniu...
Mam coś takiego: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz Dim Licz As Byte Enable Interrupts Enable Timer0 Load Timer0 = 250 Stop Timer0[/syntax] i przerwanie: [syntax=basic4gl]Odmierz: Load Timer0 = 250 Incr Licz If Licz = 150 Then Licz = 0 Toggle Buz End If Return[/syntax] tylko że to miga 1 sekunde a ja potrzebuje...
Config Timer0 = Timer , Prescale = 64 On Timer0 Odmierz_1s 'podprogram wykonywany podczas wystapienia przerwania Dim Licz_8ms As Byte 'deklaracja zmiennej Enable Interrupts 'aktywacja globalnego systemu przerwan Enable Timer0 'aktywacja timera0 Counter0 = 131 'wpisanie wartosci początkowej do timera0 Dim Sek As Byte 'deklaracja zmienna zawierajaca...
Da się w bascomie zrobić to wszystko co Ci radzimy o rsie. Poczytaj o Config Serialin = Buffered i Bytematch All. Powinno się nieco rozjaśnić. Dodano po 5 Dodano po 45 A głównym problemem i tak pozostają zakłócenia, niezależnie czy zmienisz te przerwania czy nie. Więc tak, czy ta skretka idzie w pobliżu 230vac? Czy na każdej płytce masz elektrolity...
Stos OK. Mówię Ci. Skasuj flagę przed "Enable INT1". Generalnie kolejność mam w kodzie taką: Config Int0 = Falling 'opadajace zbocze wywoluje przerwanie Config Int1 = Falling 'opadajace zbocze wywoluje przerwanie Config Timer0 = Timer , Prescale = 8 'konfiguracja Timer0 jako timera z preskalerem przez 8 'Przerwanie od przepelnienia Timer0 jest generowane...
Witam Troszkę przedobrzyłeś s tym licznikiem 16 bitowym, starczy połowa 8 bitowego, wróćmy do obliczeń, autor pisze o 4 impulsach na obrót, Ty o 2 i to wydaje mi się bliższe prawdy. Maksymalne obroty 7000, na sekundę daje nam to koło 117 obrotów, chcesz mierzyć 0,5 sekundy i i dwa impulsy na obrót czyli 117 impulsów przy maksymalnej prędkości obrotowej....
crazy_phisic = faktyczne to mój błąd z różnych testów i kombinacji... m.bartczak = tu również to jedynie błąd z testów. Sprawdzałem na różnych timerach. I przy wklejaniu kodu nie zmieniłem tego. W ramach testu zmodyfikowałem kod, tak aby co 1000 przerwań (czyli teoretyczne 1000*1ms) dał mi 1ms impuls na diodę: $regfile = "m88def.dat" $crystal...
Witam, mm sobie zegar i termometr. W programie na samym początku jest odwołanie do dwóch podprogramów: pomiar temp, oraz obliczenie godziny, a następnie powrót z tych podprogramów i wyświetlenie wszystkiego za jednym zamachem. Ale ponieważ pomiar temperatury jest na ds18b20 więc potrzebuje 750ms na pomiar, a to wpływa na wyświetlanie sekund na zegarze...
Witam W projekcie wysyłanych będzie około 800bytów danych do PC i w PC bedzie na bieżąco wyświetlane. Do czego zmierzam. W czasie kiedy bedę obsługiwać przerwanie od Timer1 może pojawić się sygnał do PC, że dokonywana bedzie tramsm,isja. W atmega8 nie mozna ustawiać priorytetów przerwań w odróżnieniu do 8051. Kiedy pojawiało mi się przerwanie do timer1...
Witam Postanowiłem zbudować miernik odległości wykorzystujący ultradźwięki. Zakupiłem 2 czujniki w TME http://www.tme.pl/przetwornik-ultradzwie... http://www.tme.pl/dok/b14/100902_bpu-164... Jednego używam do wysłania fali a 2-go do odebrania. Po przejrzeniu postów na Elektrodzie i innych www...
Jest to zegar zasilany z baterii - wyświetlacze załączane na krótki czas po naciśnięciu przycisku, by można było ujrzeć godzinę . W pętli głównej jest realizowana zamiana wartości w zmiennych bajtowych wskazujących godzinę na postać, którą mogę wyświetlić na wyświetlaczu LED. W przerwaniu od TIMER0 jest kod odpowiedzialny za multipleksowanie wyświetlaczy...
mogę pomóc, ale w C, w BASCOMie sobie już sam pokminisz, bo algorytm działania jest wszędzie taki sam :) na początek wpychamy zewnętrzny kwarc 11.059200 MHZ + 2 kondensatory x 22pF, w nagłówkach należy dodać: #include <avr/interrupt.h> przed int main'em należy dodać: #define HI PORTC=0xFF; SIGNAL (SIG_OVERFLOW0)// funkcja obsługi Timer'a0...
A jednak dziś jeszcze przepisałem to INT0. Działa choć czasem są problemy z odczytem temperatury, ale to pewnie dlatego że za dużo powstawiałem disable/enable interrups. No i przestawiłem moją Atmegę na trochę szybszą:) W takim razie spróbuję jeszcze z Timerem. A jaką najmniejszą rozsądną jednostkę odmierzania czasu sobie przyjąć żeby było O.K.? 1 ms...
Zrobiłem program sterujący 4 urządzeniami i mierzącymi 2 temperatury jednak po dołożeniu tych 2 procedur mierzących temperaturę szybkość reakcji przy wysyłaniu z komputera znacznie spadła (tzn. ze np. wysyłam "1" powinno praktycznie od razu włączyć wejście portb.1, a teraz trwa to sekundę), zastanawiam się czy istnieje możliwość zagnieżdżenia programu...
Witam Ponieważ nie do końca odpowiadają mi podane rozwiązania, zacznę od tego co powinienem na początku podać - ossochosi :) Programuję w bascom. Buduję układ który ma zadziałać jak uproszczony ABS: 1. pomiar prędkości obrotowej każdego koła 2. porównanie tych prędkości 3. min. 10 razy na sekundę reakcja na utratę przyczepności Doszedłem do takiego...
Macie panowie racje. Generalnie to dawno temu zaczlem przygode z bascomem wtedy na 89C4051 ale poleglem i dalem sobie spokoj na wiele lat. Teraz wrocilem do tematu. Zaczalem od prostackich programow gdzie np delay 1sekunda sluzyl mi do mrugania ledami itd. Wstawialem takich delai wiele i mi diodki mrugaly jak cos tam mialem zglosic. Ale zaczalem sie...
Witam wszystkich, Tak jak w temacie: Poszukuje sprawnego programu aby zrobić zegar LCD na ATMEGA8. Program musi być w języku bascom. Znalazłem coś takiego ale nie działa :/ Opoźnienie sekundy wynois jakies 4s 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk...
Problem polega na tym, aby pomierzyć ilość impulsów jaka upływa pomiędzy kolejnymi pomiarami czujnika. Chodzi o to żeby timer1 zliczający impulsy po wykonaniu pomiaru przez czujnika wyświetlał ich ilość, a następnie zliczał kolejne impulsy upływające do wykonania 2 pomiaru itd. Zamiast czasu podawać na monitor zliczone impulsy pomiędzy kolejnymi pomiarami....
Witam Mam taki program w symulatorze działa tak jak bym chciał czyli po nacisnięciu przycisku dioda sie zapala i po kilku sekundach gasnie ale po wgraniu do atmegi 8 niedziała prawidłowo czyli diode można zgasic i zapalić ale już nie gasnie po kilku sekundach.Czy ktoś wie czemu??? $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11111111...
Witam Już dłuższy czas męczę się z banalnym jak mi się wydawało zagadnieniem wybudzania procesora z PowerDown. Wybudzanie chciałem zrealizować na wejsciu INT0. Samo wyzwalanie przerwania działa podczas pracy, gorzej w momencie kiedy ustawię PowerDown. Przerwanie juz się nie wykonuje. Poniżej fragment kodu [syntax=basic4gl] $regfile = "m8def.dat" $crystal...
Witam Od pół roku montuję i modyfikuję wielozadaniowy układ do samochodu osobowego, oparty o Atmega8 (program Bascom). Funkcje: -pomiar temperatury i ciśnienia oleju -pomiar składu mieszanki -pomiar temperatury cieczy chłodzącej -odczyt zerowego położenia przepustnicy -pomiar prędkości obrotowej silnika (pomiar czasu między impulsami zapłonowymi) -regulacja...
Chciałem przedstawić mój pierwszy projekt w BASCOMie. Jest to moduł komunikacji mikrokontrolera z telefonem komórkowym poprzez sprzętowy UART. http://obrazki.elektroda.net/97_12540699... W projekcie wykorzystałem uC Atmega8 i telefon SE T300. Wykorzystałem ten model, bo akurat taki miałem i okazało się, że przypadkiem ten model ma pewną zaletę....
Witam. Co prawda były już podobne tematy, ale nie znalazłem odpowiedzi na swoje pytania. Napisałem sobie prosty program zegarka w Bascomie który wyświetla stan na lcd (hd44780). Dołączyłem zewnętrzny kwarc 16MHz i ustawiłem fusebity aby z niego korzystał (SUT:10; CKOPT:0; CKSEL:1111). Zegar oczywiście się spóźnia. Początkowo ustawiłem prescale timera0...
Świetny zegarek, starannie zrobiony i przemyślany. Do nextępnego projektu kilka uwag, wtedy zrobisz perfekt zegar: -dwukropek wygaszany + sterowalne kropki -wyświetlanie ujemnych i dodatnich temp. na tych samych pozycjach. Choćby płaska dioda jako minus Z tym dwukropkiem rzeczywiście mogłem go o jeden stopień przesunąć w bok no ale cóż następnym razem:)...
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...
Witam Jeśli urządzenie nie jest zbyt prądożerne to można w szereg, na dodatnim biegunie zasilania, za mostkiem Graetz'a dać diodę 1N400x. Między plusem mostka a anodą wspomnianej diody wpinasz dzielnik napięcia. Za diodą prostowniczą dajesz sobie oczywiście kondensatory stabilizatory i co tam jeszcze chcesz. W każdym razie na dzielniku masz napięcie...
Szukałem odpowiedzi na to pytanie, lecz nie znalazłem, wiec postanowiłem rozpocząć nowy temat. Otóż mam problem z liczeniem kanałów DMX, a dokładnie z timerem0 którego używam w tym celu. Mikrokontroler to jak w temacie ATmega8, częstotliwość taktowania 8 MHz, ustawienia sprzętowego UART 250 000 baud. Według specyfikacji DMX najpewniej rozpoznać nowy...
Witam, ...przecież nie sprawdzasz przerwania od zakończenia pomiaru, sygnalizowanego na linii "RDY". Proponuje zrobić coś takiego: $regfile = "m8def.dat" $crystal = 8000000 $lib "i2c_twi.ibx" config lcd = 16*2 config lcdpin= pin, db4= portb.3, db5=portb.2, db6=portb.1, db7=portb.0, e=portb.4, rs=portb.5 sonar_r alias portc.3 'konfiguracja...
Dziękuję za zainteresowanie tematem !!! Chwilowo wystąpił u mnie brak czasu i przystopowanie projektu ale mam nadzieję że w tym tygodniu będzie już lepiej. Na początku kilka przemyśleń „do użytkownika nsvinc ” odnośnie C+ czy asemblera wiem że jest on dużo dokładniejszy i nie mam co do tego wątpliwości jeżeli chodzi o zagadnienia związane...
Witam Próbuje zrobić zegar z książki Marcina Wiązania "Programowanie mikro kontrolerów avr w języku Bascom" Przepisałem cały program z książki, podłączyłem według schematu http://obrazki.elektroda.pl/8287318100_1... , i niestety na lcd pojawiają się kwadraciki. Programator mam usbasp, i program mkAVRCalculator. W zakładce fusy uproszczone...
Podsyłam prosty programik z polskiego helpa do bascom-avr. Bardzo dobrze obrazuje zasade wysylania i odbierania sygnalu szeregowego. Wiem, że niby temat jest zamknięty, ale może kolega jeszcze tutaj zerknie, a jak nie, to będzie dla innych :) '---------------------------------------... ' RS232BUFFER.BAS ' (c) 2000-2002, MCS...
Steruje dwoma silnikami, jednak chciałbym aby jeden z nich się zatrzymał i zaczął cofać przez kilka sekund w momencie załączenia krańcówki. Podpięcie pinów opisane w kodzie. Krańcówka pod INT0 i pod INT1 i z drugiej strony do masy. Wąs = krańcówka. $regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Output 'dioda Config Portd.7 = Output...
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ę...
Zajrzyj sobie do noty katalogowej. Tak de fakto ten układ jest poprany, bo nietypowo koduje informacje o dacie. Masz tu fragment mojego kodu powinien ci pomóc w rozgryzieniu problemu. To definicja i opis rejestrów PCF8583. 'Deklaracja rejestrów dla zegara czasu rzeczywistego PCF8583' Const Rtc_in_adres = 160 'Adres do zapisu danych A0 do GND Const Rtc_out_adres...
Witam! Pierwsze kroki z uC, czyli próba stworzenia zegara matki dla czasomierza podobnego do $regfile = "m8def.dat" $crystal = 2000000 Config Pind.0 = Output Config Pind.1 = Output Config Timer1 = Timer , Prescale = 64 Dim Licz_2s As Byte Dim Parz As Bit Enable Interrupts Enable Timer1 Load Timer1 , 62500 Licz_2s = 0 Parz = 0 Do Loop End Odmierz_1m:...
lok56 -> no tak można by było - tylko wiesz? wszystko zależy w jakiej konfiguracji masz procka na którym chcesz używać tego bootloaderka. Bo np musi być inaczej skompilowany z innymi parametrami zależnymi m.inn od zastosowanego taktowania procka, prędkości RS232 itp ale jeszcze raz opiszę kilka kroków, które sam możesz wykonać - nawet zupełnie nie znając...
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...
Witam wszystkich, pewnie juz nie raz czytaliscie takie tematy...A tu kolejny ;) Przegladalem wiele tematow o komunikacji z pcf8583, wiele kodow z nich przetestowalem i nic. A tradycyjnie problem jest taki, ze przy odczycie godziny dostaje krzaki. Przypuszczam ze nie dziala komunikacja po i2c, bo nie ma znaczenia czy pcf jest zasilany czy nie, otrzymuje...
Doprowadziłem program do takiej postaci: ............ Wydaje mi się, że to wina tego, że jak przyjdzie przerwanie w czasie obsługi wyświetlacza to się coś kiełbasi. Przerwanie od przepełnienia stosuje po to, by móc mierzyć też dłuższe odcinki czasu, np w przekaźnikach czasowych. Jeszcze jedno pytanie. Dlaczego program z pierwszego postu nie działa?...
Witam Ostatnio złożyłem z książki Marcina Wiązani-"Programowanie_mikrokontrolerow_... dwa układy zegarka i termometru. Próbowałem połączyć te dwa układ i napisałem taki program $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 ,...
Witam, Od kilku dni borykam się z problemem odbioru i wyświetlenia odebranej temperatury na wyświetlaczu odbiornika. Zmienną nadaje układ pomiarowy z atmega8 poleceniem print zmienna. Odbieram w terminalu ta zmienna bez problemu. Odbiornikiem jest również układ z atmega8 który na wyświetla odebraną temperaturę na wyświetlaczach 6 *7led . Wyświetla przez...
atmega8 przerwanie bascom przerwanie atmega8 przerwanie bascom
zamiennik tda7560 demontaż panelu zmywarki amplituner instrukcja
elektrownia wiatrowa radio alpine jakie kupić
Kompatybilność kół Yamaha Neos 2014 i 2004 Kamera samochodowa nie łączy z gniazdem zapalniczki