To zamiast: [syntax=basic4gl]Print &H7E; [/syntax] wyślij: [syntax=basic4gl]Print "{126}"; [/syntax]
Daj zamiast [syntax=basic4gl]Config Int0 = Low Level [/syntax] tak [syntax=basic4gl]Config Int0 = Falling [/syntax] i pozmieniaj parametr Wait 2000 na inny.
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Tutaj masz źle [syntax=basic4gl]'odczyt 1wreset 1wwrite &H55 1wwrite &HBE Lsb = 1wread(): Msb = 1wread():[/syntax] Zamiast [syntax=basic4gl]1wwrite &H55 [/syntax] - match ROM powinno być [syntax=basic4gl]1wwrite &HCC [/syntax]- skip ROM oczywiście pod warunkiem że masz tylko jeden układ na magistrali Czas na konwersję - wystarczy 200ms, DS1820 ma tylko...
Z tego co porównuję z listingiem źródłowym z książki to masz kilka błędów: sprawdź: [syntax=basic4gl]Config Lcd = 16 * 2[/syntax] oraz umiejscowienie [syntax=basic4gl]Cls[/syntax] w pętli a u ciebie jest poza pętlą oraz wyrzuć konfigurację [syntax=basic4gl]Config Timer2 = Timer , Async = On , Prescale = 128[/syntax] sprawdź także ustawienia Fuse CKSEL3..0...
Spróbuj: [syntax=basic4gl]Home upper Lcd Impulsy Lowerline Lcd K [/syntax] A najlpeiej używaj poleceń [syntax=basic4gl]LOCATE y , x [/syntax]
Ehh.. Nie znam bascoma ale jak po prostu trzeba zamienić miejsca to Zamiast [syntax=basic4gl]A=Wart And &B00001111 Shift Wart , Right , 4 B = Wart[/syntax] Zrób [syntax=basic4gl]B=Wart And &B00001111 Shift Wart , Right , 4 A = Wart[/syntax]
No masz moją wersje rozwiązania tego problemu. W symulatorze działa. Na uP nie testowałem. [syntax=basic4gl][/syntax] $regfile = "attiny13.dat" $crystal = 1000000 Dim Fp1 As Bit Dim Fp2 As Bit Config Pinb.3 = Input Config Pinb.4 = Input Config Pinb.1 = Output Config Pinb.2 = Output Set Portb.3 'podciagniecie do +5V Set Portb.4 Do If Pinb.3 = 0 And Fp1...
Eh, a napisz coś takiego: [syntax=basic4gl] dim pwm_var as byte [/syntax] Tam gdzie deklarujesz resztę zmiennych, następnie przy wyświetlaniu: [syntax=basic4gl] pwm_var=cool1 lcd "Obroty"; str(pwm_var)[/syntax]
... bo dobrze znam ten wyświetlacz. Ale z Bascomem już gorzej :D Co to jest za twór :?: [syntax=basic4gl] Data "Poniedzia" ; &h9D ; "ek" ; [/syntax] Do umieszczenia w zmiennej tekstowej dowolnego kodu ASCII, służą nawiasy klamrowe :idea: [syntax=basic4gl]Data "Poniedzia{157}ek" [/syntax]
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
Czyli ustawiam stan niski zaraz po konfiguracji. Błąd, nie ustawiasz :). zamień: [syntax=basic4gl]Reset Pind.4 'oc1b niebieskie Reset Pind.5 'oc1a biale Reset Pind.7 'oc2 czerwone[/syntax] na: [syntax=basic4gl]Reset Port.4 'oc1b niebieskie Reset Port.5 'oc1a biale Reset Port.7 'oc2 czerwone [/syntax]
brakuje Ci jeszcze jednej malutkiej instrukcji [syntax=basic4gl]Set Portc.5[/syntax] u mnie zawsze to działa
atom1477, przecież o ile jakieś przerwanie w międzyczasie nie zmienia Portd.5 to kod Nie chodzi o to żeby ustawił w końcu, tylko w momencie kiedy piszesz Pind.5 = 1: No ale Portd.5 zamiast Pind.5 byłoby przejrzyściej. W ogóle przejrzyściej było by stosować ten zapis jeszcze zamiast Set Portd.5. Tysiące razy było. Do rejestru port zapisujemy a z rejestru...
Podciągnij wejście do plusa wewnętrznym rezystorem. Wejście T1 to PD5. [syntax=basic4gl]PORTD.5 = 1[/syntax]
Tak jeszcze przed END IF: [syntax=basic4gl]Rc5send Togbit , Address , Command[/syntax]
[syntax=basic4gl]Portb = 11111111[/syntax] Jedenaście milionów sto jedenaście tysięcy... nie zmieści się w 8-mio bitowym rejestrze. Stałe binarne poprzedzone są odpowiednim prefiksem. Google mówi, że poprawny zapis to np. "&B11111111".
Teraz problem jak "wcisnąć" CLS. Gdy np. "dojadę" do 10, a następnie cofam ostatnia cyfra zostaje. Wystarczy dodać spacje :) [syntax=basic4gl]Lcd A ; " "[/syntax]
Zmień może na początek swoją litanię w ten sposób... Zamiast litanii, wystarczy tylko "amen" :-P [syntax=basic4gl]Print Bin(PORTB) [/syntax]
Diody migają po dwa razy, kolejne dwa razy zawsze po naciśnięciu przycisku, tak w kółko. Jak nie naciskam to nic się nie dzieje. Zdaje się że taki zamiar był tego programu... Niemniej jednak spróbuj ten code: [syntax=basic4gl][/syntax ... $regfile = "attiny13.dat" $crystal = 9600000 Config Portb = &B011000 Portb = &B000010 $hwstack...
....przeniosłem się na atmega32.... .... Hmmm, przesiadłeś się na ATmega32 a kompilujesz pod ATmega328p :?: To są dwa "troszkę" różne procesory. A programator jak podłączasz :?:
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
Nie znam dobrze Bascom'a ale moim zdaniem to zapewne kwestia Timerów. Masz w kodzie [syntax=basic4gl]Period = Capture1[/syntax] jest różnica w przypisaniu dla ATMega 8 - ICP1 to pin 14 (PB0) dla ATMega 32 ICP1 to pin 20 (PD6) - zobacz czy ( i ew. co tam masz podłączone ) w załączeniu pinouty:
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
O konstruktywne ciężko bo to jest bez sensu :D Mieszasz różne instrukcje blokowe. Boki muszą być jeden w drugim. Nie mogą się przeplatać. Np. [syntax=basic4gl]IF ..Tu inny blok END IF[/syntax] A Ty masz tak: [syntax=basic4gl]IF DO END IF LOOP[/syntax] Tak nie może być. Albo: [syntax=basic4gl]IF DO LOOP END IF[/syntax] albo [syntax=basic4gl]DO IF END...
Można trochę bajtów zaoszczędzić :) Dodaj bibliotekę obsługującą hardwarowe TWI: [syntax=basic4gl]$lib "I2C_TWI.LBX" ...... I2cinit Config Twi = 100000[/syntax] Odczyt danych z EEPROMU, zamiast: [syntax=basic4gl] Dim Mz1 As Byte Dim Gz1 As Byte Dim Mz2 As Byte Dim Gz2 As Byte Dim Mz3 As Byte Dim Gz3 As Byte Dim Mw1 As Byte Dim Gw1 As Byte Dim Mw2 As...
Masz trzy procedury Praca, Zakonczenie i Ustawienie, na początku programu musisz je zdeklarować: [syntax=basic4gl]Declare Sub Ustawienie Declare Sub Praca Declare Sub Zakonczenie [/syntax] Drugi błąd zmienne niemnogą mieć takiej samej nazwy jak procedury, zmień nazwy zmiennych: [syntax=basic4gl]Dim Ustawienie As Word Dim Praca As Word[/syntax]
Witam. Napisałem taki mały programik do wysyłania danych. Chce by wysyłał tablicę do której wpisuje sobie dane. [syntax=basic4gl][/syntax] Dim Tabaa(7) As Byte Do Printbin Tabaa(1) , 7 Loop Tabaa: Data &H50% , &H05% , &H04% , &H80% , &H03% , &H00% , &H1A% [syntax=basic4gl][/syntax] Niestety występuje błąd. Proszę o radę.
Przede wszystkiem to używamy [syntax=basic4gl]Config PORTX.x[/syntax] do konfiguracji wyjść i tak samo używamy [syntax=basic4gl]PORTX.x = Y[/syntax] do zmieniania stanu wyjścia. [syntax=basic4gl]PinX.x[/syntax] używamy do obsługi wejść.
A odnośnie pull-up coś jeszcze muszę dopisywać w kodzie? Myślę, że nie, jak masz woltomierz, to powinno być trochę niższe napięcie od zasilania przy niewciśniętym przycisku. BTW. Używaj tagu syntax. ] Tu kodzio /syntax]
gdzie jest błąd Nie znam BASCOM'a więc mogę się mylić... ale wydaje wydaje mi się, że tu:[syntax=basic4gl]If = S1 = 0 Then[/syntax] ;]
Witam ! Usuń nawiasy kwadratowe z: [syntax=basic4gl] Deflcdchar [2] , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar [0] , 32 , 7 , 5 , 7 , 32 , 32 , 32 , 32 Deflcdchar [1] , 32 , 4 , 4 , 14 , 14 , 14 , 32 , 32 [/syntax] Tak: [syntax=basic4gl] Deflcdchar 2 , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar 0 , 32 , 7 , 5 , 7 , 32 ,...
Witam zamiast : [syntax=basic4gl] Config Int0 = Change [/syntax] ustaw : [syntax=basic4gl] Config Int0 = Low Level [/syntax]
[syntax=basic4gl][/syntax] $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output Config Aci = On , Compare = Off , Trigger = Rising Wyjscie Alias Portb.1 Kompaktor Alias Acsr.5 Acsr.6 = 1 Do Wyjscie = Kompaktor Loop End [syntax=basic4gl][/syntax] fuse BODEN jest włączony (3,7 - 4,5 V ) ADC jest włączony w instrukcji config bit ACBG jest włączony...
Set Portd.5 - będzie stan wysoki albo: Pind.5= 1 Toggle zmienia stan Pinu, u ciebie nie był ustawiony żaden stan.
chciałbym go dowolnie zmienić w jednym miejscu zamiast 50 razy w kodzie Niestety Waitms jest już w tym dziwacznym Bascomie, wiec klapa. Można ten problem rozwiazać na przykład w ten sposób. [syntax=basic4gl]do portC.1=0 GoSub Czekaj_500_ms PortC.1=1 GoSub Czekaj_850_ms portC.1=0 GoSub Czekaj_1000_ms loop End Czekaj_500_ms: Waitms 500 Return Czekaj_850_ms:...
Możesz to skonfigurować w pliku CONFIG_AVR-DOS.bas. Zamień: [syntax=basic4gl]Const Cvariableseparator = 44[/syntax] na [syntax=basic4gl]Const Cvariableseparator = 9[/syntax]
[syntax=basic4gl] Dim Wynik as byte , L1 as byte , l2 as byte Wynik = 47 Wart = Makebcd(wart) L1 = Wart And &B00001111 Shift Wart , Right , 4 L2 = Wart [/syntax] Druga możliwość: [syntax=basic4gl] Dim Temp As Long Dim A1 As Long Dim L1 As Byte , L2 As Byte A1 = 47 Temp = A1 \ 10000 L1 = Temp Temp = A1 Mod 10000 Temp = Temp \ 1000 L2 = Temp [/syntax]
Nowy mikrokontroler dopóki tego nie zmienisz pracuje z prędkością 1000000 Hz (1MHz) Wpisz na samej górze w kodzie [syntax=basic4gl]$crystal = 1000000 '1MHz crystal[/syntax] To poinformuje kompilator o prędkości i będzie już liczył poprawnie.
Spróbuj to wpisać tak: [syntax=basic4gl]CLKPR = 128 CLKPR = CLKPR or 1[/syntax] lub bezpośrednio: [syntax=basic4gl]CLKPR = 129[/syntax]
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
Witam! Program powinien przerwać zamykanie/otwieranie w przypadku hazardu sterowania i tak się stanie. Niedoskonałość polega na tym, że prawdopodobnie u kolegi sygnały inicjujące trwają na tyle długo, że nie tylko wyłączają jeden kierunek ale za chwilę załączają przeciwny. Jeśli impuls jest krótszy niż 1s zjawisko nie występuje. Najprostszym rozwiązaniem...
Jeśli masz sam rok musisz dodać miesiąc i dzień w formacie daty, żeby funkcja zrozumiała format daty, np.: [syntax=basic4gl] CDate(CStr([Rok]) & "-01-01") [/syntax]
[syntax=basic4gl]$lib "mcsbyte.lbx"[/syntax] W helpie przy GETRC5 zalecają użycie tej biblioteki. Odbiornik IRED powinien wystawiać 1 na wyjściu gdy nie odbiera żadnego sygnału (sprawdź czy tak jest), więc sygnał zaczyna się stanem niskim. [syntax=basic4gl]If Pind.2 = 0 Then Gosub Rc5 [/syntax]jest zatem właściwe Spróbuj przed pętlą główną skonfigurować...
Pierwsze co bym zrobił, to dopisał na początku programu np.: [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
Dir jest instrukcją w Bascom'e, zmienna nie może mieć takiej nazwy. Zmień w całym programie nazwę zmiennej Dir np. na Dir2 . Dodaj deklaracje procedury Ddelay . [syntax=basic4gl]Declare Sub Ddelay[/syntax]
Witam Potrzebuję zrobić zegar na ATMEGA8535 i nie mogę uruchomić pracy asynchronicznej. Kwarc zegarkowy podłączony do XTAL1/2. Program wstępny poniżej. Analogiczny program (ze zmianą ASSR.5 = 1) dla ATMEGA88 działa poprawnie. Proszę o pomoc. Pozdrawiam Jacek Program napisany w "BASCOM AVR" [syntax=basic4gl][/syntax] $regfile = "m8535.dat" $crystal =...
:D [syntax=basic4gl] Tabela: ' 0 1 2 3 4 5 6 7 8 9 Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144, 192 ' <-spróbuj dopisać [/syntax] , ale pomyśl też o takim warunku :P [syntax=basic4gl]Decr Sekjed If Sekjed = 255 Then Sekj = 9 Decr .. End If[/syntax]
A więc coś zadziałało. Pierwszy odczyt z uart-a i dane są ok ale już drugi odczyt i wszystkie trzy zmienne to śmieci. Wygląda jakby trzeba było czyścić bufor wejściowy po każdym odczycie. Niby jest zmienna: [syntax=basic4gl]_rs232inbuf0[/syntax] ale jak dam: [syntax=basic4gl]_rs232inbuf0 = 0[/syntax] to kompilator woła: Array expected Coś mam. Dałem:...
Na początek do rysowania schematów są odpowiednie programy a nie Paint , kody programu umieszcza się korzystając z polecenia Syntax a nie wkleja zrzut . Schemat : brak jakichkolwiek kondensatorów do filtracji zasilania , brak GND dla uC , brak oporników ograniczających prąd diod jeden wspólny to żadna oszczędność max prąd portu to 20mA , czerwone LED...
Cóż, podpowiem jeszcze raz: 1. Sprawdź w necie jak odczytać stan przycisku ---- EDIT: w necie też piszą różnorakie bzdury o tym zatem może napiszę jak być powinno: Zwykle przyciski podłączamy tak, aby zwierały pin do masy. Aby odczytać stan danego pinu musimy: 1. skonfigurować go jako wejście instrukcją (np. - istnieje wiele odmian konfiguracji, ale...
Myślę że tak :): [syntax=basic4gl] S = "gdziestam{010}" J = Tcpwritestr(ix , S , 0)[/syntax]
Dla obydwu mikrokontrolerów powinno być: [syntax=basic4gl][_Init_LCD] .EQU LCDDDR=$01 .EQU LCDPORT=$02 [/syntax]
witam.Mam takie pytanie chcę zrobić subwoofer z głośnika o parametrach : . 160 W . 8 Ohm Impedancja nominalna . Czułość 89dB i nie wiem jaką zwrotnice do braci do takiego głośnika. Proszę o pomoc. [syntax=basic4gl][/syntax]
Zamiast Config Timer1 wstaw: [syntax=basic4gl]Config Timer2 = Timer , Async = On , Prescale = 128 , Compare = Disconnect , Clear Timer = 0 , Pwm = Off , Compare Pwm = Disconnect[/syntax] Przerwanie nastąpi co sekundę. Później zamiast [syntax=basic4gl]On Timer1 Czas[/syntax] wstaw [syntax=basic4gl]On Ovf2 Czas[/syntax] Powinien działać. No i kwarc zegarkowy...
I popraw program : [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 Config Portd.3 = Output 'buzzer Portd.3 = 0 Do Wait 1 Portd.3 = 1 Wait 1 Portd.3 = 0 Wait1 Portd.3 = 1 Wait 1 Portd.3 = 0 Loop End [/syntax] albo lepiej tak: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Config Portd.3 = Output 'buzzer Do Wait 1 Toggle Portd.3...
Powinno być: [syntax=basic4gl]Print #2 , Godziny ; ":" ; Minuty ; " PIEC-" ; Ts ; " BOJLER-" ; Tb[/syntax]
Kolega poszedł na łatwiznę - to nie działa. Może kolega nas zaszczyci schematem urządzenia? Help Bascom'a mówi coś nie tylko o [syntax=basic4gl]CONFIG LCD=[/syntax] ale i o [syntax=basic4gl] Config Lcdmode =... Config Lcdpin =....[/syntax] P.S. Kod źródłowy otaczamy w znaczniki Syntax...
To przekazuj zmienną w taki sposób: [syntax=basic4gl]Dim Y As Integer ' ' Servo(1) = Low(y)[/syntax]
Dla taktowania 8MHz, ale możliwe że trzeba zmodyfikować nazwy Pwm i Compare [syntax=basic4gl]Config Pinb.0 = Output Pwm0a = 70 Config Timer0 = Timer , Prescale = 1 , Compare0A = Toggle , Clear Timer = 1 Do Loop End[/syntax] a na rejestrach timera [syntax=basic4gl]DDRB = 0B00000001 'DDRB.0 = 1 (wyjście) OCR0A = 70 TCCR0A = 0B01000010 'COM0A1 COM0A0 =...
Witam. Poczytałem i napisałem takie coś. [syntax=basic4gl][/syntax] $crystal = 8000000 $regfile = "m1284def.dat" $baud = 19200 Dim A As Byte Dim B As Byte Dim C As Byte Dim Flaga As Byte Config Serialin = Buffered , Size = 20 , Enable Interrupts Wait 1 Print " test " Do If Flaga = 1 Then Print "flaga" Flaga = 0 End If If _rs_bufcountr0 >= 6 Then Inputhex...
W drugim listingu brakuje [syntax=basic4gl]I2cinit[/syntax]
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
Spróbuj tak zainicjalizować [syntax=basic4gl]Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc[/syntax] I dorzuć jeszcze [syntax=basic4gl]Ddrc = &B000000[/syntax]
Witam, W/g pdf-a ATMegi128 timer3 może pracować w trybie auto przeładowania. W helpie do Bascoma 1.11.9.8 niestety nie mogę znaleźć opisu w jaki sposób skonfigurować licznik aby sam się przeładowywał. Obecnie robię to w przerwaniu. Czy może ktoś mi podpowiedzieć jak to zrobić? [syntax=basic4gl][/syntax] $regfile = "m128def.dat" $crystal = 8000000 $hwstack...
Jak pisałem poprzednią odpowiedź to nie widziałem jeszcze kodu programu - no nie zbyt elegancko to napisane. Tak na szybko - powinno działać Waitus 11 , bo 750ms/500ms*7=~11
Tak, w symulatorze w baskomie program zatrzymuje się na funkcji Wait i układ po zaprogramowaniu nie działa po prawnie (świecąsie tylko dwa kolory i tyle ) i z niewiadomych mi przyczyn program sam poprawia "tekst" i np: [syntax=basic4gl]Pwm0a = 0 : Pwm0b = 0[/syntax] zamienia się na [syntax=basic4gl]PWM0A = 0 : PWM0B = 0[/syntax] w kolorze czerwonym...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
... czy jest to możliwe? Raczej nie, ale jest wysoce prawdopodobne, że Twoja zmienna "B" zmienia wartość na "0". Na samym początku kodu, po deklaracji $Crystal dodaj "takie coś"...[syntax=basic4gl]Set Mcucsr.jtd Set Mcucsr.jtd[/syntax]
Kolego zapodaj cały kod. Rozumiem że używasz symulatora do sprawdzania kodu. jak za wolno zwiększa to wstaw zamiast [syntax=basic4gl] incr pwm1a [/syntax] np tak [syntax=basic4gl] Pwm1a = Pwm1a + 10 [/syntax] Ale to nie tędy droga. Zrób tak że pomiar napięcia i zmiana wartości PWM przebiegała bardzo często a wyświetlacz odświeżał się np co 500ms.
Więc Kolego czym to się różni od mojego? Timer0 wygląda tak: [syntax=basic4gl][/syntax] $regfile = "ATTINY44.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 1 Enable Timer0 On Timer0 Prztimer0 Enable Interrupts Do Led1 = 10 Led2 = 20 Led3 = 30 Loop Prztimer0: Incr Licznik If Licznik > 100 Then Licznik = 0 End If If Flaga1 = 1 Then If Licznik...
Masz dwie możliwości, możesz pobrać nowszą wersje BASCOM'a lub dopisać taką linie: [syntax=basic4gl]$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014[/syntax]
Witam, Komunikuje się miedzy dwoma atmegami i gdy używam (Atmega8) Print #1 ----> Input #2 (Atmega16) jest wszystko ok ale gdy próbuje zrobić (Atmega8) Print #1 ----> inkey(#2) (Atmega16) to wywala śmieci. Chce wysłać pojedynczy znak np M wysyłam jako chr(77), a zamiast tego wyczytuje inne znaki. Gdy używam inkey(#2) ale wprowadzam z terminala jest...
Wykonaj proste doświadczenie. W kodzie który masz w pierwszym poście zrób sobie zapis który sygnalizuje jako błędny najpierw tak jak masz: [syntax=basic4gl]Load Timer0 = 250[/syntax] i zmien na: [syntax=basic4gl]Load Timer0 = 50[/syntax] nie będzie żadnej różnicy jak popatrzysz na częstotliwość migania diody. a następnie zmień na: [syntax=basic4gl]Load...
Pewnie trza wyłączyć bit M103C w fuse. zapis: [syntax=basic4gl]Load Timer0 = 250[/syntax] jest błędny. prawidłowo: [syntax=basic4gl]Load Timer0 , 250[/syntax] Poza tym przy tych ustawieniach timera w stosunku do prędkości kwarcu nie uzyskasz przerwania co 8ms.
Jeśli przedstawiasz kompilatorowi takie cos: [syntax=c]nazwa1 Alias Portd.6 [/syntax] to od tego momentu każdy napotkany tekst "nazwa1" zostanie zamieniony na Portd.6 Jeśli zatem napiszesz [syntax=basic4gl]set nazwa1[/syntax] to zostanie to przetłumaczone na [syntax=basic4gl]set Portd.6[/syntax] Czyli set Portd.6 i set nazwa1 jest tożsama.
A nie możesz przed wysłaniem danych zmieniać konfigurację interfejsu pod konkretny układ? To fakt, tak powinno być prościej, początkowo zastanawiałem się czy zmiana polaryzacji zegara na nieaktywnym układzie nie będzie przeszkadzać, ale przecież i tak nie jest wybrany, więc powinien to zignorować. Przed "wybraniem" układu polaryzacja zostanie ustawiona...
W ATmega8 masz 3 timery:TIMER0(8bit bez funkcji PWM),timer1(16bit z 2 kanałami PWM),i timer2 (8 bit z jednym kanałem PWM) i do tego musisz się zastosować. Wyjścia PWM to PORTB.1, PORTB.2 i PORTB.3 Możesz jeszcze zrobić programowy PWM np. na timer0 i będziesz miał PWM na wyjściu na jakim tylko chcesz. [syntax=basic4gl][/syntax] $regfile = "m8def.dat"...
Symulator nie wie że to już koniec Twojego programu [syntax=basic4gl] End[/syntax]
Witam Zacząłem się bawić nieco w programowanie, kontroler to atmega8. Wiem jak napisać w bascomie instrukcję żeby np opuścić pętlę po przyciśnięciu przycisku, ale jak najprościej podać komendę żeby powtórzyło pętlę powiedzmy 10 razy lub wykonywało ją 10 sekund a następnie wyszło z niej i wykonywało dalej program? Np taki prosty program: [syntax=basic4gl][/syntax]...
Rejestr PINx jest tylko do odczytu. Odpowiednie info masz w nocie uC. To ci nie zadziała: [syntax=basic4gl]Pind.2 = 0 Pind.2 = 1[/syntax] Prawidłowo: [syntax=basic4gl]Portd.2 = 0 Portd.2 = 1[/syntax]
Powinno działać, tylko trzeba w kodzie zamienić linijki: [syntax=basic4gl] T(ktory_ds) = T(ktory_ds) * 10 T(ktory_ds) = T(ktory_ds) / 16 [/syntax] na: [syntax=basic4gl] T(ktory_ds) = T(ktory_ds) * 5 [/syntax]
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 :)
Niestety te rezystory mają dużą wartość więc w środowisku o dużych zakłóceniach warto dodać rezystory zewnętrzne. W tym przypadku wystarczy włączyć wewnętrzne, ponieważ projekt autora nie zwiera źródeł dużych zakłóceń. Poszukaj jak włączyć rezystory pull up za pomocą BASCOM Może tak: [syntax=basic4gl]Portb.0=1[/syntax] lub tak [syntax=basic4gl]Portb=&B00000001[/synta...
Ja używam takiej konfiguracji dla odbiorników z układem U4221B: [syntax=basic4gl]Config Dcf77 = Pinb.5 , Timer = 1 , Inverted = 0 , Check = 2 , Update = 0 , Updatetime = 0 , Timer1sec = 0 , Debug = 1 , Gosub = Sectic[/syntax] U siebie najpierw spróbuj sprawdzić (diodą LED i dodatkowym tranzystorem, który będzie załączał tą diodą), czy w ogóle otrzymujesz...
Witam! Przeczytałem sporo na ten temat i w wypowiedziach kolegów wszystko jest proste - a nie zawsze jest dla początkującego. Napisałem: odbiór RC5 w pętli głównej a drugi programik: odbiór w przerwaniu INT0. Pierwszy działa znakomicie a drugi niestety daje wynik 255. Oto kod 1: [syntax=basic4gl][/syntax] 'kody rc5 w pętli głównej $regfile = "m8def.dat"...
Ok już nie zawiesza, ale jeszcze nie dekoduje komend... Wystarczyło w obsłudze przerwania INT0 dodać [syntax=basic4gl]Enable Interrupts Enable Timer1[/syntax] [syntax=basic4gl]Get_rc5: Disable Int0 Enable Interrupts Enable Timer1 Getrc5(adress , Command) Received = 1 Return[/syntax]
Jedną z przyczyn może być prozaiczny brak średnika po np: [syntax=basic4gl]Print "ATH+CHUP" ; Chr(13)[/syntax] a powinno być: [syntax=basic4gl]Print "ATH+CHUP" ; Chr(13) ;[/syntax]
Czy ktoś może mnie oświecić czemu string nie może mieć pustego znaku... Ponieważ pusty znak (zero) oznacza koniec łańcucha, np: ...czemu printbin wszystko wiesza? A próbowałeś w taki sposób wykorzystać Printbin ?: [syntax=basic4gl]Printbin Adres(1) ; 4 ; Dane(1) ; 37[/syntax]
Dziękuje bardzo, działa i zrozumiałem już zasadę działania. ;) Jeśli można jeszcze o coś zapytać... Ćwiczyłem trochę na powyższym przykładzie i próbowałem wykonać kilka przełączników, jednak działają dosyć... niespodziewanie. kiedy naciśnięty jest przycisk pierwszy można sterować 2-gim, jednak kiedy nie to drugi przycisk w ogóle nie reaguje... Można...
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
[syntax=basic4gl] Rotate Stan, left[/syntax] Próbuje w trakcie trwania programu zadeklarować left, right, czyli te słowa to niewiadoma z [syntax=basic4gl] Rotate Stan, z[/syntax] i teraz to moje "z" muszę zadeklarować jako string czy byte???
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
Moja wersja odczytu z ds18b20 jest na pewno poprawna bo pracuje, wprawdzie na atmedze8 ale to chyba nie ma znaczenia. [syntax=basic4gl][/syntax] 1wreset ' 1wwrite &HCC 'komenda skip ROM 1wwrite &H44 'komenda convert T Waitms 250 Waitms 250 1wreset ' 1wwrite &HCC 'komenda skip ROM 1wwrite &HBE 'komenda read B1 = 1wread() 'odczyt z termometru B2 = 1wread()...
No normalnie. Rozrysowałem sobie kolejne kroki silnika, datasheet l293d i dobierałem odpowiednie sekwencje włączania portów, czego efektem jest zamieszczony program... Posłużyłem się tym rysunkiem: http://obrazki.elektroda.pl/2672662100_1... pozdrawiam, Karol Dodano po 11 Witam Zmieniłem trochę program: [syntax=basic4gl][/syntax] $regfile...
Zamiast [syntax=basic4gl] If PORTD.0 = 1 Then Start TIMER0 End If[/syntax] Spróbuj [syntax=basic4gl] If PORTD.0 = 1 Then TCCR0B=&B00000101 End If[/syntax] Może to da efekt?
Dodam jeszcze rezygnację z Bascom na rzecz ASM (przynajmniej wstawki). [syntax=basic4gl]Do I = 70 Servo(1) = I Wait 1 I = 110 Servo(1) = I Wait 1 Loop[/syntax] W tej pętli Czekasz dwie sekundy !!! Proszę poczytać przynajmniej o [syntax=basic4gl]Waitms[/syntax] O ile dobrze pamiętam.
A w jaki sposób sprawdzić przyczyny resetowania sie układu? Popatrz na skrót fragmentu Twojego kodu: [syntax=basic4gl] Mainn: '... Gosub Temp '... Temp: '... Gosub Mainn '... [/syntax] Jeśli rozumiesz w czym tkwi błąd, to OK, ale jeśli nie, to ... jeszcze sporo nauki przed Tobą :|
zmień no Pan: (umieszczaj kod w znacznikach)
syntax basic4gl syntax basic4gl syntax syntax basic4gl bascom dioda syntax zobacz
projektor telefonu schematy laptopów poszukiwane silnik kopcić
identyfikacja kolumn tchibo ekspertów
Brak biegu wstecznego w skrzyni Multitronic Audi Wymiana podświetlenia w pokrętle nadmuchu Toyota Corolla