... Później wykorzystałem wyjście CompareA , skonfigurowałem charakter na toggle i pięknie sygnał generuje, nic nie przeszkadza sygnał jest ciągły, ale za jasną ch... nie mogę wpisać początkowej wartości i regulować częstotliwość... Świetny pomysł, tylko gorzej z wykonaniem :D Użyj jednego z dwóch trybów CTC timer1 i zmieniaj wartość końcową , czyli...
Jeżeli chodzi o sumulatory Bascoma AVR i 8051 to nie nalęży im za bardzo wierzyć w podawane czasy, jężeli przerwanie miało być wywołane np. co 10ms, Bascom mówi 15 to należy go olać i wierzyć we własne obliczenia (o ile są poprawne).
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
If Pinb.2 = 0 Then Waitms 25 If Pinb.2 = 0 Then ... Zapoznaj się z Debounce !!! Do .... Debounce Pinb.0 , 0 , Dodaj , Sub Debounce Pinb.1 , 0 , Odejmij , Sub Loop Dodaj: Incr Zmienna 'lub zmienna = zmienna + {jakaś wartość} If Zmienna > {wartość końcowa} then Zmienna = {wartość początkowa albo wartość końcowa} Lcd...
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
Nie wnikając w obliczenia chciałbym zwrócić uwagę na bascomowe polecenie Load timer1.Polecenie to w zamierzeniu autora powinno dokonać przeliczenia 65536 - 4150 = 61385 i wynik załadować do timera A w rzeczywistości to jest tak: Load Timer1 , 4150 powoduje zapis:TL1=0xCA , TH1=0xCA -patrz symulator Bascom. Daje to wartość początkową timera 51914 , czyli...
Zmiennej Napiecie nigdzie nie zeruję i to by mogło być przyczyną? Licząc średnią serii pomiarowej dzielisz sumę wartości pomiarowych przez ilość pomiarów. Jeśli nie wyzerujesz uprzednio zmiennej sumy, to otrzymasz przypadkowy wynik, bowiem do sumy wartości pomiarowych dodana będzie niezerowa wartość początkowa zmiennej.
Co jest nie tak ? Delikatnie mówiąc wszystko. 1 Timer nie wiem co liczy, cały jest źle napisany i nie powinien działać, bo np: przerwanie od timera powinno być zadeklarowane przed pętlą główną i nie w warunku. Zmienna Reload nie jest zerowana i zwiększa się do maximum typu Word Zmienna M (w zamierzeniu chyba od minut) też się zwiększa do 255 Zmienna...
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...
Hmm Nie jest to takie proste jak sobie wyobrażasz. Najprostszy zegar jaki ja często stosuję: Oczywiście preskaler i początkowa wartość timera dostosowana jest do 8Mhz Jeśli chcesz zastosować zegar z innym taktowaniem musisz sobie obliczyć początkową wartość i preskaler. $regfile = "m8def.dat" $crystal = 8000000 Dim Sekunda As Byte Dim Minuta...
Jeśli masz sterownik do silnika i potrzebujesz tylko dir i enable to raczej nie steruj go przez PWM. Potrzebujesz generatora o zmiennej częstotliwości zrobionego na procesorze. A nie o zmiennym wypełnieniu impulsów. To się nazywa rampa. Powinna być używana zarówno przy starcie jak i hamowaniu silnika. Wypełnienie powinno być stałe albo dawać krótkie...
Witam Z nudy czy też z unikania zgromadzeń, siedząc w domu wpadłem na pomysł aby zbudować timer kuchenny (minutnik). Kod źródłowy zaczerpnąłem z Elektrody. Problem polega na tym,że: Timer późni się 15 sek. na 5 min. (przy kwarcu 11,0592 MHz (2x33pF)) i śpieszy 5 sek na 5 min (przy kwarcu 12MHz (2 x 39pF)) Kod w bascom. Ustawienie wartości początkowej...
Nie znam Bascoma, ale jeśli wartoscią początkową licznika jest 4096 dziesiętne czyli 1000 szestnastkowo, to bardzo dobrze! Nie musisz zmieniac wartości TL0, ponieważ w chwili przerwania przyjmuje odpowiednią wartość (00h). Trzeba tylko w ciągu najbliższych 256 cyklach wpisać do TH0 wartość 10h (16): MOV TH0,#10h. Ale nie wiem jak się robi "wstawki"...
Akurat przepływomierz jest konieczny i ważny ponieważ dysze się zużywają i wydatek przy tym samym ciśnieniu jest inny po długim użytkowaniu . Wszelkie wydatki poszczególnych dysz reguluje norma ISO ale to są wartości początkowe
Bascom po resecie lub załączeniu zasilania na pewno zeruje wszystkie zmienne, a WinAVR najprawdopodobniej przypisuje nieokreślone wartości (kompilator wstawia uwagi za brak określenia wartości początkowej zadeklarowanej zmiennej) . Jeżeli istnieje konieczność zachowania wartości po resecie lub wyłączeniu zasilania to dane należy zapisywać w pamięci...
No właśnie jeśli w programie przed pętlą główną nadam wartości zmiennym w eeprom np. zm_eeprom = "jakis tekst" to po resecie program wystartuje od nowa i zapisze z powrotem wartości początkowe w programie do eeprom ? W takim przypadku, po każdym resecie zmienna będzie nadpisywać nową ( taką samą ) zawartością. Jeżeli przewidujesz 1 reset co kilka dni,...
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...
1. W jakim celu konfigurujesz liczniki, wpisujesz im wartości początkowe, a potem wywołujesz ich zatrzymanie przez STOP TIMER0/TIMER2 skoro nigdzie indziej ich ponownie nie uruchamiasz? 2. Jakim cudem kompilator nie protestuje gdy w pętli głównej umieszczasz samo ON TIMER0/TIMER2 nie podając trzeciego słowa kluczowego GOTO/GOSUB i ostatniego ich parametru?...
ale jest procesor jak w temacie postu czyli: 89c52, aby skompilować program na ten procesor, musisz otworzyć plik (zdaje się z rozszerzeniem dat) np. 8951.dat i dodać brakujące rejestry, ich adresy i wartości początkowe... Pozdrawiam JarGol
pewnie to jest CRC8 (8 od ośmiu bitów) i tego należy szukać. nie wiem tylko jak bascom traktuuje takei większe liczby i czy to czasem nie operuje na stringach, czy tablicach. W kadym razie jak znajdziesz już algorytm, to potrzebne są jeszcze początkowe wartości, jest kilka standardowych.
Mój ATTiny13-20PU już zaprogramowany nie ustala właść stanów. Bascom nie wyświetla żadnego błędu. Na nóżce 1 jest stan wys., na pozostałych nóżkach (2-7) jest stan niski... A inicjujesz porty uC na początku programu. Dla AVR to ważne. BASCOM ci nie wyświetli błędu, bo ustawienie wartości początkowych portów I/O CPU spoczywa na programiście. To co napisałem...
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
Pokaż schemat to raz. Dwa: co to jest? Set Pinb.5 Set Pinb.6 Set Pinb.7 Tak po za tym chyba brakuje ci wartości początkowej timera0... Nie obraź się ale przy tym oscylatorze i preskalerze 64 otrzymasz przerwanie co najwyżej co 2ms... Na koniec zapamiętaj że program zawsze umieszcza się w znacznikach "code".
Ja bym to zrobił bez tablicy, bo szkoda pamięci... Przypominam, że Atmega8 ma tylko 1024 Bytes Internal SRAM Twój program skutecznie zjada 200 x 2 (2 tablice) x 2 (Wodr) = 800 Bajtów Czyli jeszcze jedna taka tablica i będziesz musiał kupować lepszy procek :) Wystarczą 2 zmienne i 2 ify. Dim Xmax As Word Dim Xmin As Word Xmin=1024 Xmax=0 For C = 1 To...
Witaj. Myślę nad utworzeniem warunku na początku kodu który by sprawdzał jedną komórkę eeprom i jeśli by była wartość 255 oznaczało by że nowy procek i należy przypisać zmiennym wartości początkowe . Czyli zwykle zostawiasz zmienne bez przypisania im początkowej wartości? Jak w takim układzie działają Twoje programy po wyłączeniu zasilania lub resecie?
Witam! 1. czas na konwersję 750 ms, jest to maksymalny czas potrzebny tylko wtedy, gdy mamy czujnik podłączony tylko dwoma przewodami, a wiec przy zasilaniu "parazytowym" i przy maksymalnej rozdzielczości pomiaru. 2. w przypadku kiedy czujnik jest podłączony trzema przewodami, ten czas może być skrócony do około 20 ms. 3. ten czas nie oznacza, że trzeba...
Niedokładnie przeczytałeś. W zakładce nawigator: Config Timer- uwaga! po ustawieniu prascale licznik natychmiast zaczyna zliczanie. Można użyć start Timerx i stop Timerx Np. Config timerx, prescale 'timer zaczyna liczyć stop Timerx 'timer stoi- ale już coś zliczył Timerx=y 'timer ma wartość początkową =y - np.0 Start timerx ' Timerx zaczyna liczyć od...
??? SOUND to ona nie generuje różnych tonów ??? A parametr czas impulsu? Decyduje przecież o częstotliwości, a ilość impulsów to czas trwania danego tonu. Co do skrobnij jakiś kawałek kodu to napisanie programu wymaga obliczenia wartości początkowych lub wartości porównania dla timera dla każdego tonu osobno. Niestety tak dużo czasu nie mam i muzykiem...
Nie rozumiem co się tutaj dzieje. Zmienna Reference nie ma żadnej przypisanej wartości początkowej. Jak np uzyskać 50% świecenia diody? Nie chodzi mi o stopniowe przyciemnianie, po prostu chciałbym mieć możliwość w dowolnym miejscu programu ustalenia jakie napięcie ma być na danym wyjściu. Nie potrzeba żadnej wartości początkowej, jest to zmienna typu...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
No widzisz, nie czytasz tego helpa. Timer się inaczej ładuje. Chcąc mieć początkową wartość timera0 równe 250 piszemy: Load timer0 , 6 Co do zmiany timera na Timer1 to trzeba wiedzieć, że ten timer jest 16 bitowy
A co to za zmienna Nr? Jaką ma wartość początkową i czy ustawioną? Sprawdziłbym jeszcze w symulatorze, czy program "wyrabia" z tymi wszystkimi instrukcjami w obsłudze przerwania i czy nie jest w tym czasie generowane kolejne.
A spróbuj jeszcze na początku wstawić zaraz po definicji portów wyjściowych jedynki na wyjście czyli np. po [syntax=basic4gl]Config Portb = &B11111111 'piny 0-7 wyjście LED[/syntax] wstaw [syntax=basic4gl]Portb = &HFF[/syntax] Po prostu po konfiguracji początkowej najczęściej port przyjmuje wartość 0 i stąd ta światłość w Twoim przypadku :)
Sprawdź ten kod. Powinno być wszystko OK. Początkowo chciałem tego "PLL Lock" zrobić na przerwaniu ale widzę, że podłączyłeś tam LCD. $regfile = "M8def.dat" $crystal = 1000000 Dim X As Byte Dim Wpis As Word Dim Wpis2 As String * 5 Dim Przed As String * 3 Dim Po As String * 3 Dim Dlugosc As Byte Config Portd.13 = 1 Config Portd.12 = 1 Config...
Prosze bardzo: 'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM 'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64 'Przycisk S1 zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal...
Dla osób które chcą wykonać ten zegar od razu podpowiem, że smużenie to normalka. Proszę spojrzeć na program bascom autora. Prescaler 1, taktowanie wewnętrzne procesora 8Mhz. I proszę sobie obliczyć częstotliwość multipleksowania wyświetlacza. Przecież to idzie praktycznie na maksa. Powinno się zwiększyć preskaler i wpisać wartość początkowa do timera....
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...
Nazwa=adres hex,wartość początkowa 89C2051.dat: [BIT] ACC = E0 , 00 B = F0 , 00 IE = A8 , 00 IP = B8 , 00 P1 = 90 , FF P3 = B0 , FF PSW = D0 , 00 SCON = 98 , 00 TCON = 88 , 00 [BYTE] SP = 81 DPL = 82 , 00 DPH = 83 , 00 PCON = 87 , 00 TMOD = 89 , 00 TL0 = 8A , 00 TL1 = 8B , 00 TH0 = 8C , 00 TH1 = 8D , 00 SBUF = 99 , 00 [MISC] up=AT89C2051 IRAM = 128...
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
Dim Empty As Eram Byte At 0 Dim Tzap1 As Eram Single Dim Ua As Eram Byte Dim Ub As Eram Byte Dim Uc As Eram Byte Dim Ud As Eram Byte Czy to jest wszystko co powinienem zrobić.?. Czy powinienem jeszcze używać dyrektyw typu np $eeprom i $data ?. Czy wręcz odresować bezpośrednio tą pamięć zapis/odczyt?. A powinno być takie proste, ale nie jest, więc w...
Spróbuj: $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 24 Config Portd = Output Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output ' ustawiam porty do saa1057 Dat Alias Portd.3 'SPRAWDŹ CZY DOBRZE ZDEFINIOWAŁEM Ena Alias Portd.2 Clk Alias Portd.1 'przyciski Ddrc =...
Witam winien Ci jestem przeprosiny jeżeli do timer1=39729 załadujesz taką wartość początkową ( nie load tylko timer1=39729) to przerwanie wykona się co 0,00322587s TIMER1=0 to przerwanie wykona się co 0,00819200 ( tak jak napisałem parę postów wyżej)
załóż globalną zmienną której wartość będzie określała numer pętli która się właśnie wykonuje. We wszystkich pętlach sprawdzaj czy ta zmienna ma poprawną wartość - jeśli nie, to skok do właściwej pętli. Wartość tej zmiennej zmieniaj w przerwaniu, ustaw ją początkowo przed pierwszą pętlą (po RESET) i będzie działać. np. loop1: DO [...] LOOP UNTIL petla=1...
Się rypie. Nie 262,11 / 29. Nie dzielisz- dodajesz tylko wartość początkową. Czyli 4usx29- czyli licznik będizie liczył do końca o 116us krócej. Aq ponieważ jest to 262ms to te 116us będzie bez znaczenia.
Co do kwarcu to definiujemy go zawsze, niezależnie od tego czy proc pracuje na zewnętrznym, czy na wewnętrznym, bo to jest informacja dla kompilatora, wg jakiej wartości ma wyliczyć czasy dla różnych instrukcji. Jeżeli to jest "nówka sztuka" to pracuje na wewn. 1MHz. Jak sam zauważyłeś, instrukcja "Loop" powinna znajdować się po ostatnim "Endsub", ale...
Portb = Mem_wiert ustawia na porcie odpowiednią kombinację stanów Mem_wiert = 1 - Końcówka 0 stan wysoki; reszta niski Mem_wiert = 2 - Końcówka 1 stan wysoki; reszta niski Mem_wiert = 4 - Końcówka 2 stan wysoki; reszta niski Mem_wiert = 8 - Końcówka 3 stan wysoki; reszta niski portb=0 wyłącza zasilanie silnika. Łatwiej jest sterować portem za pomocą...
Program powinien wyglądać następująco: $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B11111111 Portd = &B11111111 Dim I As Byte For I = 0 To 1 Portd.5 = 0 Waitms 650 Portd.5 = 1 Waitms 1000 Portd.5 = 0 Portd.6 = 0 Waitms 1000 Portd.6 = 1 Waitms 450 Portd.6 = 0 Portd.7 = 0 Waitms 500...
Początkową wartość Timera1 liczymy: Częstotliwość / preskaler i wynik odejmujemy od 65536 (bo timer1 liczy do tylu) czyli 16000000 / 1024 daje 15625 65536 - 15625 = 49911 I tą wartość ładujemy do timera1
Ja bym tak zrobił że początkowa wartość to DACBx = np 50 czy coś. Tu pliki, karta na porcie E, w pliku MMC-XMEGA trzeba przestawić pinologię na swój port MMC. Słychać jakby schody, brumienie. Nie wiem jak to wyeliminować. Zmiany przerwy między ładowaniem nic nie dają. Niestety na razie zamiast timera co 22Khz jest waitus, ale jak zmieniam wartość tej...
Program w Basicu (bliżej nieokreślonej wersji) 5 Pin_output=0; 10 We=Pin_start 20 if we<>1 then goto 10 ; Czekanie na zmianę stanu wejścia start 30 licznik=5 ; wartość początkowa 40 Out_Display=licznik ; wyświetlenie aktualnego stanu licznika 50 Delay(1000) 60 licznik=licznik-1 70 if licznik> 1 them goto 40 80 Pin_Output=1; 90 END;
Zumek zaproponował nam prace timera w trybie CTC (Clear Timer on Compare match) - zerowanie licznika (i wywołanie przerwania OC1A) po wykryciu zgodności rejestru TCNTn z OCRn. Można w ten sposób "skrócić" timer do potrzebnej wielkości. Odpowiada to mniej więcej "skracaniu" zakresu liczenia timera przez wprowadzenie wartości początkowej tyle, że licznik...
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
Wyświetlanie paska głośności: Dim L As Byte Dim Temp_l As Byte 'pomocnicza zmienna Config Lcd = 16 * 2 L = 130 'wartość początkowa Cls Do Temp_l = L / 16 Temp_l = L + 1 Locate 2 , 1 Lcd "----------------" Locate 2 , Temp_l Lcd "0" Loop Czy dzielisz L przez 16 tzn zmienna Byte i wynikiem dzielenia też jest zmienna Byte?
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...
Tak jak radzi cyberdar zastosuj przerwanie generowane od timer1,przy kwarcu 4Mhz jak dasz prescale 256 i załadujesz wartość początkową do zliczenia 15625 do tajmera1 uzyskasz przerwanie co 1s a w przerwaniu możesz już z tym robić co chcesz np.zwiększać jakąś zmienną co 1s. Tak jak kol.wyżej napisał robienie tego w petli programu mija się z celem.
Zumek - Masz rację pewnie co do stosów i nawet nie chcę rozpoczynać tutaj polemik. Ja w swoim programie użyłem SPL=223 bo akurat taką wartość mi wskazywał tuż po rozpoczęciu pętli głównej, czyli wskaźnik stosu "początkowy" ustawiony już po wszystkich konfiguracjach na początku programu. Wartość ta pewnie się zmienia np. przy wykorzystaniu LCD albo przy...
http://obrazki.elektroda.pl/3786622300_1... Jest to już kolejna odsłona popularnego i bardzo wygodnego w użyciu testera wykonana przede wszystkim w oparciu o http://obrazki.elektroda.pl/3596629000_1... Płytka wykonana termotransferem wyszła mi lepiej niż mogłem sobie to wyobrazić - bez żadnych podtrawień, itp. efektów...
Witam. Pętla while wykonuje się póki warunek jest spełniony. Aby odczytywać dane od początkowego adresu musisz w każdym przebiegu pętli zwiększać wartość zmiennej z adresem, i w warunku sprawdzać czy nie osiągnął wartości końcowej &H008C (Adres_xr_odczyt <> &H008C), a dodatkowo sprawdzić czy B1 jest równy 0. Nie sprawdzałem tego i dawno...
Witam Buduję sobie zasilacz regulowany na moje potrzeby do zabawy elektroniką. Wymyśliłem sobie, że nastawę napięcia wyjściowego zrobię za pomocą enkodera. Na wyświetlaczu mam pokazane napięcie początkowe np.: 0,000V Czyli w kodzie będzie to zmienna String Teraz chcę każdą z tych cyfr z osobna zmienić, tzn ich wartość od 0 do 9. Chodzi mi o ustawianie...
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.
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
witam. potrzebuję odmierzyć równo 1 sekundę, przykład wziąłem z kodu : http://obrazki.elektroda.pl/8005169500_1...
DZIĘKI WIELKIE Jeżeli dobrze rozumiem to ustalam początkową wartość licznika i kiedy licznik się przepełni zostaje przerwana główna pętla i skok do podprogramu. W jaki sposób wyliczyć jaką musi mieć wartość zmienna aby występowało na wyjściu 8Hz? Czy są może jakiej jeszcze rozwiązania, bo jak zauważyłem to skok do podprogramu będzie wykonywani 8 razy...
mowa o konkretnym bicie, ogólnie próbuje przepisać program z bascoma na c skrót programu Dim X As Byte Dim Wpis As Word Dat Alias Portb.7 Ena Alias Portb.6 Clk Alias Portb.5 Wpis = &B1000000111000101 '33221 To jest konfiguracja syntezy (AM) krok 1kHz Wpis = 27180 'To jest początkowa watrość częstotliwości 27,18MHz 0 Step -1 Dat = Wpis.x 'Tu...
Jeśli chodzi o PWM to dorzucam Ci 2 programy sterowania PWM za pośrednictwem 2 przycisków w języku BASCOM. 'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM 'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64 'Przycisk SI zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika...
"Jeszcze pozostaje jak te napięcia min i max ustawiać z oprogramowania procka a nie z analogu" Oczywiście że można. Jest tylko problem przy wyłączeniu zasilania: Przy analogu zawsze będzie uruchamiany z wartością stałą, ustawioną na potencjometrze. Przy regulacji programowej będzie startował z wartością początkową zapisaną w programie, a nie ustawioną...
Mirekk36 Co do działania samego programu to trafiłeś w sedno:) Na INT0 ma podawaną szpilkę z detektora zera sieci. To przerwanie ustawia wartość w Timer0 i uruchamia go, a po dotarciu do jego przerwania wykonuje się ten kawałek kodu: Triac: 'program przerwania Timer0 Stop Timer0 'zatrzymanie Timer0 Portb.2 = 1 'wystawienie sygnału na moc3022 Waitus...
Wielkie dzięki Teedd, ale czy możesz mi jeszcze wyjaśnić o co tu chodzi, bo przecież instrukcja Load Timer0 = 25 powinna być tożsama z instrukcją Tcnt0 = 231. A przy okazji jeszcze jedno pytanko. Spotkałem się z tego typu zapisem: Timer0 = Timer0 + liczba (lub analogicznie Tcnt0 = Tcnt0 + liczba ), gdzie liczba to wartość początkowa wpisywana do licznika...
A nie prościej liczyć to za pomocą Timera1 czyli na sekundę ma być np. wyświetlonych 50 obrazów i każdy z nich zawiera np. 10 części. Daje nam to 500 przerwań na sekundę. W przerwaniu Timer1 ustawiasz za każdym razem początkową wartość timera i ustawiasz jakąś flagę. Możesz również dodać zwiększanie licznika od tego co ma być wyświetlane. W programie...
Hmm dalej nie kumam do końca o co chodzi jestem początkujący ... Znalazłem taki program w książce do odmierzania 1 s tylko jak to do mojego programu dołączyć [syntax=basic4gl]'Przykład wykorzystania Timer0 do generowania w przerwaniu '1 sekundowych odcinków czasu 'Program co sekundę w przerwaniu zmienia na przeciwny stan linii 'PD0 sterującej diodą...
Dzięki za kalkulator i wyjaśnienie Napisałem kod z timer1 do odmierzania odcinków czasu po 10 sekund. 10 sekund świeci led i następne 10 sekund nie świeci i tak w kółko. Oto kod: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Pind.0 = Output Const Timer1 Reload = 9765 Config Timer1 = Timer , Prescale = 1024 Load Timer1 , Timer1 Reload...
Przeanalizuj następujące zjawisko. Na pin wystawiasz jedynkę ale ten pin jest tak obciążony że faktycznie na nim jest np 1.5V co stawia go w sytuacji zera. Teraz rozkazem, zaneguj wartość na danym pinie i zanegowaną wartość wystaw na nim robisz tak: odczytujesz co jest na pinie a przecież mimo że ustawiłeś go na jedynkę to ze względu na obciążenie masz...
Ja też podam przykład w BASCOMie: $regfile = "m8def.dat" $crystal = 1000000 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 64 Dim I As Byte Pwm1a = 0 'wpisanie wartości początkowej 0 Do For I = 0 To 255 Pwm1a = I Waitms 10 Next I For I = 255 To 0 Step -1 Pwm1a = I Waitms 10 Next I Loop End Jak zmieniać wartość PWM? Pwm1a...
Witam sprawdź ten kod co prawda są inne numery portów i inny procek ale jak zmienisz powinno działać. Problem jest jeden w momencie jak naciskasz przycisk i zmieniasz końcówkę na WYJŚCIE to stan tego pinu Musi być (0) Niski , żeby nie zrobić zwarcia. '$sim $regfile = "attiny2313.dat" $crystal = 11059200 $baud = 9600 enable interrupts 'włącz...
witam ponownie. Innym wyjściem jest zastosowanie przerwania z TIMER1 (16bit.) z preskalerem 1024, oraz ustawienie wartości początkowej po każdym przerwaniu na 55770, wtedy przerwanie będzie realizowane co 1,00003800 s, więc zdążysz ze wszystkim, a jeśli jeszcze wywołasz sprawdzenie temperatury zaraz po wykonaniu przerwania wtedy już napewno zegar będzie...
Witam Miałem podobny problem i rozwiązałem go właśnie watchdog-iem, poczytaj ten temat: http://www.elektroda.pl/rtvforum/topic48... Skok do adresu zerowego, nie jest najlepszym rozwiązaniem, ponieważ jak ktoś wcześniej wspomniał nie ustawia to rejestrów na wartości początkowe. Nie chodzi tu tylko o stany portów ale wewnętrzne rejestry (przerwania,...
witam! dziękuję za podpowiedź ale mam wyłączony ten fusebit. jeszcze przed chwilą dla pewności sprawdzałem:) sprawdzałem jeszcze jedną rzecz: ustawiłem dla obu timerów wartość początkową = 50 i powoli zwiększałem ją o 1. na obu timerach częstotliwość równo się zmieniała aż do momentu jak timer 3 osiągnął wartość 255(wtedy zaczął szaleć) natomiast timer1...
trzeba przeprowadzić tak zwaną inicjalizację w C wygląda ona tak void rtl_init (void) { rtl_config_ports(); // konfiguracja linii komunikacyjnych rtl_reset(); // reset RTL8019A rtl_write(RSTPORT, 0x00); // wpisz wartość 0 do komurki Reset Port dlms(30); // czekaj 30 milisekundy rtl_write(CR, 0x41);...
Dzisiaj na stronie elportalu znalazłem komentarz na temat bascoma i ATtiny. Bascom nie obsługuje prawidłowo ATtiny. Start Timer0 czy stop Timer0 nie działa (przynajmniej dla ATtiny2313). Trzeba wpisać do odpowiedniego rejestru właściwą wartość żeby timer wystartował itp. Trzeba się zapoznać z dokumentacją. Rejestry sterujące timerami są podzielone na...
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...
Witam... Kolego <PiotrzePitucha> troszeczke nie rozumiem zapisu... nie spotkałem się jeszcze z takim zapisem.... mógłbyś mi to wytłumaczyć..?. Chciałbym jeszcze dodać kawałek kodu o który właściwie toczy się moja batalja.. Otóż chciałbym móc ustawiać zmienną SINGLE i zapisywać tą wartość do pamięci eeprom. Kod programu: Sub U_termostaty Cls Lcd...
ver. 1.11.8.1 z 2005 roku wg "About". Jeśli chodzi o pytanie o to czy chodzi bez problemu to jest to oczywiście tylko pomyłka wynikająca z tego że pisałem kod w poście z palca a nie kopiując. W sprawdzanym programie oczywiście jest zmiana dla timera0 na prescaller = 1024 i wartość początkową 178 tak żeby mniej więcej wychodziło 10ms przy 8MHz. Pozdrawiam...
nie zapomnij że można wybierać zmienną z tabeli inną zmienną np portd = kolumny(k) a nawet bity portd = kolumny(k).b gdzie k i b to zmienne typu byte Możesz więc stworzony tekst umieścić w tablicy a potem np zmieniając początkową wartość zmiennej k robić przesuwanie tekstu. Ogólnie żeby nie smużyło to tak: portb = zmienna(1) stan na 1 kolumnie czas...
Błąd wynika z tego, że nie masz dobrze opanowanych operacji bitowych. Niestety smutna prawda. Do tego dochodzą przyzwyczajenia z Bascom, tam prościej operowało się poszczególnych bitach portu. A jak w kwestii Timera0 ? jeśli dobrze wyczytałem w PDF Attiny2313 to: Dla TCCR0A jest WGM01 i WGM00 Dla TCCR0B w trybie Compare jest CS02, CS01 i CS00 [/quote]Nie...
Witam wszystkich, Tak jak w temacie: Poszukuje sprawnego programu aby zrobić zegar LCD na ATMEGA8. Program musi być w języku bascom. Znalazłem coś takiego ale nie działa :/ Opoźnienie sekundy wynois jakies 4s 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk...
Przeglądając forum i sieć trudno znaleźć proste sterowniki pod RS 232 , dlatego zbudowałem sterowniki za pomocą których możliwe jest sterowanie silnika krokowego unipolarnego , binarnego oraz 2 silnikami dc Projektując sterowniki wyszedłem z założenia aby były możliwie proste w budowie , funkcjonalne , możliwe do wykonania przez każdego , to samo dotyczy...
Ten load Timer mnie zmylił. Zawsze ustalam wartość początkową. Wyliczenia i sprawdzenie: Tak jak podał mirekk36- przerwanie co 13.2us Z tego co podał atom1477- odkładanie na stos 14us. Czyli praktycznie cały czas w przerwaniu. Ale układ gubi co drugie przerwanie i na wyjściu toggle stan zmienia się co 28.1us (teoretycznie powinien co 26.4us ale ostatecznie...
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...
Zamiast wstawiania statycznej tabeli obliczonych 100 kroków, byłbym skłonny użyć funkcji trygonometrycznych dostępnych w tym języku. http://avrhelp.mcselec.com/index.html?si... Choć z drugiej strony z całkami i liczeniem pola byłoby sporo zabawy. Ciekawe, czy i jaka będzie wówczas oszczędność pamięci procesora. Odnośnie podlinkowanego softu Moc.exe...
. 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ś...
Jam pozbyć się zewnętrznego kwarcu w kodzie? co trzeba pozmieniać? Zaprogramować fusebity na żądaną częstotliwość zegara wewnętrznego pamiętając, że na wewnętrznym taktowaniu pomiar nie będzie dokładny. Przeliczyć wartość początkową umieszczoną w zmiennej Licznik. Ponadto warunek: [syntax=basic4gl]If Czestotliwosc > 100 Then Portc.0 = 1 [/syntax] powoduje,...
Witam Chciałbym dołączyć się do rozmowy odnośnie generowania impulsów. Zabawę z Bascom rozpocząłem niedawno. Chce na Atmega16 napisać program do generowania impulsów z regulowanymi szerokościami impulsów (zarówno 0 jak i 1) na OC1B a sygnał zanegowany na OC1A. Obie szerokości impulsów regulowane z zakresie 0,05ms -10ms a wartość nastawy regulowana jest...
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...
To chyba po to była ta duża zmienna żeby można było na niej działać.. Nie zagłębiałem się w temat i nie wiem jaka jest wartość początkowa ale załóżmy te poprzednią. [syntax=vbnet] Wartosc = 4401250 'powinna miec jakas wartosć poczatkowa Fdown: Czesrx2 = Czesrx2 - 1 If Czesrx2 < 80 Then Czesrx2 = 80 Else 'jesli Czesrx2 jest jeszcze większa lub równa...
Kod wygląda tak i nadal nie działa tak jak bym chciał.. Chcę żeby w 5 minucie zapaliła się dioda podłączona do PORTB.0, ma się tam pojawić stan wysoki więc podłączam diodę do masy i nic. [syntax=basic4gl]'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk S1 ustawia...
O jest: http://avrhelp.mcselec.com/index.html?wa... po za tym chyba nie potrzebujesz mieć dokładnych 5 sekund więc to powinno być wystarczające. Autor zaznaczył w pierwszym poście żę ma w zadaniu użyc Timer1 , więc delay lub wait, waitms jest poza zasięgiem wymogu. Aby użyc w programie dowolny timer należy go uprzednio sconfigurowac (ustalic tryb...
Ok, dzięki. Ale problem na tym się nie skończył. Teraz po naciśnięciu switcha atmega zachowuje się nietypowo *********************** https://www.dropbox.com/s/wsodhlckfw60le... *********************** Zamieszczam film. Wgrałem kod od kolegi (at)UP :> nie dodaje do zmiennej 1 "impulsu" a zamiast tego, początkowo 5 a potem...
Witam! Mam pewien problem z przesłaniem stringa przez UART. W programie mam zadeklarowane kilka stałych tekstowych, które zawierają pewne komendy. Napisałem sobie Sub-a któremu jako parametr przez wartość przekazuje te stałe. Procedura ta ma za zadanie wysłać ( za pomocą printbin ) początkowe dane, komendę którą przekazuje przez wartość, policzoną sumę...
Witam, Mam mały problem z napisaniem kodu tak aby ten program uruchamiał się za pomocą przycisku [syntax=basic4gl]Config Pinb.1 = Output 'linia pb1 jako wyjście Config Timer0 = Timer , Prescale = 256 'deklaracja timera jako czasomierza On Timer0 Przerwanie_co_2ms 'deklaracja jaka etykieta obsługuje Led Alias Portb.1 'alias dla wyjścia b.1 Dim Licznik...
Kolego skompiluj sobie kod poniżej i poczytaj zawarte w nim komentarze. I jeszcze jedno masz spory problem z tak prostym kodem a jednocześnie wartość po $crystal wynosi u ciebie 16MHz rozumiem że poprawne konfigurowanie fuse w tym uC masz opanowane. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 'KONFIG WYJSCIA Config Portb.2 = Output...
wartość początkowa wpisać wartość bascom wartość rejestr bascom
keylogger klawiaturze laguna stuka silnik buczy pompa
napęd force stereodekoder radmor
Passat B5 TDI kombi – gaśnie na ciepłym silniku, czujnik G62, przekaźnik 109, diagnostyka VCDS Przekaźnik w pralce Samsung - wygląd i funkcje