Kasować licznik- a nie przerwania- na początek. Kasować licznik i musisz zastosować dwie flagi, inaczej nie da rady. Jedna sprawdzająca czy już możesz odczytać dane, drugie sprawdzająca czy już możesz wysłać żądanie odczytu:)
Nie musisz czekać. Musisz zacząć trochę inaczej myśleć niż "linijka po linijce" Wykonaj konwersję i wystartuj timer. Pozwól programowi biec dalej. Odczytaj temperaturę, gdy timer odliczy te 800 ms. Pamiętaj, że program główny to zazwyczaj pętla. Niech nawet sobie bezproduktywnie biega w koło do czasu zanim nie będzie można odczytać temperatury. Później...
Dodaj Waitms przed Loop: [...] Waitms 10 Loop
Poskładałem taki programik: ... Timer0 = 0 Start Timer0 Waitms 900 Stop Timer0 Wyn = Timer0 * 1 ... Czy można wyeliminować WAITMS. Można to jakoś inaczej napisać?? A co ten programik ma robić, bo taki sposób użycia timera i waitms to dość niespotykana konstrukcja.
A żeby uprościć sprawę, można użyć polecenia PULSEIN? Ma rozdzielczość 10us co wystarczy no i mierzy okres od razu. Lub czy żeby przyspieszyć wyświetlanie wyniku nie mogę po prostu odczekać krótszy czas? np. Timer0 =1 Start Timer0 waitms 100 Stop Timer0 Wynik = Timer0*600
Dzięki " szymtro " za odpowiedź niestety ale wgranie tego samego program nic nie zmieniło :( również użycie biblioteki reg51.dat nie wpłynęło na zmianę czasów dla komend waitms, wait. Timer0 pracuje jako czasomierz i działa poprawnie więc skąd taka różnica w działaniu między procesorami ?
Zastanawia mnie czy aby waitms nie używało timer0 do generowania opóźnienia... Napewno nie używało :D Piotrek
Z bascomem zacząłem jakiś miesiąc temu, w C zacznę programować jak jeszcze trochę poduczę się bascoma (już zacząłem, to skończę). Napisałem taki program: $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Input Config Portd = Output Config Portb.0 = 1 Config Portb.1 = 1 Config Portb.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
Czyli trzeba by było zliczać czas zaczynając od impulsu rosnącego kończyć zliczać na spadającym obliczyć ile to jest i w zależności od tego sterować portem (np światłami do lądowania) [syntax=basic4gl] $regfile = "attiny2313.dat" $crystal = 1000000 Config Portb = Output Portb = &B11110111 Config Portd = &B11111000 Portd = &B1111111 Dim Sygnal...
Witam Postanowilem zrobic przelacznik modelarski na procesorze ATTiny . Program ma rozpoznawac czas impulsu i od tego uzalezniac stan wyjscia . Czasy impusow 1- 1,5 stan 0 1,5-2 stan 1 .problem mam z napisaniem procedury ktora zozpoznawala by szerokosc impulsu na razie cos takiego napisalem : $regfile = "at12def.dat" $crystal = 1200000 Config Pinb.3...
Masz rację ,kod wyglądał tak : Dim Wynik As Long Dim Wynik1 As Long Config Timer0 = Counter , Edge = Rising Config Timer1 = Counter , Edge = Rising Config Portb.1 = Input Config Portb.0 = Input Portb.0 = 1 Portb.1 = 1 Cursor Off Cls Do Timer0 = 0 Timer1 = 0 Start Timer0 Start Timer1 Waitms 500 Stop Timer0 Stop Timer1 Wynik = Timer0 * 30 Wynik1 = Timer1...
$crystal=3000000 '3MHz '---------------------------------------... On Int1 Przerwanie_int1 On Timer0 Przerwanie_timer0 Tmod = &B00010001 'tajmer0: 16 bit i tajmer1: 16 bit Tcon = &B00000101 'zbocza opadajace Ie = &B10000110 'wlacz przerwania i timer0 i int1 '---------------------------------------...
Odkopię temat bo mam problem też z Attiny13. Problem jest następujący: po skonfigurowaniu timera0 jaki licznik zaczyna on zliczać kolejne takty procesora z określonym preskalerem ale w momencie użycia procedur waitms lub if timer0 zatrzymuje się. Dzieje się tak podczas sprawdzania na sprzęcie jak i na symulatorze. Program powinien działać poprawnie,...
waitms 100
no raczej działa nawet w następnych cyklach. sprawdz jeszcze to $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_1s Dim Licz As Byte , I As Byte Enable Interrupts Enable Timer1 Start Timer1 Timer1 = 65535 - 15625 Do Loop End Odmierz_1s:...
Tutaj masz listing który będzie współpracował ze schematem który zamieściłeś. Kiedyś takie coś robiłem i do 100kHz chodziło na pewno. Dopasujesz to tylko do swoich potrzeb, ale na razie to załaduj i zobaczysz co będzie. I to wszystko na jednym liczniku się robi. '********Pomiar czasu trwania impulsu ujemnego przebiegu prostokątnego i częstotliwości*********...
O flagach jeszcze nic nie wiem, a te wait 1 są tylko w fazie testów, żeby łatwiej było wyczuć o co chodzi, natomiast waitms 1 jest i pewnie będzie bo mimo iż używam timer0 to jeśli nie wstawię waitms 1 to diody delikatnie mrugają bez przerwy. Jednak byłbym wdzięczny gdyby ktoś przynajmniej jakiś przykład wskazał rozwiązania mojego problemu.
nie wiem czy o to chodziło bo nie mam na czym uruchomić tego programu (tzn. mam Bascom ale nie mam zestawu '51), ale wg mnie dopiero ten program zadziała: $crystal = 16000000 '$default Xram $large Dim Cyfra(12) As Byte Dim Jedn_sekund As Byte Dim Tempo As Byte Config Timer0 = Timer , Gate = Internal , Mode = 1 Th0 = &Hd8 ' Tl0 = &Hd7 ' =10025 cykli...
Troszkę zmieniłem, sprawdź czy działa. Troszkę nie rozumiesz co piszesz dlatego oporni Ci to idzie najpierw zwiększa liczbę a potem sam ją zerujesz, więc siłą rzeczy zawsze będzie równa zero. Druga rzecz to zwiększasz "liczbę" tylko od jakiej wartości zaczynasz? Najlepiej zaczynać od zera. itd [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000...
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 Jak odczytac dokładną wartośc z Timer0 (liczbę wszystkich impulsów), teraz zmienna A zbiera tylko same przepełnienia. [syntax=vbnet] $crystal = 8000000 config pind.4=input ' Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.5 , Rs = Portc.4 Config Lcd = 20 * 2 Cls Cursor Off Noblink Dim A As Single...
Witam, nie mogę sobie proradzić z obsługą timer0 w przerwaniu. Zamiast wł/wył port po początkowym opóźnieniu co 0,5s ustawia się w stan wysoki i tak sobie świeci w nieskończoność. Co jest nie tak? Kod poniżej: $prog &HFF , &H73 , &HFF , &H00 $regfile = "ATtiny13.DAT" $crystal = 128000 Wyj Alias Pinb.1 'wyjście Config Wyj = Output 'ustawienie...
Piszecie, piszecie a nikt nie zobaczył jaki SYF jest w przerwaniu: [syntax=basic4gl] Wyswietl: For N = 1 To 4 Step 1 Portb = Lookup(n , Katody) Portd = Lookup(l(n) , Tablica) Waitms Czas Next N Load Timer0 , 125 Return [/syntax] Zjechaliście go za Waitms i słusznie, ale zobaczcie jak magicznie zrobił multipleksację na For-Next. Jajca niesamowite. Rekinisko,...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
Witam ponownie. Chciałem odświeżyć temat. Mianowicie napisałem kod który będzie zliczał ilość impulsów w czasie 1 sek i zapalał diodę jeśli przekroczy limit. Nie mogę dostać się teraz do motocykla więc postanowiłem sygnał brać z wentylatorka CPU. Wyczytałem, że tam jest wyjście OC więc podciągnąłem do + przez 1kohm i z kolektora sygnał dałem na T0....
A czy w BASCOMie komenda 'wait 1' przy dyrektywie $crystal=<fosc> nie załatwi wszystkiego ?? Oczywiście że tak, jak się używa Bascoma to po to te instrukcje są już gotowe żeby nie kombinować. Biorąc się za budowę jakiegoś urządzenia, trzeba i tak chcący coś dokładnie zrobić użyć miernika częstotliwości i generatora funkcyjnego, a wtedy wyliczymy...
$regfile = "m8def.dat" $crystal = 800000 Config Timer0 = Timer , Prescale = 64 Dim Licz8ms As Byte Enable Interrupts Dim A As Byte 'Enable Timer0 'On Timer0 Procedura Load Timer0 = 250 Reset Portc.5 Reset Portc.4 Reset Portc.3 Set Portc.0 Set Portd.4 Config Watchdog = 2048 Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config...
A więc w jaki sposób mogę to zrobić :?: Proszę konkretnie o wskazówki z jakiej funkcji tu skorzystać. Z przerwań Timer0? Jeśli tak to jak to ogólnie działa? Bo z tymi przerywaniami po prostu nie czaje. I jak to zrobić? jakim sposobem? (najlepiej jakby to nie był problem to proszę o przykładowy ogólny kod na 1-ną diodę, aby timer0 "sterował" diodą jak...
Witam. Napisałem program który mierzy czas między podaniem napięcia na cewke przekaźnika, a przyciągnięciem kotwicy i zwarcia styków. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 1a Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 Config Timer0 = Timer ,...
Mam problemy z odbiornikiem modelarskim gdzie jest sygnał PWM o różnym wypełnieniu. Chciał bym zmierzyć czas tego wypełnienia. Napisałem prosty program ale jak na moją głowę coś z nim nie tak. Zbyt prosto wygląda. Może lukniecie na niego i podacie jakieś spostrzeżenia ? [syntax=c]$regfile = "M8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin...
czujka już działa. Rozwiązałem to w ten sposób: Do Disable Int0 Disable Timer0 Dsid1(1) = 1wsearchfirst() 1wreset 'inicjacja magistrali 1WIRE While Err = 1 1wreset Wend 1wwrite &H55 1wverify Dsid1(1) 1wwrite &HBE B1 = 1wread() B2 = 1wread() T = Makeint(b1 , B2) T = T * 10 T = T / 16 If T <>...
$regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 1 Config Portb = 255 Config Portc = 255 Config Portd = 255 Portb = 0 Dim A As Byte 'Czerwony Dim B As Byte 'Zielony Dim C As Byte 'Niebieski Dim D As Byte 'Czas A = 0 B = 255 C = 255 D = 4 Zolty: Do Pwm1b = A Set Portb.4 Waitms...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
moze ktos mi pomoc z ustaleniem wartosci Tiemr i counter tak aby stany 0 i 1 trwaly np 1ms ? $crystal = 6000000 Dim A As Iram String * 21 Dim Z As Iram String * 1 Dim K As Byte Dim Znowu As Bit Config Timer0 = Timer , Gate = Internal , Mode = 1 Counter0 = 30000 On Timer0 _slij Enable Timer0 Enable Interrupts A = "1010101010101010101010*" Z...
Witam. Męczę sie z pomiarem odległości ultradźwiękami i układ już prawie działa (nad i odbiornik mają ok 10mm średnicy - czy to nie za mało?): pokazuje odległość w cm ale trochę za dużo, reaguje na oddalanie i zbliżanie sonaru od ściany (odległość rośnie lub maleje). Problem jest taki, że program czasem się zatrzyma (chyba wtedy gdy nie odbierze echa...
Dzień dobry ! Sprawdź ten kod: [syntax=vbnet] $regfile = "attiny2313.dat" $crystal = 1000000 $hwstack = 8 $swstack = 16 $framesize = 32 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Porta.0 , Db6 = Portd.1 , Db7 = Porta.1 , E = Portb.3 , Rs = Portb.4 Config Lcd = 16 * 1 Cursor Off Cls Const Wartosc_timera = 131 Config Timer0 = Timer , Prescale = 8 On...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do for i = 0 to 1023 pwm1a = i waitms 10 next for i = 1023 to 0 step -1 pwm1a = i waitms 10 next Loop End Pozdrawiam
$crystal = 8000000 Config Lcd = 16 * 1a Config Int0 = Falling Config Timer0 = Timer , Prescale = 256 Config Watchdog = 2048 Config Pind.0 = Input Config Pind.1 = Input Config Pind.3 = Output Config Pind.4 = Output Config Pind.5 = Output Dim Regulation_counter As Byte Dim On_off_flag As Bit Dim Regulation_type_flag As Byte Dim Int_counter As Byte Dim...
Pobawiłem się dziś chwilkę programowym PWM. Jest to rozwiązanie na 8 kanałów - 25 może być ciężko pociągnąć ale oczywiście możesz próbować rozbudować program i zmienić częstotliwość zegara czy wywołania przerwań. Pierwszy to demonstracja tworzenia w zasadzie dowolnie biegnącego światła - dane umieszczamy w liniach Data (wartości od 0 zgaszone do 8 max...
Lecz zrobiłem sobie testy: Że na wyświetlaczu wyświetlam wartość B, i jak się okazało, jeśli zamienię Config Timer0 = Timer , Prescale = 1 na Config Timer0 = Timer , Prescale = 8 to wartość B zmienia się szybciej! Dlaczego tak się dzieje? Może dlatego że jest jest prescale =1 to przerwanie jest wykonywane co 32us czyli w czasie tego waitams 20 trafia...
witam mam zrobioną obsługę wyświetlacza led na przerwaniach i problem z odbieraniem znaków przez uart mianowicie uart "gubi" znaki podczas odbioru, jeżeli wyłączę przerwania przerwania problem znika, niestety wyświetlacz muszę mieć zrobiony na przerwaniach i nie wiem jak mam się z tym problemem uporać. poniżej zamieszczam wybrane fragmenty kodu. $regfile...
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...
[syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 '$sim Dim A As Byte Config Timer0 = Timer , Prescale = 1024 Enable Interrupts Enable Timer0 On Timer0 Plus Do Print A Waitms 1 Loop End Plus: Incr A Return [/syntax] Teraz program działa. Zmieniłem prescaler, by przepełnienie występowało jak najwolniej. Przyczyną braku działania programu...
Witam. .............. Program testowy ma działać tak, na początku na sekundę wyświetla 36 na wyświetlaczach (i to zawsze się dzieje), później ma liczyć od 00 do 99, i tak w kółko. Pozdrawiam Zmieniłem trochę twój code. -Nie testowany.... (tylko symulator)........ [code][syntax=basic4gl] ' Example for 2 digit LCD display (Common Anode) ' Anodes are...
Powertowalem trochę forum i rzucił mi się w oczy taki kodzik: [syntax=vb]$regfile = "m16def.dat" 'informuje kompilator o pliku $crystal = 8000000 'informuje kompilator o częstotliwości oscylatora Config Timer0 = Timer , Prescale = 256 Config Portd.2 = Input Config Int0 = Falling Dim L As Byte Dim L2 As Byte Dim L3 As Byte Dim Wynik As Byte Config Lcd...
landy13 -> Poprzedni kod źle wkleiłem na forum, sprawdzam kompilując i programując. Przerobiłem kod, wysyła,ale jest problem z czasem... http://obrazki.elektroda.net/33_12548561... 1. Fusebity są OK (załączam dla pewności) http://obrazki.elektroda.net/11_12548558... 2. W kodzie zmieniłem na 8MHz (kod) $regfile = "attiny2313.dat" $crystal...
To musi działać: $regfile = "m8def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 64 Ddrb = &B1111_1111 Portb = &B1111_1111 Ddrd = &B1111_1111 Portd = &B0000_0000 Dim Nr_wysw As Byte Dim Display_buffer(4) As Byte Config Timer0 = Timer , Prescale = 256 On Timer0 Mult_wysw Enable Timer0 Enable Interrupts Load Timer0...
Po ciężkich zmaganiach z metodą losową dla kolorów postanowiłem porzucić ten pomysł i zastosować przewidywalny sposób który będzie się powtarzał co jakiś czas. Może i nie jest to rozwiązanie pierwsza klasa, ale działa. Nie stosowałem jednak korekcji gamma, bo przy rozdzielczości PWM 8 bitów i zastosowaniu płynnego rozjaśniania było widać przeskoki (mruganie)...
Witam mam taki kod: $regfile = "m1280def.dat" $crystal = 16000000 $baud = 9600 Dim A As Integer , B As Single Dim S As String * 7 A = 0 Config Portb = Input Portb = 255 Waitms 1 Enable Interrupts Config Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Prze_timer0 Do B = A * 256 B = B + Timer0 B = B / 15625 S = Fusing(b , "#.###")...
Na czas komunikacji 1wire musisz wyłączaś przerwania od timer0 (albo go zatrzymywać) bo właśnie to jest przyczyną. Sub Odczyt_temperatury(byref Konfig As Byte) 'jeśli parametr =0 odzytuje wszystkie czujniki, jeśli 1 to 'pierwszy czujnik jeśli 2 to drugi itd. Dim Odczyt(2) As Byte Local T As Integer Dim Temp As Single Local L As Byte...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Jak zrealizować tą zmianę pinu 5 atmegi 13 z wejścia czekające na sygnał i jak odbierze sygnał staje się wyjściem, a przy pinie 6 odwrotnie, wytłumaczcie mi to jak możecie na jakimś przykładzie, bo nie mogę żadnego konkretnego znaleźć. Do tego rodzaju sterowania nie potrzebujesz takiej kombinacji z dwoma pinami sterowania. możesz to zrobic na jednym...
witam. Napisałem taki oto program. LCD jest podpięty w trybie 4ro bitowym. y=53 x=3y=53 Za jakiś czas zaś lcd jest pusty. Jeżeli w pętli głównej zmienię waitms 50 na 1000 to program dłuższą chwile wszystko pokazuje dobrze, ale i tak prędzej czy później na lcd pojawiają się krzaczki niczym z matrixa. Mój tok rozumowania jest taki; w pewnym momencie gdy...
Hej Podłączenie pinb.0 do masy za pomocą rezystora 10k pomogło. Przycisk zachowuje się tak jak powinien. (at)sk700,(at)arktik1,(at)Fredy : Spróbuję zrobić właśnie zrobić odwrotnie czyli wykrywanie stanu niskiego. Co do rezystora do led to racja. Z tym wewnetrznym rezystorem tez pokombinuję (at)Saabotaz: 1)ok 2)racja, na razie na szybko testuje i staram...
Wielkie dzięki ;) Rezystor całkowicie rozwiązał problem. Moze i rozwiazal jeden z problemow i to nie calkowicie. Popatrz na swoj kod: Licz: Incr Przerw0 If Przerw0 = 3125 Then Incr Setne Czy na pewno beda to setne sekundy? Druga sprawa to jest bledem umieszczenie startu STOPERA w "Do ... loop, uzaleznione od stanu pinu. Od momentu nacisniecia przycisku...
Zmień fragment programu na poniższy [syntax=basic4gl] Config Adc = Single , Prescaler = Auto , Reference = Internal On Timer0 Timer_przerwanie Enable Interrupts Enable Timer0 Start Adc Start Timer0 Set Buzer Waitms 250 'pikanie poczatkowe Toggle Buzer Wait 250 Toggle Buzer Buzer = 0 A = 0 'program glowny Toggle Buzer Do If A = 10 Then Toggle Buzer End...
Przy takim programie, na wyświetlaczu pojawiają się albo same krzaki, albo znaki zapytania, a jeżeli uruchomi się, to jest samo 0... Nie zwiększa się zmienna. [syntax=basic4gl]$regfile = "m8515.dat" $crystal = 8000000 Config Portb.1 = Output 'RW LCD Portb.1 = 0 Config Timer0 = Timer , Prescale = 1024 Tccr0 = 4 Enable Interrupts Enable Timer0 on timero...
Witam, Bardzo proszę o sprawdzenie czy program jest poprawnie napisany. Nie korzystałem do tej pory z instrukcji Watchdog, więc nie mam pewności czy jest ona poprawnie umieszczona. Zadaniem programu jest stały pomiar napięcia i w razie wystąpienia spadku załączany jest przekaźnik na czas 2 minut. Jeżeli spadek będzie występował czały czas to przelaźnik...
Korzystając z Waszych wskazówek przerobiłem program tak: Dim Test As Long ... Start Adc Do Wart_ac = Getadc(1) Cls Lcd Wart_ac ; Lowerline Lcd Test; 'poprawka Waitms 250 Loop End Czas: Stop Timer0 Stop Timer1 Czestotliwosc = Czestotliwosc * 64 Czestotliwosc = Czestotliwosc + Counter0 Test = Czestotliwosc 'poprawka Czestotliwosc = 0 Counter0...
witam mógłyś się wyrazić nieco jaśniej :D "w każdym z nich przerwanie od timer0"... licznik po przepełnieniu wygeneruje przerwanie bezwzględu na to gdzie w danej chwili jest główny program (jeśli jest odpowiednio skonfigurowany) opisz dokładnie co chcesz zrobić :) pozdrawiam Dodano po 1 hmmm chyba załapałem o co chodzi :D pomyślmy... Dodano po 24 Bascom...
Zrobiłem ostatnio coś takiego: http://www.elektroda.pl/rtvforum/topic15... Z poprawką Atoma chodzi dobrze. Dla ULN program należy uprościć do 4 lub 8 stanów. No i przerobić na ATTiny. Prędkość obrotową można regulować zmienianiąc wartość początkową Timer0. P.S. Postaraj się zapomnieć o waitms- należy to stosować tylko wtedy gdy nie zależy nam...
regfile = "2313def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 'Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4 Cursor Off Config Pind.6 = 1 Config Pind.0 = 0 Portd.0...
W ogóle gigantycznym nieporozumieniem jest próba "gadania" z czujnikami DSxxxx w przerwaniach. Jak zwykle pojawia się temat flagi, którą wystarczy ustawiać w przerwaniu a w pętli głównej korzystać z tej flagi i co odpowiedni interwał czasowy "prowadzić" rozmowę z czujnikami - inaczej to bez sensu. A już nie wspomnę jak niektórzy mówili żeby do przerwania...
Mam pewien problem, polegający na tym, że program w momencie użycia procedury warunkowej lub funkcji potęgowania resetuje się. Może ktoś wie dlaczego: $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Dim T As Single Dim Ta As Single Dim Pwv As Single Dim Dly As Word Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2...
Jak dla mnie to powinno być tak. Nie mam kompilatora pod rękom nie jestem pewien czy jest dobrze ale to mniej więcej to. Kod: $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input ' ustawiam we/wy Dim A As byte 'po co marnować pamięć A = 0 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Enable Interrupts Do If Pind.4 = 0...
Mam wielką prośbę a mianowicie z dokończeniem poniższego softu w bascom. Jestem początkujący w Bascom i programowaniu. A więc do rzeczy, zbudowałem sobie wyłącznik oświetlenia na module bluetooth hc05 i kontrolerze mega8. Napisałem soft i nie mam żadnego pomysłu jak go skończyć. Najpierw omówię działanie sterownika i jego logikę: po włączeniu zasilania...
Pozwól niech się "samo" zmierzy i wydaje mi się że nazwy są zakrutkie(A to przecież akumulator - daj dłuższe np. przerwanie0) do cls lcd "dlugosc:";impulsy waitms 100 loop przerwanie0: disable int0 enable int1 stop timer0 impulsy=counter0 return przerwanie1: disable int1 enable int0 counter0=0 start timer0 return i musi się coś...
Sprawdź miernikiem napięcie podawane z LM35 na ADC. Przepisałem ten kod tak by był przejrzystszy. Przy okazji zaoszczędziłem 8% pamięci. To nieistotne. Istotne natomiast jest to, że teraz widać, że układ wyłączy się jeśli odczyt na ADC będzie w zakresie 250-300. Powyżej lub poniżej tego zakresu krążek będzie świecił. [syntax=vbnet]'Program "elektronicznej...
Procedura wykonywana od przewania Timer0 powinna być jak najkrótsza co najwyżej zmieniać flagi a w głównym programie (Do loop) zrobić obsługę ustawionych w przerwaniu flag Dlatego w procedurze przerwania Co_25ms nie dawaj Waitms 25 Ona prawdopodobnie nie kończy działania przed jej ponownym wykonaniem I dałeś w niej Jeden If zakończony endif a drugi...
OK. Sprawdziłem odwrócenie trybu pracy i jest dobrze, tzn przy wygaszeniu dioda wygasza się całkowicie, przy pełnym wysterowaniu nie widać różnicy z włączonym na stałe portem. Dla potomnych którzy kiedyś potrzebowali by takiego kawałka kodu tento kawałek : $regfile = "ATtiny45.dat" $crystal = 8000000 Config Portb.4 = Input ' potencjometr Config...
hello i am using the hp02s sensor in a circuit for barometr.i have read of the calibration value d0=46170,t0=35393,p0=10127,s=340,c=298 .my value for t1 and d1 61423 61423.please help me.they are t1=d1?vcc=5v and i make with timer0 a frequency for mclk.and my frequency atmega 32 is 1MHz i am using lcd for display. i think my freaquency mclk is mistek.am...
Nie mogę uruchomić przerwań w tym procesorze. Przerwania od timer0 nie dzialają ani w symulatorze Bascom AVR, ani po zaprogramowaniu proca. Poniżej kod programu. $regfile = "8515def.dat" $crystal = 8000000 Dim Count As Byte , A As Byte , X As Byte , Z As Byte Config Pinb.0 = Output Config Pinb.6 = Output Config Pinb.7 = Output Config Pinc.0...
Ja również miałem problem z multiplesowaniem wyświetlaczy i jednoczesnym odczytem 1wire. Pomysł z wyłaczeniem przerwań od timera na czas transmisji 1wire okazał się prawidłowy. Ponieważ w trakcie pomiaru świeci się jeden wyświetlacz aby efekt był nie zauważalny możemy dokonywać pomiaru temeperatury rzadziej. Oto mój programik : $regfile = "m8def.dat"...
zrobiłem Load Timer 0 = 250 i odliczanie do 250 jak poprzednio i też nie działa $regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 $framesize = 96 $hwstack = 96 Reset Portd.3 Dim Tryb As String * 14 Dim Lz As Integer Config Portd.3 = Output Config Portc.5 = Input Config Portc.1 = Input Config Portc.0 = Input Set Portc.5 'but praca Set...
Teraz program działa idealnie jeśli chodzi o wybory i realizacje , ale nie podoba mi się robienie przerw za pomocą waitms i chciałem uruchomić timer0 tak żeby można było zmienić czas cyklu od 1 sek do 2 sek. Wprowadziłem zmienna A jako byte , ograniczyłem do 99 , ze są 3 diody to cykl byłby co 33 gdzie wartość 99 mogla przyjąć od 1 do 2 sek . Nie wiem...
Witam ponownie ! Kiedyś gdzieś czytałem że projekt z Bascoma 8051 można przenieść do Bascoma AVR i wjakiś sposób automatyczny przerobić listing pod AVR (ATtiny2313) Pozdrawiam. Stefan Ps. Jeśli będziesz miał problem a nie "pali się" to popróbuję ten listing przerobić na ATtiny2313. Już udało mi się przerobić na AVR (ATtiny2313) 'przerobiłem, kompiluje...
Chodziło tylko o zamianę Timer1 na Timer0, ale ok mogę pokazać który nie działa... a właściwie który już działa... dobrałem wartości prescale i load całkowicie doświadczalnie... miałem nadzieje że ktoś wyjaśni co i jak z tym przy okazji ale ok... inne pytanie jeszcze... jak ten program się zachowa przy przeniesieniu na atmega8 (8mhz - internal)? (nie...
Dzięki za odpowiedź. Posiedziałem trochę i napisałem takie coś: [syntax=basic4gl]$crystal = 12000000 $regfile = "89C2051.DAT" Config Timer0 = Timer , Gate = Internal , Mode = 2 On Timer0 Przerwanie0 Load Timer0 , 250 Enable Timer0 Start Timer0 Dim przycisk1 As Bit Dim przycisk2 As Bit Dim przycisk3 As Bit led1 ALIAS P1.1 led2 ALIAS P1.2 'petla glowna...
[syntax=basic4gl] '$sim $regfile = "M32def.dat" $crystal = 8000000 $swstack = 64 $hwstack = 64 $framesize = 64 $baud = 9600 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 Config Serialin = Buffered , Size = 5 Config Timer0 = Timer , Prescale = 1024 On Ovf0 Timer_0...
Ogólnie chyba dobrze, ale to Waitms w przerwaniu wygląda na mój gust brzydko :) Zamień treść Twojego podprogramu obsługi przerwania na moją i ustaw timer0 prescale na 64 a bedziesz miał ten sam efekt, i kod wynikowy bedzie krótszy.
Program który wypisałem testowałem tylko na bascomie natomiast na Procku w nieco odmiennej formie zamiast print było LCD po wcześniejszym skonfigurowaniu LCD co do kodu to spróbuje dopiero wieczorem Dzieki Dodano po 5 No i dalej nic nie działa Próbowałem też tak $crystal = 16000000 Config Timer0 = Timer , Prescale = 8 Config Pina.0 = Output Config Pina.1...
chciałbym zliczać impulsy generowane przez transoptor szczelinowy mam taki kod ............ prosił bym o jakieś wskazówki bo to dopiero początki z mikrokontrolerami i niektóre rzeczy mnie przerastają Daj sobie spokoj z Wait, Waitms. Do naliczania przedzialow czasowych zastosuj drugi timer np. Timer0. Nie musi to byc koniecznie 1 sekunda. Dodasz odpowiedni...
Witam Procesor jak w temacie. Podłączyłem sygnał zmienny (fala prostokątna) do obu nóżek PortB0 (T0) i PortB1 (T1). Napisałem program w celu sprawdzenia czy oba liczniki działają: $regfile = "M16def.dat" 'Wybór kontrolera ATMega16 $crystal = 8000000 'Kwarc 16MHz Config Lcd = 20 * 2 'Rodzaj wyświetlacza Config Lcdpin = Pin , Db4 = Portc.1 ,...
$regfile = "m8def.dat" $crystal = 16000000 $baud = 57600 $framesize = 32 $hwstack = 32 $swstack = 32 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Debounce = 30 'Długość naciśnięcia przycisków Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s...
Dzinx Zaraz się zabieram za Twojego help'a ;) Już - stestowane : Dodano po 31 $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output 'Portb = 0 Config Portd = Input Portd = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Start Timer1 Config Timer0 = Pwm , Prescale = 8 ,...
może inaczej , Clockrate moge ustawić na więcej ale to i tak niczego nie zmienia . Odbiornik odbiera dane po wysłaniu z nadajnika i ładnie wyświetla na lcd . Pytanie to bardziej chodzi o to czemu timer0 w odbiorniku jest blokowany lub chodzi tyle samo czasu co przerwa WAITMS w nadajniku . Przerwanie do SPI jest krótkie ale po wysłaniu danych następuje...
Wymyśliłem coś na próbę nim zacznę kombinować bo nie wiem czy do końca to ma tak wyglądać jak przedstawiam bo to teoria książkowa na której opieram swoje założenia. $crystal = 8000000 $regfile = "m8def.dat" ... .. Config Timer0 = Timer , Prescale = 64 .. On Timer0 Timer0_int Enable Interrupts Enable Timer0 Timer0 = 6 Licznik = 0 Timer0_int:...
Witam. Robię sonar do pomiaru odległości za pomocą ultradźwięków na Atmega8 w Bascomie, przy zastosowaniu wzmacniaczy sygnału odebranego z przetwornika pomiar działa. Widziałem na stronie http://www.patron.net.pl/artykuly/AVR_tu... sonar, w którym odbiornik ultradźwiękowy jest podłączony bezpośrednio do pinów komparatora analogowego i jest tam...
Coś mi nie wychodzi chyba w złym momencie kody wpisuje Twoje podpowiedzi kolego "emarcus". [syntax=basic4gl] 'Stoper $regfile = "M32def.dat" $crystal = 16000190 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Lcd = 16 * 2 Config Timer0 = Timer , Prescale = 1 Config Porta.2 = Output...
Dzięki za pomoc :!: Napisałem coś takiego, ale zmienna przycisk ciągle wynosi 3 (bez podłączonego joy też 3): $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 Config Pina.0 = Input Config Pina.1 = Input Config Pina.2 = Output Config Pina.3 = Output Config Timer0 = Timer , Prescale = 1024 On Timer0 Mult_kl Dim Temp1 As Byte Dim Temp2...
witam. w moim programiku multipleksowanie czterech wyświetlaczy 7-segm. odbywa się inaczej niż zakładałem, i nie mogę ruszyć z miejsca. $regfile = "m8def.dat" $crystal = 1000000 '$sim Config Portd = Output Portd = &B11111111 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output On Timer0 Multi...
Witam Staram się zrobić odliczanie na przerwaniach - jak do tej pory nie używałem jeszcze przerwań, więc proszę o wyrozumiałość za banalne pytanie. A więc tak. Potrzebuję za pomocą Timera0 wprowadzić diodę w pulsację z częstotliwością 10Hz (to tak dla testu) Wszystko wydaje się w miarę proste. Skonfigurować T0 i przerwanie na ten zegar. A więc mam tak:...
O wielkie dzięki. A jeszcze takie małe pytanko przerwanie zachodzi dopiero wtedy gdy pind.3 dostanie sygnał w tym wypadku ten nasz odbiornik czy dobrze to rozumiem ?? Napisałem taki program ale kurde jest straszny mały zasieg max do 3cm co w nim mozna byłoby zmienic ?? $regfile = "attiny13.dat" $crystal = 9600000 Config Pinb.4 = Output Portb.4...
Łap. W Tiny13 ma 460 bajtów i nie zajmuje nawet połowy. Zostawiłem Tobie tam jeszcze kilka bajtów RAM a podstawowe funkcje kodujące i repeat masz więc możesz się pokusić o więcej przycisków, albo nawet klawiaturę na ADC ;) To jest takie najkrótsze demo z jedną komendą ON/OFF dla telewizora. [syntax=vbnet]'*************************...
Tego pod uwagę nie brałem wiec przemyślę to. Jest to licznik godzin pracy i minut. układ może być uruchamiany i wyłączany parę razy na godzinę a ma w miarę dokładnie liczyć czas. Pamięć ma 1,000,000 Erase/Write cycles guaranteed( tyczy się 24cxx) wiec da rade. Pamięć niech będzie internal a co mi tam :) zapis przy braku zasilania to jest myśl:) układ...
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
Nie wiem czy wybrałem dobry dział na ten problem, ale zapytam. Ćwicząc multipleksowe sterowanie wyświetlaczem 7 segmentowym, chciałem napisać licznik wciśnięć przycisku. Oto kod: $regfile = "m32def.dat" $crystal = 16000000 Config Portb = Output Config Porta = Output Config Pinc.0 = Input Config Timer0 = Timer , Prescale = 256 Declare Sub Wys(cyfra...
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Czyli tak robię licznik: $crystal = 8000000 $regfile = "m8def.dat" Config Timer0 = Timer , Prescale = 64 On Timer0 Timer0_int Enable Interrupts Enable Timer0 Timer0 = 6 Licznik = 0 Timer0_int: Counter0 = Counter0 + 6 Incr Licznik If Licznik = xx Then - 1s/250Hz = 0,004s , licznik co 0,002 przy licznik 2 mamy 250 licznik 1000 i mamy 0,5hz...
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
attiny waitms atmega8 waitms command waitms
wysoki użycie dysku universal controller czarna pasek lewej
suszarka bauknecht mikrokomputer cobra1
Bezpiecznik gniazda zapalniczki Mazda 626 Comprex Lagujący Notatnik - przyczyny i rozwiązania