Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
W przerwaniu Int0 inkrementuj zmienną. Ustaw timer na jakąś jednostkę czasu i w przerwaniu od tego timera obliczaj cześtotliwość i zeruj zmienną
Instrukcja Wait nie stopuje procesora. Procesor odlicza czas poprzez zmianę wartości rejestrów a więc działa. A skoro działa to powinien także odczytać informację, że nastąpiła sygnalizacja od przepełnienia Timera. Spróbuj zastosować tą instrukcję. Tylko nie wywołuj jej w obsłudze przerwania a w pętli głównej. Bo gdybyś wywołał jej obsługę w przerwaniu...
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...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
Ten sam kod, który zaprezentowałem w pierwszym poście , natomiast przerwanie wywołane już na nodze portb.0 i działa zmienna nie jest nadpisywana. Cała reszta kodu bez zmian poza zmianą przerwania. Przerwania skonfigurowane prawidłowo. Moze przerwania masz skonfigurowane prawidlowo... ale..... Czy mozesz wyjasnic w jakim celu, w obsludze przerwania...
Zawsze jak wchodzisz w przerwanie np.On Timer lub w podprogram sub procesor odkłada zawartość pewnych rejestrów na stos (co zajmuje mu ileś us) a po przerwaniu (lub sub-ie) zdejmuje ze stosu (co znowu zajmuje czas). Rachunkowo wygląda wszystko dobrze w programie-ale tylko gdy procesor chodzi z nieskończoną prędkością. A chodzi ze skończoną. A-w tych...
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
Bo kontaktrony w licznikach rowerowych są jakieś szybsze. Robiłem kiedyś eksperymenty z rowerem i faktycznie zwykłe kontaktrony "rurkowe" nie nadążały się przełączać. Pierwszy z brzegu kontaktron KA-02 ze sklepu na literę T przy napięciu 5V i i prądzie 100mA ma częstotliwość przełączania 125Hz. Czas załączania do oporu 1Ohma wynosi ok 2,5 ms Czas odpuszczenia...
Kwarc wstaw w obu przypadkach nawet 16MHz. Baudrate jest zależna w zasadzie od jego dzielnika niż od kwarcu. Nie szalej też z dużą szybkością bo błędy mogą wyskoczyć, zacznij od 4800 bps. Połączenie po UART masz zrobić sprzętowo! Timer niech ci obsługuje multiplexing, główna pętla programu sprawdzanie czy w UART coś przyszło i przepisywanie do tablicy....
Dosyć odważnie sobie poczynasz na mikrokontrolerze mającym 2kB Flash i 128B SRAM :D ale do odważnych świat należy. Odchudziłem Ci trochę kodzik. Obsługa przerwania timera została stuningowana moim programem NoSave Tool. Teraz mikrokontroler nie odkłada na stos większości rejestrów a tylko te potrzebne - w tym przypadku tylko jeden :D Przekłada się to...
http://obrazki.elektroda.pl/7139682100_1... Witajcie Wlasciwie jest to moj pierwszy temat na forum wiec prosze z gory o wyrozumialosc. Przepraszam rowniez, za brak polskich fontow, ale pomimo prob wielu nie ogarniam wiekszosci ogonkow z racji lokalizacji :/ Przyszly swieta, czas urlopu i odpoczynku... Niestety wraz ze swietami przybyla...
(...) żdy zasilany z osobnego źródła i odseparowany transoptorami PC817. Ze względu na ich szybkość oraz niską wartość prądów je sterujących 1mA zegar musi być obniżony do 10KHz ma. Chcę zrezygnować z polecenia: waitus 100 w zamian zrealizować to w obsłudze timer0 a w główną pętle przeznaczyć na inne cele. Rozumiem, że chcesz optymalizować swoje oprogramowanie...
http://obrazki.elektroda.pl/9838687700_1... Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę:...
Mam pytanie odnośnie bascoma AVR i komendy RC5SEND. W pliku pomocy napisano, że komenda używa timera 1 i wyprowadzenia procesora. Do generowania komend należy podpiąć pod OC1A. Czy mogę użyć tego samego timera do generowania przerwań np. co 1 sekundę z przerwaniem, aby program wykonywał mi jakąś swoją procedurę czy muszę wykorzystać do tego celu timer...
Przyznam, że najlepiej byłoby uruchomić sprzętowy debuger, którego Bascom nie ma :-( Sprawdź czy timer 1 zachowuje się tak samo. Bascom to taki człowiek zagadka ,z którejś części Batmana.
Dodajmy, że kiedfy pilot nie nadaje, odbiornik odbiera śmieci i wystawia na wyjściu przebieg prostokątny, któego zbocza są dużo gęstsze niż podczas odbioru danych, a każde zbiocze będzie w takim przypadku generowało przerwanie. Dlatrego lepiej jest odbierać w przerwaniu timera, a nie używać przerwań od zboczy. To jest oczywiste, ale.. odbiornik RF...
W zegarku z wyświetlaczem najwygodniej robić wszystko w jednym przerwaniu timera. Program główny inicjuje procesor i idzie spać.
A to przepraszam jeszcze dużo rzeczy nie wiem :) Czyli poczekać na zbocze narastające, wtedy w przerwaniu odpalić licznik iii no właśnie jak to zrobić żeby nie czekać w przerwaniu na stan niski żeby zatrzymać timer ??
Tak, lecz jest to sytuacja, którą opisałem w poście #3. Z drugiej strony, ja bym przedstawiony przez ciebie problem rozwiązał inaczej - w dwóch przerwaniach. W przedstawionej sytuacji wysyłkę można zrobić całkowicie w oparciu o przerwania USART, a timer niech robi to do czego służy :) A jakieś inne różnice?
Proszę postępuj zgodnie ze schematem użytkowym, który załączyłem (post #4 21 Lip 2015 21:39). Tam jest przedstawione gotowe rozwiazanie. Zacisk 21 podłączasz do masy, zaś zacisk 20 do GPIO. Stanem aktywnym jest zwarcie pinu GPIO do masy. Następuje to w momencie pojawienia się impulsu (dokładnie w momencie kiedy na ORNO mrugnie dioda). Dalsza procedura...
Jakie są założenia co do rozdzielczości oraz stabilności generowanej częstotliwości (jitter) ? Generacje częstotliwości kHz na AVR najlepiej zrobić przez zastosowanie DDS. jeden timer w ctc generuje przerwanie w równych odstępach, resztę załatwia się w przerwaniu (trochę tylko kiepsko bo bascom zmarnotrawi dużo czasu- najlepiej tę część napisać w asm).
OK dziękuję wszystkim za pomoc, rozumiem że Timer będzie liczył czas non stop aż nie nadejdzie zbocze narastające i nie dojdzie do komendy stop timer1? Chodzi mi o to że włączam go w przerwaniu a potem się ono kończy i czy timer wtedy nie zakończy zliczania?
A nie możesz wykorzystać przerwania od zbocza np INT0? Jak pojawi się dodatnie zbocze to robisz krótki sygnał i program pracuje dalej. Dopiero jak ktoś puści przycisk i znów naciśnie pojawi się znów zbocze narastające które może wywołać przerwanie. Ideałem byłoby abyś po pojawieniu się przerwania od narastającego zbocza, włączał Buzzer potem uruchamiał...
JacekCz Dzięki ale tam piszą o skomplikowanych rzeczach... A tu prościej już sie nie da: w przerwaniu tylko ładuję timer, zmieniam stan portu i nic więcej... Wygląda na to że ktoś mi tu skraca timer bez mojej zgody? Dodano po 5 (at)niveasoft sparwdzam Twój kod, ale Compare_a i Compare_b są niezrozumiałe dla kompilatora... Dodano po 7 (at)niveasoft...
A tak to by to zadziałało ?? Nie zadziała. Przynajmniej tak, jak tego oczekujesz. Przy kwarcu 2,4576MHz i prescalerze 64 Timer0 przekręca się co ok. 6,7ms a Timer1 co ok. 1,7s. jak ustawić timer żeby odliczał np 1 sec i wtedy coś się działo 1. Zdefiniować co się ma wykonać w przerwaniu 2. Włączyć przerwania od timera 3. Włączyć globalne zezwolenie...
A możesz powiedzieć po co przed i w przerwaniu ładujesz timer wartością 65536 czyli wartością nie mieszcząca się w 16 bitach? W takim przypadku go zerujesz, no chyba, że Bascom co innego tam ładuje w przypadku takiego bledu...robiw Dodano po 4 Nie napisałeś też jakim zegarem taktujesz procek i nie widzę też ustawienia kierunku portu portd.1.robiw
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.
Tym razem podam wędkę :P Łatwo wyliczyć dla jakiego rezonatora są te ustawienia mimo iż go nie zapisałeś. Timer0 potrafi liczyć do 255, ale w przerwaniu programista ładuje już timer wartością 5 więc do odliczenia zostaje mu tylko 250... Timer ma włączony preskaler 256 czyli taktów musi być 250x256=64000 Procesory mają podane taktowanie w Hertz`ach czyli...
Może sie komuś przyda ... działajacy kod sprawdzałem testowalem niby wszystko działa czestotliwosc PWM = 123 Hz $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output 'Konfiguracja 4 pinów wyjściowych PWM Config Pinb.2 = Output Config Pinb.3 = Output Config Pinb.4 = Output Dim Wyp(4) As Byte 'zmienne wypełnienia Dim Licz...
Sylwekk też dobrze gada. Ale trzeba pamiętać że: 1) zawartość przerwania musi się wykonać szybciej niż odstęp pomiędzy przerwaniami 2) jeśli w przerwaniu robisz Load Timer i zależy ci na jakiejś precyzji odmierzania czasu to ten Load musi być zawsze pierwszą instrukcją w przerwaniu, a nie którąś z kolei.
Może wkleję cały kod : $regfile "m32def.dat" $crystal = 8000000 Dim Zmianna As Byte Dim Porownanie As Byte Config Portc.1 = Output Config Timer0 = Timer , Prescale = 1 Config Int0 = Rising On Int0 Zero Porownanie = 255 Enable Interrupts Enable Timer0 Counter0 = 255 Glowny: Set Portd.2 Start Timer0 Do Loop End Zero: Stop Timer0 Reset...
Można PWM-em sterować wejściem OE 74xx595. Ważne, aby ten sam timer w przerwaniu od przepełnienia wysyłał dane do rejestrów. W ten sposób można niezależnie regulować jasność każdego wyświetlacza. Inne rozwiązanie to rejestry szeregowo-równoległe z driverami. W nich prąd ustala się jednym rezystorem. Trzeba by sie wgryźć w budowę takiego układu i można...
Witam. Mam panowie taki problem. Coś mi nie pasowało z czasem odliczanym przez atmege w przerwaniu timer1 [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Timer1 = Timer , Prescale = 1024 On Timer1 Czas1us Enable Interrupts Load Timer1 = 15625 Enable Timer1 Dim Zmienna As Double Do Loop End Czas1us: Print "###" Load Timer1...
Witam, dziekuję za odpowiedzi. (at)yokoon Dlaczego load timer miałby być w programie głównym? W głównym być nie może a w przerwaniu jest niezbędny. (at)M. S. Tak, tryb CTC to alternatywne rozwiązanie. Spróbuję czy to coś zmieni. (at)emarcus nie masz co robić? To poczytaj ze zrozumieniem. Tu pytam o możliwość skrócenia pojedynczego cyklu, a w drugim...
Nie znam Bascoma ale metoda jest prosta. Uruchamiasz timer i przy jego pomocy sprawdzasz czy sekundy się zmieniły i jak sie zmieniły to je wyświetlasz. Możesz to zrobić w przerwaniu od timera i ustawić flagi a potem odpowiednio reagować na nie w pętli głównej albo wszystko obsłużyć w przerwaniu.
A jak bym ustawił OCR2A i OCR2B na tę samą wartość to by działało ? A jeśli nie to w przerwaniu od OC2B wystarczy wyzerować timer ? np TCNT2= 0 ? Czyli zapis WGM22:0 zrozumialem prawidłowo. Może to pytania banalne, ale moja znajomość budowy wewnętrznej AVR jest nikła. :)
No wlasnie, tylko czemu zmiana na wyswietlaczu nastepuje co 1 sekunde?. Jak nie ustawiam load timer to czas miedzy zmianami jest ten sam. Rozumiem ze timer1 jest 16bitowy zlicza do 65536. Ile nie ustawie load timer1 = 250 czy 65100 to zmiany nastepuja w podobnych odstepach czasu. A ja potrzebuje uzyskac rowno 100ms na przerwaniu
Nie piszesz nic o pozostałych parametrach układu więc zakaładam, że uC chodzi na wewnętrznym RC=8MHz... Wygodnie jest wykorzystać timer1 (16-bit)... Mode 14 - fast pwm, wartość top (ICR1=10000), prescal=1... Przy takiej konfiguracji częstotliwość pwm wynosi ~800Hz, co dla żarówki jest aż nadto... Wyjście pwm PB1(OC1A)... Wypełnienie zwiększane o 1 co...
pixel7 ale bzdura. Nie wydaje mi się. Co do problemu. Możesz użyć jakiś timer i w jego przerwaniu skanować stan pinu. Sposobów jest wiele.
Zobacz sobie krótki opis Przeczytałem artykuł, rozumiem wszystko poza 2 sprawami. Mianowicie To dzielimy przez 100 i otrzymujemy wynik 78,125 . Od takiego wyniku odejmujemy jeszcze jeden i mamy gotową wartość jaką Timer musi odliczyć żeby zgłosić się 100 razy na sekundę. Dlaczego dzielimy przez 100 i dlaczego odejmujemy 1 ? Co robią polecenia [syntax=vbnet]Compare...
Można i tak lecz chciałem zamknąć wszystko w jednym uC i wykorzystać wewnętrzny RTC Atmegi. Żeby zwolnić któryś timer wystarczyło by, odbiór Rc5 zrealizować w przerwaniu INT0 albo INT1 jak wcześniej wspomniał kolega Mariuszek15 pozdrawiam
Witam, nie znam Bascom i dość słabo Atmega. Podejrzewam jednak, że problemem jest realizowane w przerwaniu ładowanie timera nową wartością. Przyjęcie przerwania wymaga jakiegoś czasu, a timer cały czas "cyka". Kiedy ładujesz go obliczoną wartością (250) zdążył już coś naliczyć, w związku z tym Twój zegar się późni. W efekcie dobierasz eksperymentalnie...
Ten timer 0 jest raczej nie potrzebny. Za bardzo komplikujesz sprawę. Zrób tak: $crystal = 12000000 Config Timer1 = Timer Gate = Internal Mode = 2 Config Timer0 = Tiemr Gate = Internal Mode = 2 Enable Timer1 Enable Timer0 Enable Interrupts Dim P1 As Byte Dim P2 As Byte pwm: // to sie robi jak przerwanie z timera przychodzi inc P1 // inkrementacja...
No właśnie jakiś podstaw tutaj nie rozumiem, stąd błędne działanie całości... Bodajże w tym temacie pojawił się programik "kalk" by Artur Starz, w programiku tym ustawiam, że taktowanie 16 MHz, timer 1, preskaler 64. Po obliczeniu otrzymuję, że timer zwiększy się co 4 us, a przerwanie wykona się co 0,262144 s -> czyli x1000, otrzymujemy 262,11 ms ....
Ja trochę nie rozumiem: po co Ci i przerwanie i timer? 1. Chcesz liczyć timerem to na P3.4 podajesz liczone impulsy, a timer konfigurujesz jako counter i podajesz które zbocze impulsów ma zwiększać stan licznika. 2. Chcesz liczyć przerwaniem to impulsy podajesz na P3.2 i znowu: podajesz które zbocze ma wyzwalać przerwanie. W przerwaniu zwiększasz dowolną...
W pseudokodzie: 1. Ustaw timer na częstotliwość powiedzmy ok. 100 kHz, przypisz do niego przerwanie i aktywuj przerwania 2. Stwórz dla każdego kanału zmienną typu PWM_CHn W przerwaniu od timera 1. Zmienna COUNTER = COUNTER + 1 2. dla każdego kanału 0...n: Jeśli COUNTER < PWM_CHn to zapal diodę, w przeciwnym razie zgaś 3. Ewentualnie jeśli chcesz...
W przerwaniu robisz Enable Interrupts zanim włączysz Timer0, co może powodować problemy. Poza tym procka taktujesz 12MHz. A Timer0 z preskalera 1024. Czyli Timer0 dostaje 11718.75Hz. W przerwaniu zliczasz do 15000. I to Ci daje okres jak mówisz około 4 sekundy. Czyli na sekundę jest 3750 przerwań. Co oznacza że pomiędzy przerwaniami Timer0 zlicza do...
Witam!! Troche nie wiem co sie dzieje. Wykorzystuje przerwanie od timer1.W procedurze obslugi przerwania umiescilem odwolanie do innej procedury lacznie z parametrami.Wyglada to tak: Config Timer1 = Timer , Prescale = 256 Dim X As Byte Dim Y As Byte X = 0 Y = 255 Cls Declare Sub Wyslij(x As Byte , Y As Byte) Enable Interrupts Enable Timer1 On...
Wystaw to samo na kilku pinach i po któryś podłącz zwykłego LED-a :) Co do sygnału to musisz z nim działąć w okolicy 36 kHz , więc albo timer w przerwaniu i przełączanie pinu w obsłudze przerwania albo PWM kluczowane. Tak czy inaczej musisz zastosować modulator i przebieg podstawowy 36 kHz.
witam. potrzebuję odmierzyć równo 1 sekundę, przykład wziąłem z kodu : http://obrazki.elektroda.pl/8005169500_1...
Witam potrzebuje zrobic program ktory bedzie w odpowiednich odstepach czasu wywolywal przerwanie i w tym przerwaniu bede sobie mogl wykonywac dalsze funkcje problem w tym ze nie dizala mi taki najbardziej podstawowy program Symuluje to w proteusie i nie chce zapalac pinub.1 chodzi mi o taki test powinna sie pojawic 1 na pb.1 przy wywolaniu przerwania...
A start timer to nie jest konieczne do uruchomienia licznika?? Zamiast tego Do 'pętla temonstracyjna zmieniająca położenie serw Wait 4 Pozycja1 = 600 Pozycja2 = 600 Wait 4 Pozycja1 = 115 Pozycja2 = 115 Loop End zrobiłbym raczej coś takiego Do 'pętla temonstracyjna zmieniająca położenie serw Wait 4 timer0 = 250 enable timer0 Pozycja1 = 600 timer1 = 250...
Wszystkie przykłady wykorzystują timer do liczenia impulsów, w którymś temacie też ktoś chciał w przerwaniu int0 liczyć impulsy ale podobno nie tędy droga. Ok. Mogę zrobić tak jak są wszystkie przykłady, ale jak sobie sprawdzić taki częstotliwościomierz? Nie jestem elektronik jak widać zresztą.Dzięki za odpowiedź.
Witam wszystkch. Mam wątpliwości co do odmierzania czasu w Bascom za pomocą Timerów. Sprawa dotyczy procków 51. Proszę o poprawienie mnie jeśli się myle. 1. Timer zlicza w górę od wpisanej wartości do 65535(16bit), Tryb 1. Zadaną wartość ładujemy komendą load timerx, yyyyy 2. Tak więc aby odliczyć 1 sekundę należy np.: 20 razy odliczyć po 50ms więc...
Kamyczek w tym kraju się już nikomu nic nie opłaca :D Wiem że można kupić gotowe, ale ... Po pierwsze, primo - wypełniam sobie wolne chwile Po drugie, primo - mogę poćwiczyć programowanie i ile się przy tym nauczę to moje Po trzecie, primo - satysfakcja że zrobiło się to praktycznie samemu ( z drobną pomocą kolegów z elektrody ) jest bezcenna ... i...
Witam. Spłodziłem termometr na czterech wyświetlaczach 7-segmentowych. Obsługa wyświetlaczy odbywa się w przerwaniu i działa poprawnie. Problemy zaczynają się gdy w grę wchodzi wysyłanie komend do DS-a i odbieranie ich. Na czas komunikacji z DS-em wyłączam timer odpowiedzialny za multipleksowanie by nie wnosił błędów przy wysyłaniu i odbieraniu danych....
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
Problem wygląda następująco, zaistniała potrzeba zrobienia stabilizacji obrotów silnika na poziomie 500 do ok 2000 obr/min enkoder 8 imp/obrót napisałem coś takiego, i pomimo tego że w teorii powinno utrzymywać obroty na poziomie ok 9000 to utrzymuje je w okolicach 1500. [syntax=vbnet]$regfile = "m8adef.dat" $crystal = 8000000 Config Portb.4 = Output...
Podałem wyraźnie, że oprogramowanie napisałem w WinAVR ;) Nie uznaję czegoś takiego jak bascom (wystarczyło mi raz w życiu się na nim przejechać...). Przedstawię "odchudzone" kody źródłowe - aby były całkowicie funkcjonalne należy troszkę dopisać. Ogólna idea jest przedstawiona. Sam main w programie jest niewielki. Dla przykładu pokażę jak zrealizowałem...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
LCD multipleksowo? nie bardzo rozumiem ponieważ multipleksowo sterowana jest sama matryca a za to odpowiada sterownik wyswietlacza(take czarne coś na płytce wyświetacza:)) a co do przepełniania licznika to możesz sobie policzyć częstotliwość występowania przerwania ze wzoru: częstotliwość= crystal/prescaler/x gdzie crystal to częstotliwość oscylatora,...
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ł...
Witam czy ktos moze mnie oswiecic w jaki sposob zapisac wartosc do rejestru Counter1 pod bascomem ? Mam taki prosty program i za nic w siecie bascom nie che go lyknac ............. I taki oto blad ASSIGNMENT ERROR line 8 Procesor ma ten timer w sobie. Jezli to wina bascoma to w jaki sposob zapisac ta wartosc z poziomu jakiejs wstawki assemblerowj ?...
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...
Witam jestem tu nowy aczkolwiek zaawansowany w bascomie AVR Musisz ustawić prescaler i wpisać wartość counter0 lub timer0 żeby przerwanie przychodziło co określony czas. Osobiście się z ty nie zgadzam bo jeśli INT0 to nie timer tylko podanie standardowo zera na jedno z wejść w 8515 jest to PD2 lub INT1 PD3. Ja osobiście dałbym waita pod koniec przerwania...
bascom afe... To zależy jak dokładnie chcesz to mieć, najdokładniej to robisz: - Konfigurujesz timer na precaler 8; - ustawiasz compare match na 100 - ustawiasz tryb Interroput on compare match - włączasz przerwanie od compare match W ten sposób przerwanie od comare match generowane jest co 800 cykli zegara. Czyli dokładnie z freq 10kHZ. W tym przerwaniu...
Witam Chciałem do kuchni wstawić czujnik PIR, ale z dodatkową zaletą, czyli stopniowym zwiększaniem i zmniejszaniem PWM, dodatkowo jeśli podczas zmniejszania PWM nadejdzie przerwanie INT1 od czujnika PIR, to program ma przestać zmniejszać, tylko zacząć zwiększać i to nie od zera, ale od wartości na której "zastało" go przerwanie INT1 od PIR. W sumie...
Najbardziej newralgicznym czasowo punktem jest obsługa INT0- i od tego trzeba zacząć. Odczyt temperatury trwa 3.3ms a wysłanie żądania odczytu 2.5ms. Oczekiwanie na przetworzenie 750ms- ale nic nie stoi na przeszkodzie żeby odczytywać co np. 5s- temperatura nie zmienia się tak szybko. Obsługa wyświetlacza też jest wolna- spróbuj z biblioteką: $lib "Lcd4busy.lib"...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Witaj. Pod ręką miałem ATtiny26 i płytkę ZL4AVR, więc na szybko "popełniłem" programik, który spełnia Twoje założenia. Zmieniłem częstotliwość impulsów (około 2Hz), abym mógł sobie wizualnie sprawdzić prawidłowość działania programu. Programik w poniższej postaci generuje 8 impulsów, potem ma 2 okresy przerwy itd. Dioda LED podłączona do B0 miga w takt...
Cześć sory, że tak późno, ale nie miałem neta bo w router'ku zmieniałem firmware. odnośnie: "musisz zmienić tok rozumowania według mojej wiedzy liczniki działają niezależnie czyli liczą a procesor robi swoje ale przerwanie zmusza procesor do wykonania czynności innych czyli obsługi przerwania czyli obliczenia tej jednej sekundy" Prawie, ale nie do końca....
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...
Proszę. Dosłownie 5 minut bo niektóre rzeczy przekleiłem ze swoich programów. Reaguje na komendy LEDON ->właczy diodę na PORTD.2 i na LEDOFF wyłaczy tą diodę. Prędkość transmisji domyślna dla mojego HC-05 czyli BAUD 38400 [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 8000000 $hwstack=64 $swstack=32 $framesize = 128 $baud = 38400 Config Clockdiv...
Mam pytanie odnośnie ATmegi8-16PI . Napisałem prosty programik w BASCOM wykorzystujący TIMER1 z preskalerem=1. W przerwaniu zmieniam stan jednego z pinów 1,0,1.... aby otrzymać przebieg prostokątny. Wszystko co udało mi się wydusić przy kwarcu 14MHz to na wyjściu 10µs czyli 50kHz. W związku z ty mam pytanie czy jest metoda na wyciągnięcie...
Timer cyka ci co 4ms. Wyliczaj sobie nim sekundy i spokojnie użyj go tez do multipleksowania wyświetlaczy. Co każde przerwanie (czyli co 4ms) załączaj anodę następnego wyświetlacza i wyświetlaj na nim kolejną cyfrę. Cyfry do wyświetlenia pobieraj sobie ze zmiennych np godzina(dziesiątki), godzina(jedności), minuty(dziesiątki) itp. Ale też w tym przerwaniu...
Poczytaj conieco o RC5 RC5 mam ogarnięte, Tam występują dwa bity startu "11", toggle bit, adres i komenda. Problem polega na tym, że adres zapisany jest na 5 bitach, a komenda na 6 bitach. Na żadnej z nich nie zapiszę nawet bajta danych, musiałbym łączyć. Po drugie nie mogę powiększyć tej ramki, musiałbym złożyć ją z kilku. Po drugie to jest również...
$regfile = "attiny2313.dat" $crystal = 10000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 'konfiguracja podłączenia LCD Config Lcd = 16 * 2 Config Timer1 = Counter , Edge = Falling , Noise Cancel = 1 , Prescale = 1 Config Timer0 = Timer...
Dzisiaj trochę popróbuje z pomiarem prędkości obrotowej. Wpadłem na pomysł zwiększenia zakresu timera0. Generalnie prędkość będzie oceniana na podstawie pomiaru okresu sygnału prostokątnego. Wykorzystam Przerwanie INT0 - na to złącze będzie podany sygnał wejściowy. Przy pierwszym przerwaniu zostanie uruchomiony timer0, natomiast przy drugim zostanie...
Pisząc program stanąłem przed problemem odbioru kodu RC5 z pilota ale z użyciem przerwania. O ile w BASCOM 8051 GETRC5 w przerwaniu działa doskonale, to w BASCOM AVR jest to kompletna porażka. Wadą Bascomowej funkcji GETRC5 jest: 1) Dziadowskie działanie w przerwaniu (niby działa ale traci pierwszy pakiet z pilota) 2) Zastosowanie jej w programie powoduje...
Aha zapomniałem napisać,funkcja encoder jest w przerwaniu bo gdyby byla w pętli , za wolno by sie wykonywała ze względu na odpowiedni czas odświeżania dla lcd... to spróbuj odwrotnie lcd w przerwaniu a enkodery w pentli To to już wogle nie działa :/.Zauważyłem ze gdy odczytywałem zmienne enkoderów czyli A i B.W jednym kanale gdzie poprawnie incr. i...
P.S. Zapomniałem napisać że programuję w BASCOM AVR Mozna sie domyslic.. po tym: unikam jak ognia poleceń GOTO w polaczeniu z Używam mikrokontrolerów AT90S2313 i ATMEGA8 Ale do rzeczy. Licznik watchdoga musisz zerowac, jak juz wspomniano, w kazdym podprocesie, ktory wykonywalby sie w najmniej sprzyjajacych warunkach dluzej niz max czas dopuszczalny...
Witam Napisalem sobie program w Bascomie ktory liczy czas stanu niskiego na pinie INT0. Powiedzmy ze wszystko dziala wporzadku ale zastanawia mnie jedna rzecz. Ponizej przedstawiam kod programu. Atmege48 idzie na 8 MHz, czyli jeden takt zegara=125ns ?? Czas licze poprzez Timer1(16 bitowy), W przerwaniu od przepełnienia licznika Timer1 napisalem procedurke...
Należy "podpisać" przesyłane zmienne tak by mikrokontroler jednoznacznie wiedział z którą ze swoich zmiennych skojarzyć ma przesłaną wartość i w niej ją zapisać. Wiele urządzeń ma swoje własne sekwencje bajtów po których własnie mikrokontroler jest w stanie określić co nadeszło. Takie sekwencje nazywają się "ramką". Na przykład System NMEA 0183 z odbiorników...
' czestotliwość $crystal = 20000000 'procesorek Atmega8 mój ulubiony :) $regfile = "m8def.dat" '$regfile = "attiny2313.dat" 'stosy, jak program będzie działał to mozna je pozminiejszać $hwstack = 32 $swstack = 10 $framesize = 10 Const Ile = 12 ' ilość miejśc po przecinku w przyblizaniu, im wiecej tym dokładniej liczy ale...
Witam. Mam zrobioną matrycę LED z sześciu wyświetlaczy 8x8. Sterowanie poprzez PORTA (ULN2803) procesora dla kolumn i HC595 dla wierszy. Męczę się już od jakiegoś czasu, ale nie mogę dać rady z jedną rzeczą. Podczas przewijania tekstu widzę go rozmytego, tak jakby byłu dwa napisy na sobie, ale przesuniętę o jeden piksel w bok (pogdubione litery). Ogólonie...
na każdym który napiszę jest tak samo, w nowym temacie powyżej podałem ustawienia fuse bitów, zaraz wkleję kawałek na którym teraz się bawię Dodano po 4 to kod na którym teraz się bawie '***************************************... '-------------------- konfiguracje ----------------------------------------... $regfile...
Okay. Przeniosłem to usypianie do głównej pętli. Nic by to jednak nie dało gdybym nie napisał o co w tym chodzi. Te GOTO to przemilczę bo to inny temat. Miałeś tam też poplątane zakończenia Subów. To znaczy, że w jednym Sub miałeś jeszcze kilka innych i każdy z nich miał Return a pod uwagę brany jest pierwszy return --eh :D Żeby się nie zakręcić więc...
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Witam, postanowiłem zbudować sobie miernik pojemności i indukcyjności. Znalazłem w internecie kilka rozwiązań, ale swój projekt chcę oprzeć następujące rozwiązanie: http://www.avrprojects.info/avr-projects... O ile znana jest mi metoda pomiaru i obliczenia indukcyjności i pojemności w obwodzie rezonansowym,...
Dokonałem optymalizacji kodu, rozmiar zmniejszył się o 2 %. Pilot RC5 działa, można zmienić czas/date, obsługę wyświetlania przeniosłem do przerwania Ale mam kłopot z wyświetlaniem kropki [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 ' rozmiar stosu sprzętowego $swstack =...
Witam. Dziękuję za radę, dzięki niej ruszyłem z projektem nieba. Na ta chwile wygląda to tak jak na filmiku. Tak, oczywiście z tym kwarcem to pomyłka, Atmega 32 taktowana jest z częstotliwością 16MHz. Umieszczam także kod źródłowy jaki wyskrobałem. wszelkie uwagi mile widziane. https://filmy.elektroda.pl/83_1416058356... Dodano po 5 ...i jeszcze jedna...
No dobra, załączam swoje wypociny (12 lat przerwy w programowaniu.... ) $regfile = "m8535.dat" $crystal = 16000000 $baud = 9600 Config Portc = Output Config Pina.2 = Output 'buzer Config Pina.3 = Output 'katody Diod Config Pina.4 = Output 'w1 Config Pina.5 = Output 'w2 Config Pina.6 = Output 'w3 Config Pina.7 = Output 'w4 Config Portb = Input ' wejście...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Witam! Sterownik lcd t6963. Bascom Jak zrobić czyszczenie ekranu? Próbuje cls, cls text, cls graph, ale nie działa... Mam podprogramy, i chce wyczyścic ekran po przejsciu do następnego podprogramu. Niestety nie działa czyszczenie ekranu.. Kod wygląda na razie tak: ........................................... [syntax=basic4gl]$regfile...
Tak właśnie mam tak zrobione. Ale wolałbym jednak móc podawać ID czujnika do odczytania do funkcji np tak: Declare Function Myfunction(Byval I As byte) As string Z = Dsid1(1) ' ID czujnika 1 T = Myfunction(z) Function Myfunction(byval I As Byte ) As String 1wreset 'Resecik 1wwrite &H55 'Będzie odpowiadało tylko urządzenie...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
Problemem jest to: [syntax=vbnet]Call Obrot[/syntax] Skoro "Obrot" to wektor przerwania, to nie należy do niego skakać. Procesor sam będzie do niego skakał. Nie należy też tego deklarować jako podprogram (Sub). Albo coś ma być podprogramem, albo wektorem przerwania.
Tak. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Buforuj otrzymane znaki i przetwarzaj w procedurze pętli głównej programu. Oczywiście wiąże się to z wywaleniem wszelkiej maści form kodu blokującego procesor i oparciem odliczania czasu o Timer.
bascom timer przerwaniu przerwaniu bascom bascom funkcja przerwaniu
pulse width glowica laserowa peugeot ustawieni
wyłącznik nadprądowy stacja tefal
Candy CPCA 305 S – ciągła praca, moc 89 W, brak wyłączania, ustawienie 3,5, tryb S, termostat Chwilowy pobór prądu zamrażarka skrzyniowa – rozruch, inrush, zabezpieczenia, modele Danfoss, Embraco