Przerwania i Timery to rozwiązanie idealne i książkowe, na początek, ale tylko do nauki możesz zrobić na Wait'ach, ale nie polecam tej metody bo prowadzi do złych nawyków...
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.
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Co do dsów tak bym zrobił - przechowywał ich id w eeprom i ładował do ramu przed odczytem. A C polecam - tam nie ma problemów typu karta sd musi korzystać z timera2 - wszystko (nawet biblioteki) możesz sam dostosować do potrzeb. Swoją drogą zaktualizuj BASCOM'a - bo nowa wersja umożliwia korzystanie też z timera1 (w trochę innej konfiguracji sprzętowej)...
W bascomnie ciężko zrobić LED + Ds18b20 wszytko psuje Waitms 750. Zwiększ do 8 a jak możesz do 16MHz kwarc. A od kiedy to musimy czekać 750ms nie robiąc nic innego? Od czego mamy timery? Przepraszam najmocniej Kolegę, ale jeśli Kolega tego zrobić nie potrafi to: 1. Nie oznacza że się tego zrobić nie da - ja nie potrafię zbudować komputera klasy PC...
Trzeba skracać czas który Timer ma odmierzać. W tym trybie zrobisz to najłatwiej w przerwaniu. Zaraz pod "Obrot:" użyj jednej z komend Load albo Timer= Po prostu teraz Timer liczy od 0 do 255. Jak coś do niego wpiszesz to będzie liczył, na przykład, od 128 do 255 czyli krócej. Dodaj sobie potencjometr do układu i będziesz mógł sterować prędkością w...
Sprawa waita wyglada tak: Keil to kompilator profesjonalny a nie bascom, tu trzeba pomyśleć. Możesz go zrobić na timerze albo liniowo nopami. Jak wiesz jaki masz kwarc to bierzesz byle jaka kartę katalogową od 51-ki i liczysz ile ma taki nop albo takty timera. Co do sprawy wyświetlacza to mogę Ci podesłać pliczek w C do tego drivera ale dziwi mnie,...
Źle podchodzisz do problemu - zmienna i (czyli numer wyświetlanej cyfry) powinna być zmienną globalną, którą w przerwaniu od timera zwiększasz, a następnie wykonujesz blok switch (i) { ... }. Oczywiście delay w przerwaniu to "bluźnierstwo" :) Preskaler ustaw sobie na 64, wtedy przerwanie od timera dostniesz ok. 400x na sekundę, czyli odświeżanie całego...
"Szukam teraz zmiennej którą mógł bym to zrobić" Robisz sobie żarty, czy na prawdę nie wiesz co to zmienna?
Gdy już usuniesz wewnętrzną pętlę do..loop to zwróć uwagę, że stan przycisku będzie sprawdzany raz na 60s. Możesz zrobić sprawdzanie np. tak (co 1 sek.): dim x as byte ... do 'sprawdź przyciski if x=60 then x=0 toggle ... end if wait1 incr x loop end Albo wykorzystać timer lub przerwanie.
Możesz to zrobić na funkcji Wait ale musisz inkrementować jakąś zmienną a w między czasie sprawdzać przyciski .
Ciepło, ciepło :) Na początek selekcje najlepiej umieść jako podprogram wywoływany z pętli głównej - w sumie może być razem z podprogramem "Wlacz:". W pętli głównej natomiast zastosuj jakieś opóźnienie zrobione w nieblokujący sposób - możesz się oprzeć o rozwiązanie jak [url=http://www.elektroda.pl/rtvforum/vi... które...
Może jeszcze włącz optymalizację kodu. U mnie nigdy to nie działało aż nie trafiłem na jakiegoś nowego BASCOMa. Jest zysk jakieś 10%. Oczywiście jeszcze zależy od programu ale u mnie było dużo w assebmlerze a tego się nie da zoptymalizować a mimo to BASCOM to co mógł to pokompresował i wyszło z 10%. U Ciebie może będzie nawet więcej. A obsługę przycisków...
Rób sobie jak chcesz bo można zrobić dokładnie wszystko tak jak chcesz jeśli tylko sprzęt "wyrobi". Natomiast myślę, że nie masz tego projektu przemyślanego od początku do końca. Coś opracowaliśmy, teraz zmiana zdania/metody/ramki. Ograniczając się do jednego bajtu sam sobie ograniczasz cały system. Można to OD RAZU zrobić przyszłościowe i z zapasem...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 10000000 Config Timer0 = Timer , Prescale = 128 Load Timer0, 5 On Timer0 czas Enable Interrupts Enable Timer0 Do If Pinc.0 = 1 Then Start Timer0 end if If Pinc.0 = 0 Then reset portd.1 end if Loop czas: set portd.1 stop Timer0 return [/syntax] Tak na szybko,... nie testowany. Zrobić możesz wszystko,...
W najbardziej prymitywny sposób możesz to zrobić tak jak napisałeś, ale rozdzielając odstępami czasu pomiędzy kolejnymi sekwencjami: Portd=&B10000000 waitms 200 Portd=&B11000000 waitms 200 Portd=&B11100000 waitms 200 Portd=&B11110000 waitms 200 Portd=&B11111000 waitms 200 Portd=&B11111100 waitms 200 Portd=&B11111110 waitms 200 Portd=&B11111111 waitms...
Nie analizowałem Twojego programu- ale może to Ci się przyda. Może moje stare belferskie umiejętności (teraz to się nazywa- zdolności pedagogiczne) jeszcze całkiem nie zanikły. 'Program poglądowy do unikania wait 'Prescale oczywiście można zmienić 'licznik też i Temp0 też $regfile "m8def.dat" $crystal = 8000000 Config Lcd = 20 * 2 Config Lcdpin...
Witam Pod prawym przyciskiem myszki, przed numeracją linii. Klikniesz, a w menu kontekstowym masz to co możesz zrobić przy debugowaniu. Pułapki na kodzie zakłada się F9, zdejmujesz ctrl+F9.
Zumek -- dzięki za wskazówki ale niestety w moim procesorze nawet po ustawieniu Timer1 na 65492 max. częstotliwość jaką udaje mi się osiągnąć to ~16KhZ. Może tak: (Nadal w Bascomie , choć nie całkiem w Basicu) $crystal = 4000000 Config Portb = Output Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle On Compare1a Introc1a Nosave Timer1 = 0 Compare1a...
Uważam, że moderator ... Działania moderatorskie wykonuję na czerwono za pomocą odpowiednich funkcjonalności. Niestety raz się zdarzyło że na czerwono wyciąłeś tekst o "niewygodnym" środowisku programistycznym :D Ale nie o tym będę pisał. Napiszę jak to wyglądało u mnie. Ja zaczynałem od BASCOMa. I to BASCOMa '51. Były artykuły w EdW. Nie miałem jeszcze...
Jeśli chcesz zrobić wait na liczniku to możesz uzyskać dwa efekty. W obu ustawiasz w przerwaniu flagę. Pierwszy do instrukcja czekaj aż flaga będzie ustawiona wykonuj dalszy ciąg programu loop Generalnie w takim rozwiązaniu nie ma sensku dawać timera. Druga opcja do instrukcja if(flaga ustawiona) reszta kodu loop Oczywiście drugie rozwiązanie...
(...) 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...
No dobrze zatem oto co udało mi się sklecić: Konfiguracja timera: [syntax=c] TCCR0B|=(1<<CS02); TIMSK|=(1<<TOIE0); sei(); [/syntax] Obsługa przerwania: [syntax=c] ISR(TIMER0_OVF_vect) { } [/syntax] I ponawiam prośbę. Czy ktoś mógłby napisać swoją konfigurację timera analogiczną do tego co zostaje zrobione w BASCOMIe. A może jest jakaś możliwość...
Witam czas późnienia wprowadzany przez instrukcje "wait" w Bascom-ie zależy ściśle od częstotliwości rezonatora kwarcowego... Jak mam to rozumieć :?: Jeśli chcesz dokładnie odmierzyć upływ czasu i wykonać jakąś instrukcję to proponuję zrobić to w funkcji przerwania dla Timer-a Pozdrawiam A timer nie jest zależny od częstotliwości rezonatora :?: Możesz...
witam czy mógłby mi ktoś napisać krótki listing do atmega64 w bascomie do obsługi rtc mianowicie konfiguracje timera chce to zrobić w ten sposób żeby np. zmienna A typu bit zmieniała się z "1" na "0" i na odwrót co jedną sekunde pozdrawiam i z góry dziękuje Dodano po 1 i jeszcze jedno kwarc 32.768khz jest dołączony do końcówek TOSC1 i TOSC2
Musisz ustawić timer. Nie wiem czy dasz radę na 5minut, ale możesz np zrobić go na 10sekund i wywołać 30razy (w timerze będziesz zliczał kolejne wywoływania i ponownie ustawiał timer, jak dojdzie zmienna do 30 to wyłączysz timer i wywołasz podprogram). Nie będzie to nic blokowało :)
Możesz zrobić tak: W tabelce zdefiniowana długość poszczególnych elementów (piknięć i przerw). W timerze zdefiniowana maszyna stanów - na podstawie jej stanu aktualnego (wartości timer'a) wybierasz określony "punkt programu" - czyli przerwę lub "piknięcie". Co się tyczy przycisków, to możesz zdefiniować albo przerwanie zewnętrzne, albo w przerwaniu...
Daj swoje źródło programu, bo nie wiem jak zrobiłeś to menu. ... Jeżeli masz wolny jakiś Timer to możesz go uruchomić podczas wejścia do menu i przy wykryciu naciśnięcia przycisku go zerować a jak nie to zrobić jakiś programowy Timer. W procedurze obsługi przerwania od Timera zrobić skok w odpowiednie miejsce.
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
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.
Masz rację No właśnie nie, bo po tym kodzie widać że to wykorzystuje wejścia T0 i T1. W ten sposób nie da się tego zrobić. 2313 ma tylko 2 Timery i możesz zmierzyć obroty maxymalnie 2 wentylatorów. No chyba że pomiar będziesz robił programowo, albo przełączał sygnały z 4 wentylatorów na jeden Timer i mierzył po kolei każdy z wentylatorów (można też...
To chyba mi nie pomoże. Jesem początkujący w bascomie 01ale z tego co wiem procesor wyjść INT ma 2 lub 3. A ja mam w planach zrobienie 4 odbiorników więc to chyba wyklucza taki sposób. Chyba że każde wyjście da się ustawić jako int? Przy jednym tylko wejściu wystarczyłoby podłączenie wejścia pod interrupt i w jego subrutynie zablokowanie tego interruptu...
Proszę. Można to zrobić na kilka sposobów. Pokazuję taki najprostszy żeby pokazać mechanizm. Kiedy bit w bajcie na danej pozycji ma wartość 1 to pin nadawczy jest ustawiany w stan wysoki i po 500us jest zerowany i znów czekamy 500us. Po tej operacji licznik wskazujący o który Bit w Bajcie nam chodzi jest zwiększany. Bity występują w ilości 8 ale numerowane...
Kolejny raz widzimy to samo. Zamiast dobrać kontroler do zadania, to próbujesz na siłę dopasować zadanie do kontrolera leżącego w szufladzie. Tutaj o tyle gorzej, że nawet się nie zastanowiłeś ile zasobów potrzebujesz, tylko od razu przyjmujesz 2 albo 3(!) kontrolery do w sumie bardzo prostej aplikacji. Moim zdaniem wszystko zrobisz na jednym uC i może...
Jak zrobić opóźnienie ok 30min z którego można zrezygnować (anulować) w każdej chwili? Nie znam asm zupełnie i tylko trochę znam Bascom'a (chodzi mi o przykład oczywiście w tym drugim). Oczywiście można wydać polecenie "Wait" kilkakrotnie, ale to sprawy nie załatwia ponieważ nie można tego anulowac - chyba ze ja o czymś nie wiem. Kwarc który użuwam...
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...
Nadal nie rozumiesz o czym koledzy piszą. Przeczytaj sobie co to są przerwania, co to są i po co są timery. Twój program powinien być taki że w pętli głównej procesor śpi, a w tle w timerach i na zewnętrznych przerwaniach dzieje się cała reszta. Timer mierzy czasy, a przerwania zewnerzne powodują wybudzenie i reakcje procka. Jeżeli masz 8 potencjalnych...
:arrow: tesla44 U mnie jest tak, że jeden timer zlicza impulsy, a drugi odmierza czas. Program wyświetla na wyświetlaczu wartość pierwszego timera, drugi timer pracuje sobie aż do odmierzenia 30 sekund, po tym czasie zatrzymują się oba i wyświetlana wartość jest stała (program czeka na wciśnięcie przycisku). Spróbuj użyć Timer0 do odmierzania czasu,...
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ł...
A nie możesz wykorzystać zwykłego timera?
Cześć mógłby mi ktoś pomóc w zrobieniu układu który by ragował na częstotliwość od 20 do 50Hz. Chodzi mi oto że doprowadzam do wejścia uP sygnał o określonej częstotliwości a procek zaraguje np. zapaleniem diody gdy sygnał ten będzie miał wartość z zakresu 20-50Hz. Poprost nie wiem w jaki sposób dobrać wartości timera i preskalera. Piszę w Bascom-AVR...
Nie chodziło mi o przerwanie od Timera tylko o coś takiego że odpalasz konwersję/pomiar oraz przerwanie kiedy będzie już wynik czyli procesor nie czeka a może w tym czasie zrobić coś innego. Jednak ta funkcja wykonuje się w 107 taktów zegara w 0.01ms więc myślę, że nie masz co kombinować. Lepiej byś napisał co to za procesor i jakie ma taktowanie bo...
Ciesze się, że się udało. Teraz możesz postawić przed sobą ambitniejsze zadanie i spróbować wykorzystać timery zamiast funkcji delay. Może w tym projekcie nie zrobi to różnicy, ale będzie okazja do nauki wykorzystania timerów, co będzie jak znalazł, gdy w przyszłości przyjdzie pisać funkcje nieblokujące. Funkcja delay zatrzymuje całkowicie na pewien...
Witam W obsłudze przerwania nie powinno być żadnych waitms itp poleceń które blokują program, Wykorzystaj timer i flagi do odliczania konkretnych odcinków czasu a wszystko inne powinno leżeć w do loop. W przerwaniu nie ma po co wyłaczać timera, tylko trzeba zrobić dzielnik tak aby flaga była ustawiana co 4ms lub 3ms tak jak chciałeś mieć. Potem trzeba...
Skup się na znaczniku FLAGA. Jeśli dany warunek z WART się spełnił to najpierw sprawdzaj czy FLAGA=0 i wtedy START TIMER co oznaczać będzie: "warunek spełniony -> licznik ma zacząć liczyć". Jeśli zaś FLAGA = 1 to STOP TIMER i dopiero teraz ustaw wyjścia bo licznik wykonał swoje zadanie. Możesz dodać kolejną flage LICZY (lub sprawdzać czy LICZNIK = 0),...
A czy mógłbym prosić o jakiś konkretny przykład? Albo poprawić ten: Config Timer0 = Timer , Prescale = 1024 On Timer(15) Gosub procedura 'czekaj 15sec. Timer On Do Loop End Procedura: Cls Lcd "ok" Waitms 500 Return Nie wiele tu mozna poprawic bo od poczatku do konca masz bledny koncept pracy z timerami. Po pierwsze: w konfiguracji wartosc 'Prescale'...
Cześć. Z tego co widzę tak na szybko twój timer jest włączony cały czas wywal z 6 lini kodu to enable timer0, druga sprawa nie widzę tam nigdzie ładowania wartości początkowej do timera, chyba że miałeś taki cel. Timer będzie liczył w kółko. A na koniec po co Ci ta zmienna sekunda w obsłudze przerwania od timera jeśli ona nic nie robi ??? Aha i myślę(czasem...
Bym chciał coś samemu zrobić a nie kupić gotowca. No to przeglądaj forum i ucz się. Program możesz napisać w Bascomie lub WinAvr; tutaj masz przykład jak podłączyć wyświetlacz: http://www.atmel.com/dyn/resources/prod_... jak chcesz mieć sensowną dokładność to podłącz do atmegi8 kwarc zegarkowy i używaj timera do odliczania czasu.
Dzięki rejestr007, ale chyba jestem jeszcze za mało doświadczony w timerach i ich obsłudze - napisałem tylko bardzo proste programy, głównie dotyczące sterowania lcd. Jeśli możesz to podaj jakiś krótki program najlepiej w BASCOMIE, najlepiej uczę się na przykładach (mam już swoje lata i ta elektronika której się kiedyś uczyłem to już dziś muzeum, choć...
Witam. Ja zrobiłbym to tak: 1. Przebieg pomiarowy wprowadziłbym na wejście przerywające INT0 lub INT1 (w 2051 są dwa więc można mierzyć dwa kanały). 2. Ustawiłbym timer do pracy ze zliczaniem impulsów 1/12 fxtal, w trybie pracy 1, a więc 16-bitowym. Przy kwarcu 12MHz daje to rozdzielczość timera 1us, a maksymalny czas liczony przez timer to 65535 us,...
Witam Piszę na atmedze8 w bascomie program do odczytywania danych z odbiornika GPS. GPS jest podłączony RSem do Atmegi, obsługuje go sprzętowy UART. Transmisja jest realizowana z prędkością 4800, megę taktuje zewnętrzny kwarc 7,3728 Mhz (ale na wewnętrzym 4 Mhz też próbowałem). Oto kod obcięty o parę chwilowo nieistotnych rzeczy (definicje zmiennych,...
Mnożenie można zrobić robiąc programową symulację PLL. Zwykła symulacja wymagała będzie użycia jednego Timera i dość zamotanego kodu. Ale można inaczej. Dwa Timery. Jeden Timer zlicza okres przebiegu. A drugiego ustawia sie żeby zliczał powiedzmy do 1/3 wartości zmierzonej pierwszym Timerem. Taki układ ma już w miarę dobre parametery bo powinien działać...
Witam Możesz to zrobić w podprogramie albo w przerwaniu. Jeśli w podprogramie to po pojawieniu się sygnału do otwarcia bramy daj sygnał do jej otwarcia, zapal lampę i skocz do podprogramu, w którym zapalisz lampę odczekasz sekundę, zgasisz ją, odczekasz sekundę i powtórzysz to np. 3 razy. Problem polega na tym, że jeśli będziesz w takim podprogramie...
Musisz zastosować sterowanie multipleksowe albo jakiś długi rejestr przesuwny (np. 4 układy 4094) żeby obsłużyć 4 cyfry wyświetlacza. To może być coś takiego: $regfile = "attiny26.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim V as Word Dim V_real as Single...
Bardzo dziękuje, działa jak trzeba. Ciesze się ze pomogłem. Wyjście możesz zrobić również za pomocą kombinacji przycisków, np wciśnięte dwa na raz. Niestety trzeba jednak ta kombinacje zapamiętać. Tak jak napisałeś, można wykorzystać Timer. Dodajesz druga flagę, np Wyjscie_menu i zwiększasz ja w Timerze a w podprogramie Menu ustawiasz sobie, ze jeśli...
Od swojej strony napiszę: mam ale nie dam (bo projekt komercyjny) To co chcesz zrobić to banalna sprawa, nawet z badziewnym bascomowym RC5 ci się uda. 1) Masz 3 kanały PWM, więc 1 zawsze jest 8bit, a 2 pozostałe 16bit też deklarujesz jako 8bit (upraszcza to całą sprawę) 2) Robisz 3 zmienne trzymające wartość dla 3 kanałów R, G, B i gdy któraś się zmieni...
jeżeli ma być dokładnie tak jak w tej nocie, to możesz zrobić tak: (przykład dla 100Hz) T = 1/100Hz = 0,01s, czyli dla wypełnienia 50% przyjmujesz 0,005s. Powiedzmy, że przerwanie z timera masz co 0,001s. Sprawdzasz co ten czas stan na wejściu, czekasz, aż pojawi się 5 poprawnych odczytów i dopiero inkrementujesz/dekrementujesz stan zmiennej. Opisane...
Witam Odświerzam temat bo mam pytanie związane z nim. To co podał mi (at)WOBI działa świetnie. Czy jest możliwe rozbudowanie tego programu tak aby drugie wyjście OC1b działało podobnie jak OC1a tylko z inną częstotliwością W programie jest: Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect , Prescale = 1 , Clear Timer = 1 pomyślałem...
And! -> możesz mi podpowiedzieć co źle robię? otóż zrobiłem deketor przejścia przez ZERO, działa bardzo ładnie, w Czasie przejscia przez Zero mam ładną szpileczkę w dół o szerokości nie więcej niż 1ms to oczywiście leci na INT0 w Atmega8 w Int0 wyłączam triaka, i jak wiadomo trzeba odczekać jakiś czas aby go załączyć. Oczywiście załączyć go trzeba...
Niestety nadal występują problemy z przesyłaniem danych z PC do atmegi poprzez rs232. Z atmegi mogę wysyłac max 14 znaków w jednym poleceniu (nie wiem dlaczego) a z PC do atmegi idą max 3-4. O co chodzi?? Nie mam już pojęcia. Czasem lubi nawet zgubić część przesłanych danych np. wysyłam cd1234 a do atmegi dochodzi 234. Dodano po 5 Może ma ktoś jakąś...
Jak masz jakiś procek z PCINT to na każdym pinie w połączeniu z Timerem będzie chyba najmniej zajmować uC. ICP w zależności od uC trzeba przekonfigurowywać na Rising/Falling a z PCINT by to już odpadło. Timer z jakimś dobranym preskalerem mógłby niekoniecznie liczyć us. Po wstępnych obliczeniach wiedziałbyś np. że 80 ticków to 64us albo coś w ten deseń...
W tym przypadku muszę zablokować bit uaktywniający odbiornik...ale nie wiem jak wpłynie to na składnię i działanie instrukcji bascoma... robiw W tym przypadku to chyba musisz zablokować nadajnik tak na moje oko. BASCOMOwi to nie zaszkodzi. Jedyne co musisz zrobić zastosować instrukcję $baud, a potem wyłączyć nadajnik. Możesz to zrobić w dowolnej kolejności....
Co do TIMERA0 proszę napisz dosłownie kawałeczek kodu $crystal = 1000000 Config Piny.x = 1 CONFIG TIMER0 = TIMER , PRESCALE = 8 Enable Interrupts Enable TIMER0 On Timer0 Dzwiek Timer0=193 Start Timer0 Do : Loop End Dzwiek: Timer0=193 Toggle Porty.x 'Na tym porcie powinien wygenerować się przebieg prostokątny o częstotliwości ok. 1kHz Return...
Może użyj timera i przerwań od niego?
Przeglądając Twój program mam takie małe spostrzeżenie, a mianowicie w pętli głównej masz wywołaną procedurę Gettime - ' Call Gettime' - która działa na I2C. Co się stanie gdy podczas wykonywania procedury Gettime zostanie zgłoszone przerwanie od Timer'a?? Program przerywa wykonywanie procedury Gettime i skacze do obsługi Timera a tam jest wywoływana...
Zmień: dim Objetosc_lcd as string*10- a potem jakie x-sprawdź. Bascom jest wolny i gruby- jak wół. Można na nim w pewnym stopniu polegać Ale opanowanie rasowego konia jakim jest C- jest trudniejsze- ma sam na wiele spraw własne zdanie. Brakuje oscyloskopu. Chyba jest-widać sonde. P.S. W głównej pętli wywołujesz menu w którym "siedzisz" przez waitms...
Obsługa przerwania zajmuje z 70 cykli (odłożenie rejestrów na stos i zdjęcie ich ze stosu). Do tego z 10 cykli na wpisanie wartości do Timera i z 10 na ztogglowanie pinu. Razem 80 cykli. 8000000Hz / 80 = 100kHz. Jako że dajesz Toggle to będziesz miał dwukrotnie mniejszą częstotliwość. Czyli max uzyskasz 50kHz. Skoro masz 32kHz to pewnie przez to że...
Miałbym wiele uwag ale zanim skończe pisać to pewnie o jakichś zapomnę :D Po pierwsze zawsze podawaj w kodzie wielkości $Hwstack, $Swstack i $Framesize W Mega32 masz 2 tysiące bajtów SRAM i możesz sobie troche pozwolić ;) To może również naprawić błąd o który kiedyś pytałeś tyczący się rysowania koła przez Cyrcle(). Ta procedura używa wielu rejestrów...
Musisz przemyśleć algorytm działania programu. Po pierwsze te mrugające diody zrób na przerwaniach z jakiegoś timera. Ustaw przerwanie tak żeby występowało kilka razy na sekundę i zliczaj ilość przerwań do 2 sekund i raz zapalaj raz gaś to bardzo proste do zrobienia. Co do pozostałych to attiny ma 4 kanały PWM a z tego co zrozumiałem to wystarczą ci...
O bascomie wiem tyle że to język programowania, dużo nie pomogę. Nigdy nie robiłem takiego układu, ale powiem jak ja bym to zrobił. Po pierwsze konfigurujesz timer tak że będziesz miał przerwanie co 10kHz (50Hz z sieci *2 *100 krok). Timer synchronizujesz siecią energetyczną, czyli zerujesz go za każdym razem jak wykryjesz zero. W tym zerze też chyba...
Zobacz ile zajmuje kod po kompilacji i czy zmieści się w ATTiny13, AVR to AVR, program powinien działać na dowolnym uK z rodziny, o ile mieści się w jego pamięci i nie wykorzystuje jakiś specyficznych cech konkretnego uK. Sprzętowo program wymaga jednego timera i 4 linii portów (możesz zrezygnować z gniazda SPI). O to mi chodzi tylko jak to zrobić...
Jak jesteś ciekawy, to możesz sprawdzić na Timer1 bez programu korzystającego z tego timera. A może z drugiej strony nie potrzebujesz aż 16-bitowego timera do innego zadania?
Z tym ADC to chodziło mi o to że można z niego zrobić Timer, bo też generuje przerwania w stałych odstępach czasu. 89S51 to już lepiej. Ma chyba 3 Timery, tak? No to jeden niech zlicza impulsy z zewnątrz (T0) a jakiś inny (powiedzmy T1) niech liczy takty zegara. Tylko że jakiś preskaler by się przydał. A w 51 to chyba tylko programowy. Czyli co kilka...
Oczywiście, że wiem jakich timerów używam. Chodziło mi o to, żeby nie szukać po dataszicie co i gdzie trzeba sprawdzić. No już poszukałem, i zrobiłem sprawdzania rejestrów TIMSK, ale myślałem, że może jest jakaś bascomowa funkcja w rodzaju : If timer1=enabled then... Z tą obsługą błędów też masz oczywiście rację, tyle, że pisząc dawno temu ten program...
A nie możesz po prostu robić obliczeń w funkcji obsługi timera 1, zapisywać to do globalnych zmiennych i następnie w głównym programie odczytywać te zmienne jeśli zamierzasz wyświetlić te wartości? Główny ekran to pewnie jakaś pętelka, która odczytuje pewne wartości, jak np. timer 0, temperatura, itp., następnie przelicza wszystko, potem wyświetla i...
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...
Dzielnik przez 8 i 9 możesz zrobić na którymś timerze sprzętowym wbudowanym w procesor. A realizacja dzielnika przez 8,5 musi być programowa: Próbkujesz sygnał wejściowy i każda zmiana stanu sygnału wejściowego powoduje inkrementacje zmiennej co daję dwie inkrementacje na okres sygnału (stan wysoki i stan niski liczone osobno). A dalej pozostaje wykrycie...
Poszukuje do tego minutnika wsadu pamięci do 89c2051 bo chciałbym zrobić coś podobnego najlepiej jakby był plik hex,bin lub kod żródłowy bo w J-89 89c2051 jest zabezpieczone przed odczytem :( Oczywiście, że są zabezpieczone. Nikt przecież nie będzie pozbawiał się przychodu, ujawniając swój program, który, jakby na to nie patrzeć, jest najdroższym elementem...
Nic jeszcze nie mam oprócz scalaka. Generalnie nie będę się upierał przy tym timerku. Potrzebuję schemat jakiegoś timera na mikrokontrolerze, żeby móc zdefiniować 10 czasów, a oprócz tego ustawić dowolny czas z ręki i uruchimić tym jakiś przekaźnik. Ten wydał mi się najodpowiedniejszy z poszukanych. Sam z kolei nie dam rady sobie zaprogramować, bo jestem...
Tzn. program może przejść do następnej linii w trakcie rozświetlania tylko nie wolno mu zmieniać nr diody w tym czasie. Od tego włąśnie jest zmienna "Go", która przyjmuje wartość zero jeśli dioda już jest w pełni jasna lub ciemna. Ustawienie tej samej zmiennej (czyli podanie jedynki dla "Go") jest sygnałem że aktualny nr diody ma znowu wygaszać (lub...
Witam serdecznie. Ostatni kod przepisałem żywcem z książki "Programowanie mikrokontrolerów w języku BASCOM" autorstwa Marcina Wiązania. Dioda miga ciut za wolno. Tu mi ręce opadają, dlatego zwracam się do Was o pomoc. Kod: Nie wierzę w to co napisałeś!!! Autor ksiązki nie zrobiłby takiego błędu... Podajesz błędne instrukcje, i oczekujesz poprawnej...
... czy jest mozliwe wpisywanie wartosci z tabeli (DATA) ale nie do calego portu tylko do 7 jego pinow? np port D ma 8 bitow ale potrzebuje jego wejscie nr5 jako wejscie timera pracujacego jako counter a na reszcie bitow chcialbym obsluzyc wyswietlacz, czy da sie to zrobic jakos? ... Oczywiście , że się da sie to zrobić :D Uzywając operacji logicznych...
Nie możesz wykorzystać timera do zliczania impulsów?
Witam Mam problem z zaprogramowaniem uC. W którym miejscu masz problem? Pierwsze, co musisz zrobić to zadecydować, który z timerów skonfigurujesz do liczenia czasu. W jakim trybie ten timer ma pracować (nie wszystkie wbudowane w "mega" timery posiadają te same opcje do wyboru i są ponadto różnej 'długości'). W zależności od taktowania procesora, wybranego...
Witam! Jakiś rok temu zainteresowałem się elektroniką. Zrobiłem kilka układów. Obecnie interesuję się programowaniem mikrokontrolerów. Zakupiłem na allegro zestaw uruchomieniowy EvB 4.3 ( wystarzczy, że wpiszecie w wyszukiwarce i będziecie wiedzieli o co chodzi) - inaczej po prostu płytka uniwersalna. Z tym, że przeważnie do tego zestawu jest dołączany...
Witam Zegarek można zrobić w oparciu o dodatkowe dwa wyprowadzenia umożliwiające podłączenie dodatkowego kwarca 32.768 kHz. W bascomie są do tego gotowe intrukcje więc nie będę przepisywał helpa. W każdym razie możesz zacząć od Config Clock = soft. Jesli chcesz na timerze to program zegarka mógłby wyglądać następująco: $crystal=8000000 Config Lcd ..............
2. W jakis sposob zrobic "wygaszacz ekranu". Chodzi mi o to zeby np. po 5 sekundach nie przyciskania zadnego klawisz pojawialo sie cos na wyswietlaczu(moze byc to nawet tylko napis) Możesz zrobić to tak, jeśli korzystasz z jakiegoś timera czasowego (jeśli nie to sobie jakiś skonfiguruj) to zrób w nim dekrementacje jakiejś zmiennej jeśli jest ona różna...
Witam, na tamtej stronce masz gotowy cały przykład w asemblerze, fakt dla nieco innej rodziny procków, jednak jak widzisz w asemblerze nie sprowadza się to tak jak w Bascomie do użycia jednego lub kilku poleceń. Tu trzeba wszystko od początku do końca zrobić samemu. Nawet gdybym podał ci cały swój kod wysyłający sygnały IR do moejgo aparatu Olympus...
Myślę po pierwsze, że dobranie przekładni tak, aby uzyskać pożądane obroty to wcale nie taka błaha sprawa, (jeśli musisz uzyskać dokładnie Wymienioną wartość) Gdyby Ci się to udało to idąc dalej drogą "mechaniczną" proponuję wykorzystać wyłącznik czasowy (do kupienia za marne grosze), w którym na obwodzie można ustawić stan włącz/wyłącz, co 15 min (lub...
Zamieściłem na tym forum plik na 2313 do czytania z sonaru z Polaroid'a w Bascom'ie. Spróbuj czy może jest dokładniejszy.
Jak używasz jakiejś bardzo starej wersji spolszczonej to możliwe, ale Demo2075 już nawet to potrafi. Możesz użyć Twojej poprzedniej konfiguracji z Load Timer, ale dodaj ustawianie tej flagi 5ms w przerwaniu.
Witam! Jestem początkującym programistą i chciałbym zrobić sobie zegarek na LCD. Napisałem kod w BASCOM z wykorzystaniem TIMERA1 i wewnętrznego oscylatora, ale on się śpieszy. Nie mogę wcale ustawić aby dokładnie odliczał jedną sekundę. Czytałem w internecie, że do tego trzeba wykorzystać TIMER2 i zewnętrzny kwarc zegarkowy 32,768kHz, ale ja mam problem...
Ok. W tym dokładnie przypadku chodziło mi tylko aby sprawdzić czy głowny program liczy impulsy nie miałem ich skąd wziąć więc wymyśliłem, że procek sam je sobie wygeneruje w przerwaniu timera0, a int0 je będzie liczył :). Całkowicie rozumiem, że użycie timera jako licznika jest lepsze. Tylko brakło timerów. Zrobiłem tak jak tu: http://www.elektroda.pl/rtvforum/topic69...
Ja to robię dokładnie tak samo tyle że nie używam do tego celu timera. Mam w układzie PCF-a i on generuje mi przerwanie co 1 sekundę i w tym przerwaniu sobie zliczam czasy. Oczywiście po naciśnięciu klawisza zeruję zmienną czasu. Dodano po 1 Jeśli nie potrzebny ci dokładny czas powrotu to możesz zrobić tak: If Pinx.0 = 1 Then Incr Y If Y = 10 Then Y...
ASM jak ASM, ale w C kod też będzie dużo mniejszy, a i łatwiej go napisać. To po pierwsze. Po drugie, nie kombinuj z wieloma prockami, bo nie dość, że będzie to żarło prądu co niemiara, to jeszcze skomplikuje płytkę, a i koszty będą większe. Najlepiej zastosuj wspomniane układy 74HC595. Obsługa tego jest banalnie prosta, a w internecie znajdziesz nawet...
Witam Potrzebuję na jakimś prostym Attiny np 13,25,45 zrobić układ który będzie realizował założenia takie: - dwa przyciski podłączone pod różne porty - dwa oddzielne porty z wyjściem PWM W momencie przyciśnięcia i trzymania przycisku 1 na wyjściu 1 jakiś tam sygnał PWM (jeszcze do ustalenia w drodze prób i błędów) po naciśnięciu przycisku 2 na wyjściu...
Dziękuję za odpowiedź, ale racji tego, że nie podałem wartości rezonatora to zrobiłeś to od końca i nadal nie wiem skąd wzięły się poszczególne liczby. Muszę to w końcu zrozumieć bo inaczej nic z tego a wszelkie książki wcale mi tego nie ułatwiają. Zacznijmy od początku te obliczenia. Będę zadawał pytania na poszczególnych etapach - ok? 1. Timer0 potrafi...
Dołączę się do tematu! Nigdy jeszcze nie korzystałem z RTC, a właśnie muszę to zrobić, postanowiłem wykorzystać AT90LS8535... mój problem jest taki, że muszę zrobić układ, który użytkownik będzie mógł zaprogramować tzn. w jakich godzinach i w jakich dniach tygodnia (w cyklu tygodniowym: pon, wt. itd.) uP ma uruchamiać podłączone urządzenia... Pytania:...
ok, tylko najpierw uporam się z przyciskami i nastawami :P Dodano po 28 $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output 'podłaczony wyświetlacz 'Config Pinb.0 = Output ' anoda 1 źle! nazwa pin służy do odczytu wartości 'Config Pinb.1 = Output 'anoda 2 źle! aby ustawić należy się posłużyć nazwą Portb.x 'Config Pinb.2 = Input...
SylwekK --> tak jak pisałem jest to obarczone takimi małymi błędami ale chodziło mi tylko o przekazanie IDEI, którą jak widzę podchwyciłeś ;) Super. Jak widzisz można się obyć bez waitms'ów a dokładność odliczania czasu nie jest tu w ogóle aż tak istotna. Za to mamy 3 różne fragmenty kodu, które działają w sposób absolutnie nieblokujący. A te warunki...
bascom timer możemy pogadać zrobić timer elektroniczny
kontrolka silnik micra philips instrukcja odbiornik 35mhz
wzmacniacz audio telefon xiaomi problemy
Myszka nie powiększa ekranu - Windows, macOS, Linux Kineskopowy telewizor nie odpala - przyczyny i rozwiązania