Witam, Mam nadzieję, że piszesz programy z wcięciami a tutaj tylko przypadkowo wkleił ci się kod bez wcięć - bo masakrycznie się to czyta - nie tylko komuś ale i samemu można się pogubić na maxa, ale do rzeczy .... widzę, że odczyt robisz sobie w jakiejś tam procedurze i ok - skaczesz do tej procedury gdy twoja zmienna Byt = 0 . I jak się patrzy na...
witam czy moze mi ktos powiedziec jak odczytac w bascomie flage TR0 chodzi mi o to ze dalsza praca programu ma byc uzalezniona od tego czy licznik dzial czy nie moze w bascomie jest inny sposob zeby odczytac stan licznika dal przypomnienia dodam ze flaga ta znajduje sie w rejestrze Tcon a adres rejestru jest podzielny przez 8 wiec mozna go adresowac...
WItam W projekcie na Atmega328p wymagane są dwa UARTy, próbuję zrealizować drugi jako programowy którego odbiór danych miałby być uruchamiany przerwaniem INT0, mam kłopot z zerowaniem flagi EIFR przerwania, odbiór 1 bajtu danych wywołuje 2x wejście do przerwania, kombinuję by wejście do przerwania kasowało rejestry flagi INT0 jednak obojętnie czy piszę...
Działa elegancko. Żeby było wiarygodnie to nawet wygrzebałem Ardu Leonardo z m32u4 na pokładzie. Na jedną rzecz bym jeszcze uważał. Twój kod nie jest w żaden sposób synchronizowany. Może się kiedyś zdarzyć, że jedna z wiadomości nie dojdzie. Z nie będzie miało wartości 3 i przy nastepnej wiadomości procesor zacznie przypisywać wartości innych zmiennych...
Bo wszystkie wartości w tablicy odczytywanej poleceniem Lookup muszą być tego samego typu. Mógłbyś podać źródło tej informacji? Czy po prostu wiesz to z autopsji? W helpie nic taiego nie napisano przy poleceniu lookup, zgrabnie ominięto ten problem tworząc dwie różne zmienne i odczytując byte do byte a word do word. Niezbyt to pocieszające bo nawet...
Wystarczy zamienić funkcję wait na taką, która wykorzystuje timer - nawet niekoniecznie przerwania, po prostu czeka, aż stan timera zwiększy się o odpowiednią wartość (odczytujemy timer, obliczamy stan końcowy i czekamu w pętli aż timer tyle osiągnie) - taka pętla będzie w miarę niezależna od przerwań, no chyba że w tych przerwaniach spędzasz strasznie...
nic to nie pomaga.... już testowałem czy samo nie zacznie działać przez godzinę i nic. Jedynie tylko reset za pomocą pinu RESET sprawia że moduły nawiązują połączenie od razu. Oto zdjęcia modułów, lecz myślę że to nie ma żadnego znaczenia Dodano po 3 Teraz pomyślałem... chyba że ktoś zna sposób na programowy reset atmegi z flagą do eeprom ?
W przerwaniu już innego przerwania nie obsłużysz Przerwanie od WDG chyba tak (przyznam, że nie sprawdzałem czy gdy WDG zadziała w IRQ to nie wywoła resetu). Tyle, że nie wiadomo jakiego CPU użył autor. Co do innych przerwań, to może wstawić rozkaz SEI w IRQ, tyle, że czasem, trzeba najpierw skasować flagę przerwania.
Witam, miałem na zaliczenie zrobić jakiś projekt z wykorzystaniem mikrokontrolera AVR, jako ze miałem tak mało czasu jak doświadczenia to zrobiłem działający projekt ze strony '************* Konfiguracja uC ***************** '***************************************... $regfile = "attiny2313.dat" $crystal = 16000000 Config Portb = &B11111111...
Cytat : "portach LCD i diod " tak tylko z ciekawości o co chodzi koledze z tym podkreśleniem i wytłuszczeniem "diod" ??? Bo jeśli chodzi o pisownię to jest w jak najlepszym porządku. Chyba kolega nie ma na myśli, że powinno być "di ó d" - bo to masakra Mam gratulować bystrośći wzroku czy czymś to mierzyłeś. Co w/g Ciebie powinien zrobić program, a...
Do rejestru trafia wartość 8 zatem bit AS2 jest ustawiony. CONFIG TIMER2 jest zbędne w tym programie gdyż CONFIG CLOCK = SOFT sam ustawia ten licznik i jego przerwania. 7: Config Clock = Soft +00000047: ldi r24, 0x08 ; set AS2 in ASSR +00000048: out ASSR, r24 +00000049: ldi r24, 0x05 ; prescale 128 +0000004A: out TCCR2, r24 +0000004B:...
Niestety w bascomie obsluga wyswietlacza jest do d*py dlatego samo wyswietlanie w przerwaniu nie pomoze bo rozjedzie ci znaki od razu....musi byc index... kolego nsvinc jak się nie zna czegoś to nie określa się tego mianem, że jest "do d*py" to świadczy tylko o twoim ogólnym poziomie wiedzy programistycznej. takie wyświetlanie o jakie chodzi autorowi...
Na tej stronie z linku na dole znalazłem taki kod: '**************************** 'Konfiguracja '**************************** $regfile = "attiny2313.dat" $crystal = 12000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config 1wire = Pind.5 Config Timer0 = Timer , Prescale...
Sorki za ostry ton, ale wasze wypowiedzi przypominają wypowiedzi ślepego o kolorach. Zaczynacie przygodę z programowaniem (przynajmniej wasze wypowiedzi na to wskazują), a autorytarnie stwierdzacie co jest lepsze i jaki kod generuje. Żeby było śmieszniej to kolega szaro pokazuje kod, który wcale nie jest ekwiwalentny i się dziwi, że są różnice w długości....
na wejścia podłączony jest enkoder(pierwszy zrobiłem z myszki komputerowej) w zależności na którym wejsciu pojawi się pierwszy impuls to przerwanie jest obsługiwane jako pierwsze . może cos z tego skorzystasz. obsługa przerwań jest na dole Dodawanie: i Odejmowanie:. Ale Panowie litości w krytyce to jest mój pierwszy program w Bascomie. Tak się złożyło...
Bez przerwania od INT0 wydaje mi się że się da,ja bym to zrobił tak w funkcji odczytującej z rtc dopisał bym takie cos: If Rtcsec = Staresec Then Flaga=0 Else Flaga = 1 Starecec = Rtcsec endif Czyli za każdym odczytem bedzie sprawdzane czy stare sekundy są zgodne z nowymi (config clock już nie potrzebne) jeżeli tak to nic sie nie wykona flaga=0 jeżeli...
Witam! Niedawno zacząłem się uczyć bascoma. Jako pierwszą poprzeczkę postawiłem sobie napisać zupełnie sam sterownik do lampki rgb. Długo analizowałem kody innych sterowników (np. na stronie mirley.firley.org) W końcu udało mi się zrozumieć i napisałem program wykorzystujący metody kolegów, lecz został zaprojektowany "od podstaw". Gdyby ktoś mógł sprawdzić...
No i udało mi się wstępnie opanować wyświetlanie tekstu bez biblioteki Bascoma. Bardzo pomocna okazała się ta strona - Funkcję PSET z tego przykładu zastąpiłem If Pixel = 1 Then Lpixel Xpos , Ypos , Kolor Else Lpixel Xpos , Ypos , Tlo End If swoją funkcją LPIXEL Sub Lpixel(byval X As Byte , Byval Y As Byte , Byval Color As Byte) Call Lsend(0...
Witam, jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony cel i jak wogóle się najlepiej za to zabrać) w przetransformowaniu...
Witam. Mam problem z kodem w bascomie. W skrócie opiszę co ma robić. W pętli głównej bada jaka liczba przychodzi przez RS232 (A = Inkey() ). Jeżeli jest to 87 to wtedy ma wyskoczyć do procedury/podprogramu o nazwie "Lowandslow". Tam na chwilę ustawia piny od B.4 do B.7 na "1" i załączane zostają przekaźniki spuszczania powietrza z czterech poduszek....
Witam, Aktualnie buduję/remontuje niewielką tokarkę, do zastosowań domowych. Jej mechanika jest dość prymitywna, co za tym idzie nie posiada żadnych podziałek, ani automatycznych posuwów. Wobec tego chciał bym zaopatrzyć ją w liniał, który będzie pokazywał pozycję imaka na wyświetlaczu LCD. Liniały są bardzo drogie, więc pomyślałem o bardzo tanim rozwiązaniu,...
Witam. Znalazłem coś innego i po modyfikacji działa jak powinno . Przypisany jeden klawisz pod PB.2 wysyłający LewyALT + Q. Jest też zmiana u gnieździe usb D- PD.3 na PD.4. [syntax=vbnet] 'Author : Rick Richard 'www : 'Created : Jul 29, 2009 'Version : 1.00 '***************************************... '-----------------------------...
tylko wiesz mnie zastanawia czemu tam jest blad zlokalizowany w lini 0 a nie w jakiejs konkretnej lini. No chyba ze to jest jakies znaczenie ogolne lub nie wiem co. Zaraz dolanczam kod i z góry dzieki za pomoc :] Dodano po 1 $regfile = "M8DEF.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1...
Po pierwsze musisz ustawić piny INT0 oraz INT1 jako wejscia (nie masz tego zrobionego) a samo aktywowanie przerwań nie ustawi tych pinów jako wejść czyli PIND.2 = Input PIND.3 = Input druga sprawa - po co włączasz aktywowanie przerwań poziomem niskim (Low level) ??? - wystarczy w zupełności. w takim przypadku, jeśli wyzwalanie przerwań będzie robione...
Przede wszystkim w komunikacji po Usarcie to przeszedł bym na przesyłanie ASCII, a wyrażenie kończyłbym znakiem CR (13). Wtedy możesz wysyłać odebrane ciągi na wyświetlacz, bez używania stałych. Używaj do tego zwykłego Print zamiast printbin. Tak swoją drogą nie wiem czemu większość początkujących próbuje komunikować się poprzez Printbin zamiast używać...
Witam czy ktos moze mnie oswiecic w jaki sposob zapisac wartosc do rejestru Counter1 pod bascomem ? Mam taki prosty program i za nic w siecie bascom nie che go lyknac ............. I taki oto blad ASSIGNMENT ERROR line 8 Procesor ma ten timer w sobie. Jezli to wina bascoma to w jaki sposob zapisac ta wartosc z poziomu jakiejs wstawki assemblerowj ?...
...szczególnie po tym jak ostatnio widziałem że sporo firm w niemczech sięga po to narzędzie i aż mi szczęka opadła jak widziałem jakieś radyjko bardzo fajne samochodowe z programem sterującym napisanym w bascomie ;) Bo Ci co to zrobili , znali dobrze Bascom'a i architekturę AVR-ów :D postanowiłem to zbadać i się zabrać - a jak dotknąłem Bascoma to...
Witam serdecznie!!! Od długiego czasu walczę z Bascomem Atmega 128 i Uartem. Wysyłam komendy AT do modemu GSM i odbieram odpowiedzi. Wszystko jest ok, chodzi bez problemu tak z jakieś 2-3 (różnie to bywa) godziny a później ni z gruszki ni z pietruszki zaczynają sie śmiecie. Odpowiedzi wyświetlam na LCD. Bascom wersja 1.11.9.1 Oto część kodu odpowiedzialna...
Witam, Panowie na poważnie wziąłem się za TWI Slawe ale za pomocą własnej obsługi w Bascomie. Na podstawie szukajki na elektrodzie i kilku postów kolegów zdaje się szymtro i robiw udało mi się w końcu zrobić to aby AVR zaopatrzony w sprzętowe TWI grzecznie odbierał przesyłane do niego bajty. Zrobiłem to tak: Twar = &B10000000 'Adres=128, jeśli chcesz...
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...
Hmm. No to żeś kolego janbernat zabił początkującego tym tematem :) Tak ogólnikowo pisząc to by wszytko działało w pseudo multitaskingu nie należy stosować opóźnień typu wait, tylko timery, oraz wykorzystywać system flag i przerwania. Przykładów na forum jest sporo więc można zawęzić wyszukiwanie tylko do elektrody, oraz na stronie firmowej Bascoma.
W pętli głównej czekasz na odebranie znaku (bodaj Ischarwaiting()), jeśli tak, to go czytasz i sprawdzasz, czy to znak początku (.), jeśli tak to przechodzisz do właściwego odczytu (to może być oddzielna funkcja) i czytasz kolejnych 12 znaków do bufora, oraz dodatkowy znak terminujący (.), jeśli znak terminujący jest poprawny kopiujesz bufor do zmiennej...
Mam mały problem - nie potrafię przenieśc kodu z bascoma do avr c (eclipse). Tzn, wiem ze nie przeniosą go 1:1 chodzi mi raczej o ogólne zasady, szkielet: chodzi o zapis do pamięci eeprom stanu licznika - licznik sie zmienia przy pomocy przycisków góra/dół - przy wyłaczeniu zasilania oczywiście jego zawartośc jest kasowana. Oczywiście zapis przy każdej...
nie dobrze :/ dobra, to jeśli bym podłączył wyświetlacz normalnie do pinów atmegi8 (tak już to robiłem i wiem jak go zaprogramować) to co mógłbym podłączyć do tego PCFa żeby było łatwiej? Może ds1820 ? i żeby pokazywał temp na LCD..może to będzie łatwiej zaprogramować w BASCOMIE. ( bo już dla mnie za późno na zmianę języka) bo nie chce mieć tylko samych...
No to już wiem. Jak to niedawno słyszałem: "klepki się BASCOMowi pomieszały". Oto wyniki deassemblacji: [syntax=asm]'( 0C 94 ') !Label_0: add R9, R4 '( 2A 00 ') !Label_2: or R0, R16 '( 18 95 ') !Label_4: sub R9, R5 '( 00 00 ') !Label_6: nop '( 18 95 ') !Label_8: sub R9, R5 '( 00 00 ') !Label_10: nop '( 18 95 ') !Label_12: sub R9, R5 '( 00 00 ') !Label_14:...
Witam ponownie !!!! Kolega Zumek świetnie to napisał. Ja uwzględniłbym jeszcze czasy wykonania warunku L1=30 i sprawa załatwiona. W obsłudze tego przerwania można dopisać jeszcze dwa warunki i sterować dwoma dodatkowymi częstotliwościami. (M.) Dzięki za uznanie :) Czas "wykonania się" przerwania niema tu żadnego znaczenia,a czas od rozpoczęcia obsługi...
Reflektując się.. jesli kogoś uraziłem to wybaczcie ale już mnie trafia jak można zmarnować pół dnia na uruchomienie timera. Poniżej program który napisałem tylko po to żeby uruchomić timer. Kod ten jest bez ustawiania portów in/out jak i bez definicji zmiennych. Jedynej zmiennej "Czas" używam do przechwycenia wartości timera. Dodano po 25 Dodano......
jestem tylko trochę bliższy prawdy. Ciekawy jestem czy dobrze myślę. Ale mam też dużo niejasności. Czyli tak: 1.Zezwalam na globalne przerwania. 2. Ustawiam prędkość w TWBR 3. Ustawiam w TWCR: TWEN - odpalenie sprzętu TWIE - odblokowanie przerwania sprzetu Do tej pory chyba na razie nic się nie dzieje. 4. Ustawiam w TWCR TWSTA Czy w tym momencie generowany...
W obsłudze przerwanie Timer1 zrób tylko ustawianie flagi, a załączanie i całą resztę przenieś do pętli głównej, właśnie tu sprawdzające stan tej flagi. Zamiast grzebać programowo W Timer1, wykorzystaj możliwości Timer1 compare, np w trybie PWM, bez używania przerwania. Ogólnie polecam : -- Pozdrawiam, Daniel
Zmodyfikowałem ją pod PORTC ale niestety nie działa mi. Największe wątpliwości mam z tym fragmentem: [syntax=basic4gl]* Sts {___LCDE},R24 ; we use E1 now Ldi R24,40 ; 4 bit mode 136 rcall _Lcd_control Ldi _temp1,14 ; Display on, Cursor on, Noblink 11 rcall _Lcd_control Ldi _temp1,6 ; Cursor moves right, text doesnt move 3 rcall _Lcd_control Ldi R24,255...
Witam Starałem się wyjaśnić platforma AVR lub zadania jaki ma wykonać NIE JEST TAK WAŻNE jak zorganizowanie komunikacji na RS232 za pomocą paczek HEX! Mogę wykorzystać dowolną większą kość AT! AT90s2313 Akurat tą kość mam gotową do pracy i kompletną do komunikacji na RS232. Czy jest możliwe zorganizowanie takiej komunikacji.? Potem wykona zadania......
Witam. Jestem początkujący w programowaniu więc proszę o wyrozumiałość. Potrzebuje program sterowania klapą (otwieranie i zamykanie dwie krańcówki góra dół i silnik lewo prawo). Chce aby jazda w gore lub w dol odbywała się w momencie zmiany stanu pewnej zmiennej zewnętrznej konkretnie zboczem rosnącym. Wyczytałem, że w Bascomie można zrealizować t...
Witam serdecznie jako że jestem zielony w temacie programowania Mikro kontrolerów prosze was o pomoc w przerobieniu programu lub jakichś podpowiedziach jak sie za to zabrac. Chciał bym by lampka świeciła w płynnie zmieniających się, losowo ustalonych kolorach od razu po włączeniu zasilania. wiem który fragment odpowiada z to ale nie rozumiem w ogóle...
Witam Robię sterownik do bramy, przerobiłem kod "pod siebie" Sterownik steruje silnikiem, lewo, prawo, sprawdza jaki prąd pobiera silnik i wyłącza go gdy prąd będzie za duży. Funkcja która porównuje wielkość prądu to: If Rez >= Pot_max Then ..... Problem jest w tym, że silnik na starcie pobiera za duży prąd i trzeba by wstrzymać wykonywanie tej funkcji...
Kod taki zdawkowy, ale domyślam się, że chodzi o brak histerezy. Dodaj histerezę. Zamiast jednego progu decyzyjnego na 3.35 robisz dwa. Jeśli mniej niż 3, 3 5 to Flaga = 1, ale drugi robisz trochę wyżej. Jeśli więcej niż 3, 4 5 to Flaga = 0 [syntax=vbnet] Select Case Wynik Case Is < 3.35 : Flaga = 1 Case Is > 3.45 : Flaga = 0 End Select[/syntax]...
W międzyczasie musisz coś do tego wyświetlacza wysłać. EUREKA! :) Mnie też się zachciało dzisiaj LCD na I2C i męczę się od rana nad cholerstwem... Dzięki za podpowiedz dlaczego podświetlenie nie działało - myślałem że coś w adresie namieszałem, ale jednak nie ! :) Ale mam poważniejszy problem z wyświetlaniem - pewnie też jakaś głupota... Korzystam...
Impulsator nie będzie pracował na przerwaniu tylko zwykle w pętli do loop bo takie rozwiązanie wystarczy. W tejże pętli będą także wysyłane sygnały regulacyjne po I2C jako odpowiedź na regulacje wykonane impulsatorem oraz wyświetlane dane na LCD. Procedura obsługi przerwania od Rx (MIDI) odczytuje bajt i jeżeli równy jest 176 (nasze dane) to czyta dwa...
Witam! Jak wspomniałem, mam drobny problem z odbiorem sygnału lasera. Mianowicie mam w sumie wgrany taki oto kod: '---------------------------------------... REJESTRY I CZESTOTLIWOSC ZEGARA $regfile = "m8def.dat" $crystal = 8000000 '---------------------------------------... KONFIGURACJA LCD Config Lcd = 16 * 2 Config Lcdpin = Pin...
Ze specyfikacji wynika że w odpowiedzi nie dostajesz na końcu znaku CR. Wg. specyfikacji ASCII CR to szesnastkowa wartość 0x0D. Aby sprawdzić do dostajesz w odpowiedzi to po wysłaniu kodu zrób pętlę, która odbierze ileśtam znaków i wyświetli każdy w następnym polu wyświetlacza. Lepiej jednak napisać procedurę podpiętą pod przerwanie , która zrobi to...
No i następnej sprawy nie rozumiem. Dlaczego ten licznik liczy do 99999 a nie "po bożemu" do 65535? Przynajmniej tak się wyświetla. I z 1000 przy decr "zmniejsza" się na 9999? 'Program do sterowania małych silników krokowych za pomocą ATMega8 i układu L6219 lub LB1845 'sterowanie ćwierćrokowe, zasilanie 30V 'set i reset zastosowałem w celach poglądowych-...
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...
$regfile = "attiny13.dat" $crystal = 1200000 'częstotliwość taktowania .............. Czy kod jest poprawny? Mam pewne wątpliwości. Chciałbym aby przerwanie było wykonywane np. co 5 sekund a pętla główna była sprawdzana cały czas. Nie, ten kod nie ma szans na kompilację, a nawet jeśli udałoby ci się go skompilować to jego działanie byłoby...
Witam, mam taki problem. program wg mnie powinien po przekroczeniu ustalonej temperatury wyswietlac na LCD napis, wlaczac Buzzer oraz zapalic diode. A po nacisnieciu przycisku wyłaczyc to wszystko. I problem jest taki ze wylacza wszystko oprocz diody. Tzn po wlaczeniu sie alarmu dioda wogole juz nie gasnie ani po obnizeniu temperatury ani po nacisnieciu...
W przerwaniu odmierzam tylko czas i ustawiam odpowiednie flagi. A wywołanie podprogramu wyświetlania następuje z pętli głównej z podaniem odpowiedniej wartości. Już chyba znalazłem błąd zapis nie jest wykonywany 20 razy tylko za każdym razem po wystąpienie flagi F100ms jest sprawdzany warunek [syntax=basic4gl]If Autoret > 0 Then Ust = 1 Decr Autoret...
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Witam Chcąc zbudować termometr wraz z alarmem, natknąłem się na forum Elektroda o temat "Termometr wraz z alarmem do CO - Termometr opiera się na projekcie użytkownika DUCH__. W kodzie widnieje błąd program ten ma wadę, że czujniki dobiera sobie losowo (czyli piec nie zawsze będzie piecem). Czy jest możliwość naprawienia tego błędu? Ogólnie termometr...
Tak w ogóle to właśnie zauważyłem że masz błąd w podprogramie Odtwarzacz: [syntax=basic4gl]Odtwarzacz: ... ... ... Gosub Odtwarzacz Return[/syntax] Chodzi o to że ta procedura ciągle wywołuje samą siebie (rekurencja). I przepełnia stos. Tam na dole trzeba po prostu wywalić: [syntax=basic4gl]Gosub Odtwarzacz[/syntax] EDIT. No i drugi ogromny błąd: W...
[quote="kisoft"]Witam jestem początkujący w temacie bascom potrzebuję rozwiązać problem związany z błędnym odliczaniem zaprogramowanego czasu. Program przerobiony z działającego zegara ( samo odliczanie działa dobrze), tylko chcę żeby w 20 -stej sekundzie wyjście PIND.2 zostało załączone i w 45-tej sekundzie wyłączone. Teraz działa przypadkowo w 20...
Czy wiesz co to jest prolog i epilog w assemblerze? Czy wiesz co to jest stos? Z tego co wiem w obsłudze przerwania powinno stosować się krótki i prosty kod, natomiast w moim przypadku potrzebuję po wystąpieniu przerwania przejść do wykonywania programu w pętli. Od takich spraw są flagi (czyli np. zmienne globalne), którym w przerwaniu ustawiasz jakąś...
Doradźcie, mam taki podprogram, wykonuje się w pętli co 1sekundę. Kombinuję zrobienie tych dwóch podprogramów na Select Case, z tym, że nie mogę przenieść tej całej składni do Case, wyskakuje błąd: LOCAL must be used outside structures such as IF THEN , DO and WHILE [TEMP_oblicz AS INTEGAR [syntax=vbnet] .....Do If Flaga_100ms = 1 Then 'co 100ms Flaga_100ms...
smalski->O priorytecie przerwań w AVR-ach , można powiedziec tak , że im niższy(mniejszy) adres wektora , tym wyższy priorytet posiada dane przerwanie. To jest zasada stosowana w PC, (np przerwanie 2h ma prorytet wyższy od 3h, ale niższy od 0h... 0h (dzielenie przez zero) ma najwyższy priorytet..).. w AVR wszystkie przerwania mają taki sam priorytet.....
Tu tez jest mały problem, ponieważ w chwil wystąpienia przerwania, na lcd musi być to zakomunikowane, wiec uznałem ze tam należy to wstawić, wait jest tam po to by mrugał napis " NOT-AUS AKTIV ! “ zobacz jak to można zrobić bez tych dziwacznych wait w procedurach przerwań: '************ konfiguracja ... ... Dim Flaga as Bit Flaga = 0 Config Int0...
Niestety znow mam problem z kompilatorem. Pluje sie o prosta skladnie: If Dcf_array(1).index = 1 Then Display_values(1) = &B00000110 Else Display_values(1) = &B00111111 oraz troche bardziej skomplikowana: If((dcf_in = 0) And(dcf_failure = 0) And(synchronized = 1)) Then 'wykryto poczatek...
Właśnie tak. On Timer0 Przerwanie ... '------------------------------------ Do If Flaga <> 0 Then Flaga = 0 ... ... End If Loop '------------------------------------ Przerwanie: Flaga = 1 Return '------------------------------------
Witaj :D Według mnie tablica jest niezbedna poniewaz to w niej sa zapisane wlasciwe znaki , i wydaje mi sie ze nauczuciel sie myli bo samo polecenie getatkeyb() zwrocilo by numer wcisnietego klawisza a nie konkretna literke , liczbe czy znak . Przykladem moze byc fragment polskiego helpa do bascom-a w ktorym jest opisane dzialanie tego polecenia Funkcja...
Mateusz a powiedz mi czy w Twoim programie robi różnicę to czy zastosuję LS020 czy L2F50?? Te wyświetlacze maja najprawdopodobniej inne procedury sterujące i inne biblioteki są do nich potrzebne. Mój program jest do LS020. I jak mogę edytować to co jest umieszczone w pamięci EEPROM czyli mniemam że obrazki i czcionki?? W EEPROM jest: $eeprom Data &H00...
Witam Przyszedł czas wolny więc zabrałem się za zgłębienie nauki Bascoma, celem było nauczenie się Tablic. Jako przykładowe i zarazem przydatne mi urządzenie chciałem złożyć regulator fazy z podwójnym wyświetlaczem siedmiosegmentowym LED. Schemat jako taki na razie nie powstał, wszystko jest na płytce stykowej. Udało mi się "ogarnąć" wyświetlacz, lecz...
W dobrym kierunku idziesz- ale pozostają Ci zadry. Skoro już masz przerwanie co 2ms- to niech inkrementuje tylko flagi. A w pętli głównej można zrobić- if flaga_1>0 then silnik ... flaga_1=0 if flaga_2> 100 then wyświetlacz ... flaga_2=0 itd.
Witam ewentualnych czytelników tego tematu. Zamykam temat, jako że problem rozwiązałem. Obsługa timerów została poprawnie zrealizowana po skompilowaniu projektu w Bascomie dla procesora Atmega48, Jedynie przy obsłudze przerwań pojawił się problem. W moim programie była konieczność "ręcznego" kasowania flagi przerwania INT1 za pomocą instrukcji: SET...
Czy jeżeli w Bascomi-e, w przerwaniu, ............ ......... czy zapis będzie trwał, a procesor w tym czasię będzie już wykonywał inne rozkazy? Zapisywana jest zmienna bajtowa. Wpis wartości zmiennej do EEPROM nie odbywa sie samoczynnie, jak powiedzmy przesączanie wody przez lejek(!). Tego wpisu dokonuje processor; nie ma tam pośrednika (chyba jedynie...
Nie znam Bascoma więc nie wiem co Robią pokazane programy ale jest prosty sposób na to. Ustawiasz jeden Timer tak aby zgłaszał przerwanie (np od przepełnienia) co 1 ms (czy jaką tam sobie dokładność chcesz). Timer sobie zasuwa i zgłasza przerwania, w przerwaniu sprawdzasz stan jakiegoś Pinu i jeśli wtrysk jest otwarty to dodajesz licznik ms a jeśli...
Potrzebuję pomocy przy zamianie kodu "RFID Reader", tzn. żeby zamiast wyświetlania kodu karty na LCD uzyskiwać odpowiedni poziom na wyjściu 1z10 i czy jest to możliwe do zrealizowania na atmega8? Chciałbym użyć 8 ostatnich cyfr kodu karty. Posłużyłem się gotowcem, który był już na elektrodzie (dopiero uczę się bascoma i nie wiem jak się do tego zabrać):...
już dawno nie używam bascoma więc nie pamiętam jeak jego polecenia dokładnie wyglądały ale poczytaj o pętli for i poleceniu rotate. mniej więcej by to tak wyglądało: Do pętla for (wykona się określoną przez ciebie ilość razy np. 6) waitms x rotate (przesunięcie bitu na porcie) koniec pętli jakieś działanie np. wyzerowanie portu obsługiwanego w poprzedniej...
Witam, postanowiłem dodać do programu pomiar temperatury mam czujnik DS18B20 , tylko że kod programu odpowiedzialny za sterowanie czujnikiem opóźnia działanie encodera ,gdzie jest tutaj błąd może czegoś nie uwzględniłem w tym kodzie ? poniżej cały kod [syntax=basic4gl] 'Filename Encoder_100.bas 'Version 1.00 'Date 2012-03-19 'Purpose Test of ALPS STEC11B13...
Witam Mam problem z powracaniem z funkcji w bascom. Ponizej programik: '... Opoznienie: $asm sjmp czekaj mov C, stala_czas Czekaj: djnz C, czekaj mov C, stala_czas djnz R, czekaj $end Asm Return ...Przepraszam jesli to co napisalem jest nie jasne, ale dla mnie juz nic w tym kompilatorze nie jest jasne. W kompilatorze jest wszystko jasne , tylko...
witam. w związku z zapytaniami na meila odpowiem na ile mogę tu(być może komuś się to przyda. Jesli gdzies walnołem jakis bład prosze o wybaczenie:) już dawno projekt zakonczony a nie chce mi się na nowo teraz wszystkiego instalować i sprawdzac. na początku zanim zacząłem co kolwiek pisać podpatrzyłem terminalem (RTU) przes rs232 co tak naprawdę wysyła...
Dolacze sie do tematu wlasnie czytam jak sie tym ukladem pobawic. Troche sie pogubilem i sam nie wiem czy komunikacja z tym procesorem idzie po i2c czy uart? (Dla mnie wyglada na i2c) wyzej strona z przykladowym kodem dawid512 pomozesz (Z tego co pamietam to umiesz c) Takie info dla "kamil 1" chyba nie do konca przeczytales note. Dodano po 17 zasada...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Za bardzo sie na tym nie znam tylko sobie przerabiam inne projekty na moje potrzeby. Chodzi mi tylko o to czy dobrze rozumiem te taktowanie procesora. no ale jak co to tu masz caly kod: $regfile = "m8def.dat" $crystal = 12000000 Config Lcd = 16 * 2 Config...
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...
Zamiana wyświetlaczy nic nie daje, zamieniałem nawet same kabelki łączące je z płytką i też nic. Jeśli chodzi o przerwania to mam odbiór danych z RFM12 oraz obsługę klawiatury na PCF8574. Może faktycznie coś na rzeczy z tymi przerwaniami. Wyświetlacz, który nie działa jak trzeba oprócz wyświetlania daty, godziny oraz części odebranych danych wyświetlać...
Program napisany jest w Bascom. Delay nie ma w ogóle. Program napisany chaotycznie, ale działał ok dopóki nie dopisałem obsługi DCF77. Gdy przyjdzie odpowiednia godzina, dioda IR ma wysłać kod do odbiornika. Wtedy właśnie procesor zwalnia. Sekundy wtedy "idą" co 3 no i dźwięk ma zwolnione tempo. [syntax=vbnet] $regfile = "m32def.dat" $crystal = 8000000...
RW mogloby byc do masy jesli transmisja bylaby 8-mio bitowa, z tego co wiem przy 4 liniach danych RW jest uzywane do sprawdzania flagi zajetosci lini danych. Mam ten sam wyswietlacz i dziala bez problemu. Steruje go 8-mioma liniami. Pin 1 do GND, Pin2 tez do GND, Pin3 do +5V. Linie danych mam na jednym porcie, a linie sterujacych na drugim. Nie znam...
Wydaję mi się że jest to możliwe ale procedura umieszczona w podprogramie powinna być bardzo krótka. Pewniejszym sposobem jest stosowanie flagi w przerwaniu a w pętli głównej przetwarzanie jej.
Cieszę się że mogłem pomóc. Nie podawałem gotowego rozwiązania do tego drugiego sposobu, bo myślałem że go nie znajdę. A tutaj niespodzianka. Trafiłem na niego od razu. Pierwsza rzecz w pomocy BASCOMa którą właśnie otworzyłem to to ;p To jest $INITMICRO. Możesz tam umieścić kod ustawiający pin RW na 0. A swoją drogą: ten sposób z INITLCD nie wymaga...
Dla programowego PWM funkcja będzie skomplikowana, ponieważ musisz sterować wszystkimi potrzebnymi wyjściami jednocześnie, rozbicie na poszczególne funkcje dla pinów i przetwarzanie cykliczne raczej nie wchodzi w grę, ponieważ nieobsługiwane w danym momencie wyjścia zepsują swój współczynnik wypełnienia. Więc chyba o jakimkolwiek wolnym czasie procesora...
Po prostu dlatego ze tworca BASCOMa nie zrobil takiej mozliwosci. Inaczej mozna to zrobic bardzo prosto: wpisujac nowa wartosc do rejestrow UBRRH I UBRRL (kolejnosc wpisywania jest wazna). Oczywiscie wpisywana wartosc trzeba wczesniej obliczyc bo w takim wypadku BASCOM juz jej sam nie obliczy. Rozumiem , Dzięki , poczytałem o dyrektywach i ich podziale...
Poprawiłem kod: Nie, Zmieniłeś tylko configurację wejśc na aktywnośc pinu wejściowego względem GND, lecz program tego nie monitoruje, /raczej będzie skutek odwrotny niż przewidywany, zacznie pracowac natychmiast po włączeniu. [code][syntax=basic4gl] If Czas = 0 Or Switch = 0 Then Waitms 25 If Czas = 0 Or Switch = 0 Then '............... i.t.d. [/syntax]...
Witam Przedstawiam stację meteo nad którą pracuję już kawałek czasu. Początek prac to też mój początek zabawy z Arduino. Zaczęło się od gotowego projektu malutkiej stacji z wyświetlaczem OLED. Wtedy już samo wgranie programu do ESP8266 było wyczynem dla mnie. Później zaczęło się kombinowanie, poprawianie tego i owego, próbowanie innych softów. Na bazie...
Najprosciej napisz ja na przerwaniu - port RS 232 ustawia flage ze odebral bajt do bufora i mozna ja sprawdzac i wyjmowac bajt gdy flaga - lub podpiac to pod przerwanie i wtedy wyjac bajt - podstawa sprawnego programu.
ok dzieki za zainteresowanie najpierw BASCOM: oczywiscie w opcjach jest at90s8535 $crystal = 4000000 Config Portc = Output Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto Dim A As Word Dim B As Word Dim C As Word Dim D As Word Dim E As Word Dim F As Word Dim G As Word Dim H As Word Cls Start Adc Do 'aDcsr.7 = 1 A =...
Witam!! Mam taki prosty programik napisany w bascomie: Config Timer0 = Timer , Prescale = 1 On Timer0 Przerwanie Enable Timer0 Enable Interrupts Do Loop Przerwanie: Return Symuluje jego dzialanie w AVR Studio.Jesli w AStudio ustawie procek 2313 to wszystko dziala ok a jak zmienie na Atmega8 to w ogle nie obsluguje przerwania. Flagi od ogolnego przerwania...
no temat nie wydaje sie problematyczny... ale pewnie zawsze sie trafi na jakies przeszkody :) no nie pomoge ci podajac gotowca, ale poszukalem chwile na necie i : PS/2 Mouse/Keyboard Protocol: jesli jestes dobry w c to na podstawie ponizszego linku pewnie rozjasni sie w glowie (to interfejs klawiatury) Ponadto gotowiec znaleziony na necie ale do odczytu...
Zobacz tutaj '####################################### 'inculde file for RF12-device 'info about RF12 Transceiver: www.hoprf.com or www.integration.com 'info about using RF12 with Bascom: www.comwebnet.de ' 'Version History '--------------- 'Initial Version: v0.10 'Date: 200711 'Author: Kurzschluss '--------------- 'Version: v0.11...
Chcę zrobić taki booloadre który będzie działał następująco. 1. Wysyłam po RS'ie do uC pamięć FLASH następnie uC kopiuje na kartę MMC (od adresu 1 do ... n) - gdzie te adresy są przypisane na stałe w programie uC 2. Następnie uC otrzymuje informacje-rozkaz że na karcie MMC ma FLASH do aktualizacji 3. Boodloeadr aktualizuje FLASH z MMC Poniżej zamieściłem...
Witam Mam pytanie, jak można w bascomie odczytać stan konkretnego bitu z konkretnego rejestru. Dokładnie chodzi mi o odczytanie stanu 4 bitu w rejestrze R6 w Attiny 13. Podłączyłem do niego klawiaturę AT i potrzebuje wiedzieć jaką wartość ma ten bit gdyż jest on używany jako flaga stanu klawisza shift. Podejrzewam że ktoś z was wie co na to poradzić,...
Wydaje mi się że te czytniki symulują klawiaturę. Poszukaj kodów klawiatury w internecie. Są to rozkazy naciskania i puszczenia odp. przycisków, a w zasadzie cyfr. A rozwiązanie twojego drugiego problemu to odpowiedni parser portu szeregowego. Nie znam bascoma, ale w C robisz przerwania, bufor, flagi i hula Pozdrawiam
witam , potrzebuję pomnożyć 7razy impulsy wejściowe , częstotliwość wej nie jest duża max 200hz , znalazłem podobny program na pic16 mnożacy 39razy i kawałek kodu na atmege8 również mnożący 39razy , jednak zupełnie nie mam pojęcia jak cos takiego napisac w bascomie kod dla pic: Device 16F628A Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_ON...
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
Witam! Płytki i schematu nie trzeba już sprawdzać - wykonane, połączone i działa. Kwestia nierozwiązana to program w Bascomie. Poprzedni kod trochę zmodyfikowałem, ale nic to nie dało. Sama obsługa przerwania Timera0 jest zła, bo wywalając całą resztę i zostawiając: [syntax=basic4gl]$regfile = "m8adef.dat" $crystal = 8000000 Config Pinb.1 = Output Config...