Program wyświetla to co chcesz ale w symulatorze to trwa bardzo bardzo długo. i Teraz ja licznik odlicza 100 impulsów to musisz pozmieniać obliczenia. Podczas symulacji w warunkach wpisz mniejsze wartości to się szybciej doczekasz tego wyświetlenia na lcd albo zwiększ zmienne ręcznie podczas symulacji. sygnał 125khz do generowania PWM 1,25khz. Nie rozumiem?...
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...
Czyli zwykły prosty miernik częstotliwości z jej porównaniem przy pewnej wartości - bez problemu się to na jednym timerze realizuje... Zobacz tu: [youtube]http://www.youtube.com/watch?v=... Złapałem tym nawet 40tys. obr/min :) Co prawda to przykład na attiny44, bo obsługa wyświetlacza i takie tam duperele zabierają jednak piny i pamięć...
- czy praca równoległych timerów nie będzie jakoś na siebie wpływać (program przerywa pracę na skutek działania timera1 by precyzyjnie wyznaczyć czas, a tu w tym samym momencie dochodzi kolejne przerwanie od innego timera, i co wtedy) Timery działają niezależnie, ponieważ realizowane są sprzętowo. Nie będą na siebie wpływać. Program niestety (w tym...
Moim zdaniem koncepcja powinna być taka: 1. Obsługa przetwornika analog-cyfra. Na początek dobrze żebyś umiał dobrze zmierzyć liczbę impulsów. Nie wiem dokładnie jaka jest specyfika Twojego sygnału, jaką amplitudę mają owe szumy, skąd się biorą i czy nie warto by ich po prostu potraktować filtrem dolnoprzepustowym, a jeśli mają odpowiednio niską amplitudę...
Err = 1 wstawiasz w obsłudze przerwania od Timera. A Err = 0 nigdzie ;)
Dokładnie tak jak masz napisane, z tym, że konfigurujesz jeden z timerów do dliczania czasu. Przykładów w Bascomie z obsługą timera znajdziesz bez liku.
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Poza zmianą nazwy portów będziesz musiał odpowiednio skonfigurować obsługę timera bo z pewnością on jest wykorzystany do liczenia czasu i obsługi wyświetlacza led .
Dziękuję kolego. Domyślam się, że to jednak wina kompilatora. Podobno w najnowszej wersji bascoma obsługa timerów również nieco kuleje. Dzięki za potwierdzenie przypuszczeń.
Może ten Twój jakiś dziki jest :P więc spróbuj jeszcze przenieść Sub pod pętlę główną jak ja poniżej. U mnie kompilują się wszystkie wersje wiec w załączniku masz skompilowane Hex i Bin do wyboru. Sprawdź też prywatną wiadomość ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE...
Witam. Może to ci rozjaśni temat timerów: [url=http://www.starz.pl/elektronika/EP_... - to nie musi być trudne, część 1 [url=http://www.starz.pl/elektronika/EP_... - to nie musi być trudne, część 2 [url=http://ep.com.pl/files/4787.pdf]Obs... timerów w mikrokontrolerach AVR część 1 [url=http://ep.com.pl/files/4817.pdf]Obs...
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. Maiłem zbudowany zegar z pomiarem temperatury na atmega 16, lcd standard, temp na ds18b2, czas na wewnętrznym oscylatorze 1mhz. Ze względu na dużą niestabilnośc wewnętrznego generatora dołożyłem zewnętrzny kwarc zegarkowy oraz zmieniłem program, który używał timera1 na timer2. I tu pojawiły sie problemy z 1wire. Przypuszczam, że procedury Bascom...
PRZEPRASZAM!!! POPEŁNIŁEM BŁĄD!!! Ponieważ nie programowałem nigdy uP 89c52 pod bascome'm, a plik 89c52.dat napisałem "na szybko" na potrzeby użytkownika caro, przerabiając wcześniej wykorzystywany przeze mnie 89c51.dat, dodałem do niego informacje o rejestrach TL2 oraz TH2, a zapomniałem dopisać informację o rejestrach T2CON oraz RACAP2H i RACAP2L,...
nie znam Bascoma, ale ja bym to zrobił tak: sprawdź i zapamiętaj stan klawisza, zegar idzie dalej normalnie jeśli za np. 1 sekundę stan portu jest ten sam co zapamiętany, przestaw czas o 1. Jeśli nie - nie rób nic. To można imho załatwić jednym timerem/aplikacją timera.
Ale nie blokuje przerwań. Przycisk przenieś na PD2 lob PD3, ustaw zezwolenie obsługi przerwań i przerwania zewnętrznego, ustaw obsługę tego przerwania np. on INT0 ustaw_flage ustaw_flage: flaga=1 return i wpisz zamiast: "If Pinb.0 = 0 Then" "If Pinb.0 = 0 or flaga=1 Then" P.S. Ale obsługi Timerów powinieneś się tez nauczyć.
Tak po krótce przeanalizowałem wątek TIMER2 tego nowego programu. Po prześledzeniu kilku instrukcji i "śladów skoków" mogę stwierdzić, że nie jest dziwne, że gdy aktywny jest TIMER2 i jego przerwania to wszystko siada. Pojawia się przerwanie TIMER2, program wskakuje do jego obsługi a tam napotyka: GOSUB w inne miejsce, gdzie napotyka GOTO w jeszcze...
(at)stozek - normalnie w Bascom nie jest potrzebna komenda Start Timer0 bo jest on uruchamiany od razu podczas konfiguracji. Używa się tej komendy tylko jeśli poprzednio zatrzymałeś Timer poprzez Stop Timer0. Rozumiem, że zatrzymujesz timer. Tak więc zatrzymywanie timera to zabranie mu źródła taktowania. Bascomowe komendy moża wiec rozumieć tak: Start...
Czesc, Mam taki problem: chciałbym co jakiś czas (np. 100 Hz) wykonywać kawałek kodu (obsługa wyświetlacza). Wiem, że przydadzą mi się timer'y. Przeszukałem archiwum, ale podane tam przykłady są w Bascomie :( Czy mógłby ktoś podać przykład w AVR-GCC jak to zrealizować?
Ciekawe, że wiesz, jak jest napisana moja funkcja bez pokazywania funkcji 😁. Algorytm opisałem w uproszczeniu. Ale nieważne, moim zdaniem nie da się sensownie rozwiązać problemu, żeby funkcja nie zwróciła wcześniej LONG zanim nie zwróci REPEAT, bo przecież musisz przytrzymać przycisk, żeby najpierw był LONG a ewentualnie później REPEAT. To znaczy...
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
fakt przerwania od Timerów nie sa używane ale myśle że zliczanie odpowiedniego czasu lepiej zrobić w obsłudze przerwań niż w głównej pętli programu
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...
Wiesz, mam książkę Baranowskiego 'ATmega w praktyce'. A to co było??? oczywiście mi pomylił się autor ale tytuł ten sam ;) więc ją masz Co do wydajności prądowej to chyba też dostałeś już odpowiedzi różne, albo drivery ULN albo zwykłe tranzystory żeby ją zwiększyć i po ptakach Żeby nie robić na jednej nodze jednej diody nawet przez te tranzystory to...
Bascom jest strasznie upierdliwy jeśli chodzi o obsługę przerwań z timerów. praktycznie nie ma szans na okreslenie zależności czasowych w programie. poza tym nie jesteś praktycznie w stanie z mety określić , czy kompilator np do obsługi jakiegoś interface nie używa już timera, z którego ty chcesz skorzystać. u mnie mega 8535 zawieszała się co około...
łatwiej się już chyba nie da. Sorki, ale ja bym raczej powiedział, że: "JUŻ GORZEJ SIĘ NIE DA :(" Co to za rozwiązanie gdzie w środku siedzi jeszcze obrzydliwy Wait !!! brrr ale żeby nie być gołosłownym, który tylko krytykuje.... Ok, panowie - widzę, że wasze zmagania spełzają na niczym, pokażę wam więc jak się powinno podchodzić do programowania....
Oczywiście poszukam, chodziło mi tylko o to czy do obsługi przycisku powinienem zarządz do roboty Timer0, czy można wykorzystać np któryś z używanych juz Timerów?
Witaj, No save spokojnie możesz użyć.... pod warunkiem, że nie korzystasz w obsłudze przerwania z instrukcji Bascoma bo jeśli tak to nie odkładając rejestrów na stos, zgubisz ich wartości i w najlepszym przypadku będą się działy różne rzeczy. Ja bym napisał wstawkę w asemblerze odkładając wcześniej na stos używane rejestry w tym SREG. Możesz też użyc...
Zrób sprawdzanie portów do których podpięte są przyciski w pętli głównej, albo w podprogramie obsługi przerwania Timera0 - po wyświetleniu cyferek na wyświetlaczach. Zawsze pozostaje jeszcze Timer2 :D, ale jak zapuścisz przerwania z 3 timerów i do tego jakieś zewnętrzne int to mogą być problemy...
Ja osobiście użyłbym nawet delay'ow które są dołączane biblioteką - i znów nie wiem jak to w Bascomie jest . Ale jeśli wszystko będziemy robić poza , obsługą przerwania dla klawiatury to nic nie przeszkadza timerowi dalej generować zadane przebiegi :)
W helpie bascoma nie znalazłem konkretnej odpowiedzi na moje pytanie. Odnośnie wait pisze tam tylko "Instrukcja wstrzymuje działanie programu na podaną ilość sekund. Odmierzany czas jest wartością przybliżoną, więc nie należy stosować tej instrukcji do dokładnego odmierzania czasu. Używanie przerwań, może znacznie wydłużyć działanie instrukcji ."Osobiście...
A nie masz błedów w montażu ? Czasem sie zdarza coś zewrzec. I pamietaj aby dać 750ms czasu dsowi na konversję oraz lepiej nie używać niektórych timerów itp. razem z programem obsługi tego ds'a.
Jeszcze jedno. Ten program większość czasu spędza na wyświetlaniu. Wydłuż czas odświeżania wyświetlacza poprzez usunięcie Load Timer0 , 150 i zmianę w Configu timera0 - Config Timer0 = Timer , Prescale = 64. Spróbuj zmniejszyć czasy w transmisji do SAA i raczej wyłącz wyświetlacz na czas transmisji do SAA - zatrzymaj timer i wygaś wyświetlacz. Pamiętaj...
Kolejny fakt jest taki że nie ma możliwości tak szybkiego odczytania danych z karty pamięci żeby nie zakłócić multipleksowania (przynajmniej nie na rodzinie AVR). Rodzina AVR czy jakakolwiek inna nie ma nic wspólnego z takim ograniczeniem. Wystarczy wykorzystać któryś z timerów i jego przerwanie. Ostatecznie obsługa takiego wyświetlacza multipleksowanego...
tzn tak: taka konfiguracja zrobiona tylko po to żeby sprawdzić czy działa ten sposób. Pozatym skill niezbyt wysoki (raptem od tygodnia w tym siedze), dlatego chciałem zasięgnąć rady od starszych:). Właśnie nie do końca rozumiem te przerwania. Można na wejście dawać stan niski, jako impuls przerwania? A wracając do tego mojego pomysłu... Co w nim jest...
co do bascoma to powiem Ci tak, na początku niby łatwiej i fajniej się programuje wszystko w bascomie, ale nietypowych rzeczy w nim nie zrobisz tak prosto (choćby np. obsługa dwóch lcd...) a ma on swoje ukryte "atuty" - bugi, które skutecznie zatruwają życie (np. skopana obsługa timerów na niektórych uP, błędy przy niektórych operacjach porównywania,...
connfig timer0 = timer , prescale = 64 dim i as byte,j as byte dim s1 as bit on timer0 czas enable interupts enable timer0 do //tu wstawiasz obsługe przycisków //iustawienie s1 w zależności czy drzwi sa otwarte s1 = 1 czy zamknięte s1=0 loop end 'program czas: //ten podprogram wywoływany jest co x ms //w zależniści od prescale i częstotliwości...
Witaj, powiem tak, niewiele nauczysz się zlecając komuś pracę. Jeżeli urządzenie ma służyć do nauki to może spróbowałbyś je sam wykonać. Ja polecałbym Ci zacząć od prostych rzeczy, jak np wykonanie płytki(jakiś starter kit na avr'ce) lub coś prostszego znalezionego w sieci. Potem zacząć pisać proste programiki jak np migająca dioda, obsługa przycisku,...
Witam ewentualnych czytelników tego tematu. Zamykam temat, jako że problem rozwiązałem. Obsługa timerów została poprawnie zrealizowana po skompilowaniu projektu w Bascomie dla procesora Atmega48, Jedynie przy obsłudze przerwań pojawił się problem. W moim programie była konieczność "ręcznego" kasowania flagi przerwania INT1 za pomocą instrukcji: SET...
Witam, Może wiecie gdzie znajdę opis znaczenia poszczególnych bitów specjalnych rejestrów Atmega8 - chodzi mi przede wszystkim o bity i znaczniki przerwań od USART'a (flagi) i Timerów - w pdf'ie tego nie widziałem? I jeszcze jedno, skoro ta Atmega posiada sprzętowy I2C to czy Bascom korzysta z programowej obsługi tego protokołu tak jak w przypadku 89C2051...
To proste, wykorzystaj timer. Ustaw tak jeden z timerów aby generował przerwanie np. co 1s a w obsłudze przerwania tego timera zmieniaj stan diody na przeciwny. I ot to cała filozofia.
Temat był wałkowany na tym forum. Wpisz w wyszukiwarce hasło "impulsator" a znajdziesz trochę również bez użycia Timerów :lol: Moja prywatna rada - naucz się obsługi timerów, to wcale nie jest trudne a przydaje się częściej niż myślisz :wink: Powodzenia :spoko:
Nie ma do tego komendy. To jest cała masa różnych rzeczy. Timer trzeba skonfigurować/włączyć/wyłączyć/uaktywnić przerwania/napisać obsługę przerwania od Timera/zrobić ustawianie i sprawdzanie stanu flag. Polprzewodnikowy trochę Ci pojechał z tym Timerem ;) Timer to nie jest taka prosta sprawa (dla niezbyt zaawansowanego).
Fredy --> proponuję ci daj sobie spokój z takim porównywaniem bo to lekka albo nawet duża niedorzeczność, żeby na bazie takiego pseudo kodu w ogóle porównywać wielkość wsadu po kompilacji. Jak chcesz już coś porównywać, to postaw sobie jakiś cel np napisanie jakiegoś większego programu na ten sam procek. Wtedy spróbuj ten sam cel zrealizować za pomocą...
No są dwa zwykłe przerwania INTx. A przy odrobinie szczęścia można jeszcze wykorzystać przerwanie od komparatora, przerwanie ICP i przerwania do Timerów. Ale od razu mówię że najlepiej by było to napisać w assemblerze (samą obsługę przerwań). Nawet jeżeli wykorzystasz tylko przerwania INTx. Na szczęście będzie to proste.
Rzeczywiście zwiększenie rozmiaru stosu pomogło. Program działa poprawnie. Dzięki dla Piotrka za trafną podpowiedź. Jeszcze mam dwa pytania: 1. Jaka będzie częstotliwość przerwań T0 przy ustawieniach: Config Timer0 = Timer , Prescale = 1024 $crystal = 8000000 (powinno być około 30Hz) 2. Czy mogę używać swobodnie wszystkich timerów atmegi, jeśli korzystam...
Sama obsługa serwa to nie wszystko co program ma robić. CONFIG SERVOS zdaje się potrzebuje do poprawnej pracy dwóch timerów - w każdym razie robiłem już testy i to programowe sterowanie serwami kolidowało mi przerwaniami timerów potrzebnych do czego innego. Dlatego potrzebuję 4 sprzętowych kanałów PWM. Dwa na Timer1 działają bez problemu, no ale tam...
Może zaczniesz od czegoś łatwiejszego , będzie prościej i mniej stresująco . No, nie żartuj z faceta!. Co może byc łatwiesze (?) ? miganie diodą ?... Spójrz na jego ?credentials? w lewym oknie. Gośc jest tu około 10 lat, więc pewne rozeznanie w temacie posiada i ?kurs? z miganiem diodą z pewnością dawno ukończył. Może potrzebuje troche odmiennego spojrzenia...
Witam, BASCOM swego czasu był bardzo dobrze opisany w EdW (Elektronika dla Wszystkich) Na płytach CD były kolejne odcinki szczegółowych opisów kolejnych tematów z 80C2051. Bardzo dobre instrukcje i ćwiczenia z przykładami. Obsługa Timerów, LCD, RS232, I2C, RC5, ............itd Potem była chyba "przesiadka" na AVR-y, ale jak mnie pamięć nie myli - to...
Możliwe że niektóre komendy wykorzystywane przy obsłudze karty SD zmieniają parametry konfiguracyjne RFM12b. Obsługa dla SPI w przykładzie który podałem wcześniej jest programowa. Więc jeśli masz wolne wyprowadzenia możesz przerzucić się na inne piny. Tzn. kartę SD zostawić na HARD SPI, a RFM puścić na SOFT SPI ? Zauważyłem też problem z timerem w...
Witam wszystkich Czy da się zastosować funkcję timer zamiast kilku waitms dla obsługi 10 x lcd chr? Chodzi mi oto ,żeby nie wpisywać po każdym zdefiniowanym znaku (deflcdchar) waitms.Jeśli tak ,to prosiłbym o jakiś przykład jak to zrobić.W helpie znalazłem to, na temat portów a w sieci sporo ale nie na temat.
Timer0 przepełni ci sie tak szybko że nie zdażysz zareagować. Jeśli chcesz liczyć czas tym timerem to musi on sie przepełnić kiladziesiąt razy (a ile to musisz ustwić w obsłudze przerwania tego timera) Nie pisuję programów w Bascomie więc nie wiem czy czasem nie popełniasz błędu typu wyjscie z procedury przez skok z niej do jakiejs etykiety a nie przez...
"Programowanie mikrokontrolerów AVR w języku BASCOM" autora Marcina Wiązani. Myślę, że to Ci wystarczy. Pozdrawiam! Patryk
Witam, ja właśnie dokładnie taką samą konfigurację 2 procków czyli łączyłem Atmega8 oraz Atmega16 po tym właśnie i2cslave w Bascomie i mogę się coś niecoś na ten temat wypowiedzieć.... ... otóż biblioteka ta I2cslave dla softwarowego rozwiązania układu SLAVE w I2C rzeczywiście działa dobrze tak jak jest opisana ale... jest właśnie jedno i to dosyć spore...
Użyj Timer2 dla obsługi RC5 zamiast Timera0 Config Rc5 = Pind.2 , timer = 2 i będzie OKejos ;)
Witam, już wcześniej na podstawie tego fragmentu kodu, który podałeś mówiłem, że program ten wykorzystuje płynne sterowanie jasnością tylko ty tam wstawiłeś stałą o wartości 70. Mówiłem też, że skoro nie wiadomo jakie jest taktowanie procka to ciężko powiedzieć co z czego wynika. Ale teraz widać jak na dłoni potwierdzenie tego co pisałem, jest to typowe...
Tyle to wiem :) Chodziło mi raczej o napisanie obsługi timera...
Chciałbym sie poradzić jak napisać w Bascomie, oprogramowanie do urzadzenia, które musi coś tam wyświetlać, musi obsługiwać klawiaturę, wysyłać coś tam po I2C oraz na bieżąco musi odbierać ramki z UARTA0. Chodzi o to że z komputera wysyłam 64bajty przez RS232 Atmega to odbiera i dokonuje odpowiednich nastaw w urządzeniu. Jednocześnie musi działać klawiatura...
Witam. RAM-u nie powinno brakować, zresztą można się o tym przekonać naciskając ikonkę "rączka z kartką". Obsługa RS-232 nie wykorzystuje timerów, WAIT również nie. Spróbuj jeszcze zwiększyć $framesize i $swstack. Nie do końca czuję te parametry - w helpie mało o nich jest napisane, a i w praktyce mało ich używałem. teedd P.S. Jaką masz wersję Bascoma?
Jeżeli już mamy timer o stałej częstotliwości generowania przerwań, to z użycia dwóch timerów zamiast jednego zysku żadnego nie ma, a straty są: - trzeba zaprogramować 2 timery i napisać dwie procedury obsługi przerwań. - przy zgłoszeniu przerwań z obu będzie opóźnienie obsługi jednego z przerwań (niekiedy bardzo niepożądane), - obsługa drugiego przerwania...
Jeżeli to urządzenie odbiorcze jest jakieś małointeligentne, to jedynym wyjściem jest robienie programowej transmisji, a z tym wiąże się obsługa timerów, przerwań - tu dość łatwo o mopyłkę, którą bedzie trudno wykryć. Jestem ciekaw ile miejsca zajmnie taka programowa transmisja szerego- wa (pewnie coś koło 0,4KB, czyli 20% pamięci procesora). Jak jest...
Czas obsługi przerwań jest niezerowy i mogą się wzajemnie blokować, poza tym dlaczego nie używasz sprzętowych timerów jako timerów tylko do generowania przerwań? Timer może zliczać czas wprost i w tle, bez angażowania procesora i generowania przerwań, po zatrzymaniu timera odczytujesz tylko stan licznika. Oczywiście dobierasz stosowny preskaler aby...
program pisałem z Polską wersją pomocy tam nic o ctc nie pisze ale poczytam. Może Bascom nie obsługuje tego, choć wątpię, bo CTC to "popularny" sposób obsługi timera. Jeśli nawet Bascom nie obsłuży CTC to można to zrobić pisząc bezpośrednio do rejestrów.
Może tak: zdefiniuj kilka takich programowych timerów (tyle, ile przewidujesz wyjść) np. co 1 sekundę sprawdzaj stan tych rejestrów każdego po kolei jeżeli któryś z nich ma wartość większą od zera to na odpowiadające mu wyjście wystaw stan włączający podłączone urządzenie (tu diody LED) i zmniejsz jego zawartość o 1 Jeżeli stan sprawdzanego timera jest...
Za to mam problem z temperaturą. W pokoju mam 20, może 22 stopnie, a termometry pokazują 25, a przy niektórych włączeniach, nawet 29 stopni. Pomiędzy jednym a drugim 0.2, 0.3 stopnia różnicy. Rezystor podciągający użyłem 3.3K, zamiast 4.7K, ale to chyba nie jest wina tego. Wartośc rezystora podciągającego magistralę 1-wire nie jest krytyczna i to w...
bezwzględnie trzeba zastosowac tu zmienną interger ... albo prostą obróbkę zmiennej Word poprzez uzupełnienie do dwóch. P. S. Mam właśnie na stole taki termometr. Wyświetlacz jest multipleksowany timerem w przerwaniach co 8ms. Każde przerwanie powoduje jednokrotne uruchomienie innego fragmentu programu w pętli głównej, w tym innego fragmentu obsługi...
Krótko mówiąc. Program dość spory (4000B w .bin) Wykorzystuję Timer0 w mode=1 i gate=internal Do P1.1 <==> dallas Ds1820 w pętli DO <==> LOOP trzy przyciski S1 Alias P3.4 S2 Alias P3.5 S3 Slias P3.7 Układ działa ale przy dłuższym przytrzymaniu przycisku (od 1 do 8minut) RESETUJE procka a Timer0 przestaje liczyć GDZIE JEST PROBLEM ???????????????????????...
A co z powtówną instrukcją LOAD Timer0, 50000 w procedurze obsługi przerwania?
Poczytaj o Timerach. Po uruchomieniu timera możesz zająć się czymś innym w programie. Zmianę stanu na wyjściu zrób w obsłudze przerwania od Timera.
I w dodatku Timer sam z siebie nie generuje przerwania. Ustawia flagę. Jak nie zezwolisz na obsługę to przerwania nie będzie.
Jeszcze raz od nowa. Tym razem postaraj się bardziej. Ustaw wreszcie te przerwania INTx na jakieś zbocze, a nie poziom. Co z tego, że ustawiłeś Timer1 jako licznik jak nie ma to związku z resztą kodu. Timer sobie działa,a ja się pytam - i co z tego ? gdzie obsługa tego timera?
Można spróbować z jednym timerem. Ale wtedy było by więcej zmian w programie. Dlatego, że co każde przerwanie (co 100ms) wykonywała by się obsługa przycisku a co 10 przerwań także obsługa odczytania alarmów. Czyli istniejące teraz dwa podprogramy trzeba by było połączyć w jedną obsługę przerwania od timera0 lub timera1. Jeśli zaś program ma nie korzystać...
Witam, mam 5 przycisków, które służą do obsługi menu nie wiem jak napisać kod programu aby nie naciskając np.przez 5 sec tych przycisków program sam powracał do programu głównego Możesz też zastosowac któryś z timerów do odliczenia tych 5 sec. e markus
Możesz zrobić to na dwa sposoby. 1. Wykorzystać przerwania. 2. Wykorzystać główną pętlę programu. W 1 przypadku ustawiasz któryś z timerów na powiedzmy 100 000 przerwań na sekundę. Za każda obsługa przerwania zwiększasz wartość zmiennej (licznik) o jeden i porównujesz z ustawioną wartością PWM (jakaś zmienna). Kiedy ustawiona zmienna jest mniejsza od...
Stare przysłowie pszczół: żadnego oczekiwania w obsłudze przerwania! Mierz timerem czasy trwania stanów 0 i 1, jak to sugerują Koledzy. Testowanie programowe w przerwaniu timera zgłaszanym odpowiednio często jest na ogół bezpieczniejsze niż użycie trybu Capture.
Tak był błąd w przypisaniu zmiennych na odwrót. Mnie ciekawi tylko gdzie są wartości początkowe timerów ? Aco za tym idzie skąd to przekonanie że timer1 wywołuje przerwanie co sekundę ? Co do Timera0 też nie jestem pewien czy przerwanie jest co 4ms ? A jaka jest częstotliwość taktowania ? i gdzie jest dyrektywa $crystal ? W dodatku w podprogramie obsługi...
Znalazłem specjalnie dla Ciebie jeszcze kilka bajtów :D ahahahahaha Bascom stara się być "ignorantoodpornym" czyli jak ktoś może czegoś nie wiedzieć to on to, na wszelki wypadek, robi za niego. W języku C każdą zadeklarowaną zmienną najczęściej inicjuje się jakąś wartością ponieważ po reset nie można być pewnym, że w niej znajduje sie zero lub potrzebna...
Dobrze kolega napisał najpierw naucz się migać diodą a później naucz się obsługi timerów. Kolejny krok jak zliczysz 648 impulsów to zwiększasz zmienną litr o jeden. Zerujesz licznik i zaczynasz od nowa. I tak w koło. To jest przepływomierz do wody czy auta?
Ja bym to wykonał tak : '---------------------------------------... DS1820 ----------------------------------------... Config 1wire = Portd.2 'deklaracja portu na którym będą podpięte DS18b20 Dim I1 As Integer Dim Dsid1(8) As Byte 'program głowny do If Timer1 > 5000 Then '[8000000/1024] * 0.65s = ~14000 Gosub Temp End...
A było takie podejrzenie? Nono No w rozpaczy już zacząłem tak kombinować :) Z jednej strony zmiana filozofii obsługi timerów była w tym przypadku dość pracochłonna, bo trzeba było w wielu miejscach korygować program, ale szczęśliwie chyba się udało i ku mojemu zdziwieniu wszystko udało się uruchomić (odpukać). A radość z działania RS232 bez cudawianek...
Widzę, że coraz bardziej zbliżamy się do assemblera. W bascomie da się wyłączyć generowanie odkładania i pobierania ze stosu rejestrów w czasie ubsługi przerwania: On timer1 nazwa_suba NOSAVE Ale wtedy to asm w obsłudze przerwania obowiązkowy (bo kto odkryje, które rejestry zmienia Bascom). Ewentualnie można zdekompilować prog sprawdzić i potem dopisać....
Mój problem polega na tym, że w specyfikacji tego układu znalazłem informacje na temat 4 kanałów pwm, a bascom z tego co wiem umożliwia obsługę dwóch (na timerze 1.). Jak zaprząc do pracy pozostałe dwa kanały :?:
Napisałem coś sam, nie wiem czy coś jest dobrze ale spróbowałem.. Prosiłbym o jakieś rady/wskazówki. Czy włączanie ventylatora/ów ma jakikolwiek związek ze zmianami temperatury? Jeżeli processor obsługuje/wykonuje pomiar czasów włączenia i wyłączenia vents, to kiedy robi pomiar temperatury? (!) Stosując instrukcje "Waitms " albo "Wait" - jak myślisz;...
Niestety tadziku, twoja odpowiedz nic mi nie daje bo nie wiem jak w kodzie w języku C wmontować inicjalizację i obsługę przerwań... tak, czytałem manual i przykłady na necie ale tam są zazwyczaj pisane w bascomie którego zupełnie nie kumam a jeśli nawet jest w C to nie rozumiem zasady inicjalizacji tych timerów... dlatego wysłałem prośbę chociaż o programik...
Obsługa UART jest przerywana TIMEREM i dlatego gubi znaki. Zrób odbiór UARTU na przerwaniach, odbieraj w nim tylko pojedynczy znak i ładuj go do bufora (nie czekaj w tej funcji,aż odbierzesz wszystkie znaki), a po odebraniu końcowego znaku ustawiasz flagę, że skończył. I w pętli głównej dekodujesz sobie na spokojnie tą ramkę. Popróbuj może jeszcze ze...
Uwag miałbym więcej, ale może nie wszystko na raz bo nie ma czasu :D Nie wyświetlaj w kółko tego co ma się pokazywać bo w czasie kiedy będziesz wyświetlał mikrokontroler może coś przegapić. Ogólna zasada jest taka że komendy LCD używa się wtedy kiedy coś ma się zmienić na LCD Po co tyle tego Locate 1, 1 ? Można to zapisać tak: Call Odswiez_lcd a sub...
Coś lukashb Ci się chyba poplątało. Przy takim ustawieniu Timera próbkę pobierasz co 7.936ms. Pobranie 205 próbek trwa 1.626s. Nieważne czy asm czy Bascom- tak ustawiłeś timer. A to że obsługa tego przerwania trwa w Bascomie 50-100ms to trochę trudno uwierzyć. Chyba że jakieś straszne obliczenia w tym przerwaniu robisz.
Nie oglądam Potera mirekk36 ale akurat w helpie do Timerów jest przykład w którym parametry są źle opisane, jak spróbujesz skompilować to zobaczysz, w obsłudze timerów są też błędy które się coprawda kompilują poprawnie ale wykonują inaczej niż powinny, tu wierzę w słowo pisane z Praktycznego Elektronika gdzie zamiast Config Timer ładują bezpośrednio...
1. Wysyłam żądanie konwersji. 2. Startuje timer1 generując przerwanie co ok. 2 sekundy. 3. Skok do obsługi przerwania, a w niej żadanie odczytu 1wire i pobranie dwóch bajtów danych. 4. Powrót do programu głównego. 5. W programie dokonuję niezbędnych przeliczeń i operacji na zmiennych. A czemu nie korzystasz z timerów programowych? Ustawiasz sobie jeden...
Przez ostatni czas dokonałem wiele zmian kodu jak i płytki dane na szynie ibus na temat prędkości "pokazują" się w losowych momentach (gdzieś czytałem ze średnio co 2 sekundy ale w praktyce od 0,5s do 30 sekund czyli nie nadający się do tempomatu. Poradziłem sobie z sygnałem prędkości, znalazłem sygnał tacho odczytuje go timerem działa także mi obsługa...
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...
W programie masz bałagan, ale pewnie większym problemem są tu schemat i założenia. PWM 8Bit przy 16Mhz to wyjdzie 62,5kHz. Nawet małe silniczki mają bezwładność na poziomie 10ms więc to chyba niepotrzebne. Przy Twojej prędkości musiałbyś duży nacisk położyć na ten układ ze sterowaniem tranzystora. Dla tego PWM proponuję użyć jakiegoś preskalera. Potem...
A mnie zastanawia to jak rozwiązałeś sytuację, kiedy podczas obsługi DS-ów naciśniesz jakiś przycisk. Wiadomym jest że obsługa czujnika zajmuje niecałą sekundę. Jeśli trafisz właśnie na tę chwilę, to sterowanie przyciskami staje się uciążliwe, zwłaszcza jeśli program działa w pętli... To nie jest żaden problem, a już na pewno nie wtedy kiedy jest przy...
No właśnie przed to, że treść SMS'a jest w drugiej linii bardziej to komplikuje i tak trudne ( przynajmniej dla mnie ) zadanie. Config Serialin = Buffered , Size = 12 , Bytematch = 13 If Rs_flaga = 1 Then Rx = Inkey() Ciag_rx = Ciag_rx + Chr(rx) 'Reset Rs_flaga ' WYRZUCAM Resetowanie flagi End If Serial0charmatch: Set Rs_flaga Return...
Zrób taką konfiguracje timer2: Config Timer2 = Timer , Async = Off , Prescale = 256 A na początku obsługi przerwanie tego timera: Start Timer2. Daj znać co z tego wyszło.
Esencja tego forum: Nie szukaj rozwiązania... Można na to tak patrzeć. Można też z drugiej strony - tworzysz babole, a inni ci piszą jak się to powinno robić. Zamiast pracowicie rozwiązywać stworzone przez siebie problemy, zrób to jak należy. Nawet jeśli timer masz jeden i wykorzystujesz go do generowania PWM, to nic ne stoi na przeszkodzie, aby dodatkowo...
Szkoda czasu na przeładowanie Timera jeśli może on pracować w trybie CTC. Ustawiasz raz i zapominasz. Nie zupełnie tak jest!!! Ile tego czasu zaoszczędzisz? (4 cykle... ?) Owszem, w trybie 'Normal' przeładownie timera musisz robic w przerwaniu ovf; tu nie stosujesz OVF, ale sam fakt konieczności stosowania przerwania (Comparex) zmusza cię do jego pełnej...
Witam ja powiem ze sie da i to bardzo dokłądnie to wykoanć Potrzeba ci jeden Timerek generujacy przerwanie co sekunde. i drugi timerek to wyświetlania w multplesie. Choć faktycznie te dwa timery moga zaburzyć nieco prace tego całego układu. podłacz sobie jeden ls247 i 4 ledy w MPXie zajmie ci to jeden port. 4 linie to BCD i 4 to załącznie pokoleji LEDów....
Mnie tak dokładniej chodzi o obsługę wartości wziętej z timera i odczytanie.
bascom obsługa atmega timerów konfiguracja timerów
kostki brukowej astra tunel środkowy szczotki elektryczne
zawór proporcjonalny lodówka kondensator zwarcie
Ustawianie czasu w wagach Rhewa, Android, Windows, PLC Siemens – procedury i wskazówki Komatsu PW160 – lokalizacja elektrozaworów jazdy, dostęp serwisowy, rozdzielacz hydrauliczny