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...
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...
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...
(...) Timer obsłużyć umiem i zgadzam się z twoją sugestią ale jak zrobić aby cały kod umieszczony w pętli odczytu wykonywał się po kolei a nie wszystko co 100us? Gdy umieszczę cały kod w przerwaniu nie osiągnę zamierzonego spowolnionego odczytu MCP w trakcie wykonywania innych rzeczy przez ATMegę... Rozumiem Twój problem. Aby uzyskać ciągłe i kontrolowane...
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ę:...
Koledzy znając życie to pewnie problem wynika z mojej niewiedzy. Mam podprogram Który ma mi zliczyć czasu załączenia pompy. W tym celu wykorzystałem sobie przerwanie które generuje mi przepełnienie co 500ms. W warunku Flagi 500ms jest zmienna (kala(n))która jest zwiększana co 500ms jeśli pompa jest załączona. Załączam sobie pompę np na 3,5s czyli zmienna...
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...
Witam Mam takie pytanie.. Czy Bascom potrafi symulować przerwania od Tmerów?? Chodzi mi o to ze gdy napiszę taki program : Config Lcd = 20 * 2 Config Timer0 = Timer , Prescale = 64 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Etyk Do Loop Etyk: 'tu program obsługi przerwania return To sam nie wchodzi do obsługi przerwania. Zrobi to jedynie...
Mam taki fragment kodu: Config Portb = Output Portb.0 = 1 Config Portd = Output Config Portc = Output Config Porta = Input Declare Sub Kolor 'podprogram - nazwa Enable Interrupts ' zezwolenie na obsługę przerwań Config Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Kolor Timer0 = 1 Do 'program Loop Kolor: 'poczatek podprogramu If Portb.0...
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.
Mam problem z włanczaniem i wyłanczaniem przerwań w ATmega 8535. potrzebuje odczytywać dane z RS(5 bajtów )i meć włonczony zegar RTC, któty by rejestrował czas pojawienia się w buforze znaku. Bascomowa instrukcja inkey() użyta przeze mnie powoduje ze zegar stoi w miejscu. Jak napisać procedure przerwania ??????? Pomuzcie adelmus12
Cześć. Męczę właśnie napęd na silniku krokowym i wszystko by grało gdyby nie to, że motor w nieregularnych odstępach czasu zatrzymuje się na chwilę (też nie określoną) i startuje dalej. Silnik pędzony jest "na pół kroku". Zmienna X ma regulować prędkość silnika. Zamieszczam kod, co może być nie tak? [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000...
Witam. Mam znowu problem z odmierzaniem czasu. A właściwie z jego pomiarem za pomocą symulatora. Napisalem programik, gdzie przerwanie od timera0 ma być co 20ms. Timer1 steruje multipleksowo wyswietlaczami. Ustawiłem wstepnie timer0 aby zliczal te 20ms, poprawilem dzięki symulatorowi i było świetnie. Ale gdy program zaczął się wydłużać czas ten wzrósł...
Witam Napisałem taki oto programik w bascomie, chce aby przerwanie bylo co 10ms. Mam jednak pewne zastrzeżenia do Bascom'u i nie jestem pewien czy w praktyce te 10ms bedzie dokładne ?? ile taktów zegara potrzeba na wpisanie wartosci dla timera oraz jego wystartowanie ?? gdzies wyczytalem ze 54 takty, ale nie jestem pewien tego. $crystal = 12000000 $large...
mam już od dłuższego czasu problem mianowicie generator częstotliwości dzisiaj bardzo się zdziwiłem gdy nie ładuje do timera wartosci początkowej wszystko jest ok, dioda sobie miga co ok 2 sek i jest spoko gdy natomiast załaduje do timera1 16Bit np 1000 co w zauważalny sposób nie powinno zmienić częstotliwości migania diody ona zaczyna migać jak oszalała...
Napisalem w bascomie program ktory ma mierzyc czas trwania impulsu. Dokladniej jest to pokazane na rysunku w zalaczniku. Ale niestety program niechce dzialac a dokladniej pokazuje mi na lcd caly czas 101 i niewiem co jest grane bo moim zdaniem jezeli zmienia sie czas trwania impulsu to powinna sie zmienic iloscimpulsow zliczonych przez licznik. dodam...
Witam, zwraca się z ogromną prośbą do wtajemniczonych w programowaniu w Bascomie. Otóż piszę program do mierzenia obrotów wirnika silnike elektrycznego i wykombinowałem sobie, że to będzie działać tak, że co obrót wygenerowane zostanie przerwanie zewnętrzne a właściwie przepełniony zostanie T2 bo będzie mu brakowalo zawsze tylko 1 do przerwania, a w...
Witam Potrzebuję programik na attiny2313 napisany w bascom. Mam ten procek , oscyloskop i trochę ogarniam bascoma a potrzebuje to dopasować do zepsutego urzadzenia. Podane czasy są orientacyjne , wyliczone na kartce. Te czasy będę musiał dopasować , stąd potrzebuję to w bascom , opóźnienia związane z obsługą "coś ma zrobić" są nieistotne , skoryguję...
Witam Mam za zadanie zrobic pomiar czasu wtrysku w ms poprzez przerwanie ICP1 Niestety po wielu bojach z rejestrami Tccr1B Tccr1A oraz Timsk i innymi , program nie dziala jak potrzeba w Proteusie Czytalem w dataszicie ze licznik T1 musi byc ustawiony w trybie TOP i musie byc wlaczony Noise Canceler , wszelkie ustawienia WGM nie dzialaja :/ Bardzo prosze...
Witam Piszę procedurę wysyłającą na daną końcówkę portu 1ms impulsy w zadanych odcinkach czasu. Według wyliczeń kalkulatora dla AVR wychodzi iż przy 4HMz kwarcu, preskalerze ustawiony na 64 i początkowej wartości licznika 193 zegar generuje przerwanie w granicach 1ms. I tak mam ustawioną konfigurację: Config Timer2 = Timer , Prescale = 64 Load Timer2...
Witam Zawsze staram się sam rozwiązywać problemy jednak tu poległem. Chodzi mi o pomiar czasu między impulsami. W jaki sposób poradzić sobie z Timerami? Który Timer można użyć do tego i z których wejść mogą być wyzwalane? Z góry dziękuję za pomoc.
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...
witam wszystkich mam problem z niedziałającymi przerwaniami napisałem program który dobrze funkcjonował pod wersją bascoma 1.11.7.1 . ściągnołem najnowszą 1.11.8.3 bo w tej poprzedniej nie mogłem wysterować LCD w trybie 8 bitów . okazało się że programy wykorzystujące timery nie działają . co się zmieniło w obsłudze timerów ? może podeśle ktoś działający...
Witam Potrzebuję waszej pomocy, mam problem którego nie potrafię rozgryźć a mianowicie chce wykonać sterowanie lampą błyskową za pomocą dźwięku a uC ma pełnić rolę opóźnienia błysku w ms która wcześniej jest ustawiona przez potencjometr napisałem prosty program jednak opóźnienie w tym wypadku nie działa tak jak tego oczekuje program: [syntax=basic4gl]...
Witam. Może ktoś napisać jak odmierzyć 12.5us? Bo potrzebuje te 12.5us do wygenerowania półokresu przebiegu 40KHz. Chciałbym zmieniać stan pinu na przecieny co 12.5us. Da się to zrobić bez przerwań? Sprzęt to ATMEGA 8 z kwarcem 8MHz, program piszę w Bascomie Będę wdzięczny za pomoc
Witam. Chciałbym zrealizować pomiar częstotliwości impulsów podawanych na któryś pin Atmegi (zakres częstotliwość od 1 do max 100Hz). Narazie testuje podawanie impulsów na wejście T0 i zliczam je Timerem0 w trybie counter. Napisałem taki prymitywny programik, ale coś mi się wydaje że można zrobić to lepiej, więc proszę o jakieś sugestie lub poprawki....
Witam. Uruchomiłem mój prototypowy zegar widmowy lecz mam mały problem. Pozycjonowanie obrazu zrealizowałem za pomocą halotronu podpiętego pod int0. Problem polega na tym że wraz z ustawiniem wartości zmiennej A w przerwaniu od int0 wartość timera1 odmierzająca stałe odcinki czasu nie zostaje resetowana co skutkuje drżeniem obrazu. W jaki sposób w bascomie...
Witam, da się jakoś sprawdzić czas trwania wartości zmiennej? Chodzi mi konkretnie o to że mamy jakąś zmienną powiedzmy I=8 jeśli zmienna ta nie przekroczy wartości 8 przez 3 sekundy wykonuje się podprogram poprzez polecenie Gosub hamować
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?
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?
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...
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 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
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...
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...
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...
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...
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.
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, 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...
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...
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
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.
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.
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
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...
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...
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...
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...
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...
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 ....
bascom timer przerwaniu przerwaniu bascom bascom funkcja przerwaniu
oporność głośnik panewka wymiana autocom jedno
sinuspro schemat sinuspro schemat
Seat Ibiza 6L - Bezpiecznik Wentylatora Chłodnicy Stycznik klimatyzacji Opel Signum - lokalizacja i diagnostyka