To zamiast: [syntax=basic4gl]Print &H7E; [/syntax] wyślij: [syntax=basic4gl]Print "{126}"; [/syntax]
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...
Daj zamiast [syntax=basic4gl]Config Int0 = Low Level [/syntax] tak [syntax=basic4gl]Config Int0 = Falling [/syntax] i pozmieniaj parametr Wait 2000 na inny.
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]
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]
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...
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...
... 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]
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ę...
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ą...
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...
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]
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]
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...
[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]
A poprawiłeś tą linijkę z błędem o której mówiłem: [syntax=basic4gl]Karta = Buffer_in(1)(2)[/syntax] ? Po jej poprawieniu działa. I jeszcze trzeba zainicjalizować zmienną In_pos na 1. Bez tego też będzie działało ale zgubi pierwsza ramkę. [syntax=basic4gl]... Adres = 01 In_pos = 1 Enable URXC Enable Interrupts Do Loop ...[/syntax] A i trzeba się upewnić...
[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
: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]
Tak jeszcze przed END IF: [syntax=basic4gl]Rc5send Togbit , Address , Command[/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 =...
brakuje Ci jeszcze jednej malutkiej instrukcji [syntax=basic4gl]Set Portc.5[/syntax] u mnie zawsze to działa
Przerwanie miałbyś z częstotliwością 32000Hz(8000000/250), gdybyś tylko przeładowywał Timer w przerwaniu. [syntax=basic4gl] Prztimer1: Load Timer1, 250 '<----- w tym miejscu na przyklad Incr Licznik If Licznik > 100 Then Licznik = 0 End If[/syntax]
Set Portd.5 - będzie stan wysoki albo: Pind.5= 1 Toggle zmienia stan Pinu, u ciebie nie był ustawiony żaden stan.
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]
Powinno być: [syntax=basic4gl]Print #2 , Godziny ; ":" ; Minuty ; " PIEC-" ; Ts ; " BOJLER-" ; Tb[/syntax]
Podciągnij wejście do plusa wewnętrznym rezystorem. Wejście T1 to PD5. [syntax=basic4gl]PORTD.5 = 1[/syntax]
To przekazuj zmienną w taki sposób: [syntax=basic4gl]Dim Y As Integer ' ' Servo(1) = Low(y)[/syntax]
Powinno być: [syntax=basic4gl]Printbin Send(1) ; 3 ' wyślij 3 elementy tablicy Send(), zaczynając od pierwszego elementu tablicy.[/syntax]
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...
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
Powinno być tak: [syntax=basic4gl] Print "AT+CMGS=+48123456789" Waitms 100 'Oczekiwanie na znak ">" Print "Test" ; Chr(26); [/syntax]
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ść.
Pierwsze co bym zrobił, to dopisał na początku programu np.: [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
Wskazówki : [syntax=basic4gl] Config Serialin = Buffered , Size = 254 , Bytematch = All Enable Serial Enable Interrupts Serial0bytereceived: Return [/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 ,...
Moze zmien algorytm tych obliczen. Wydaje mi ze ze jak po "Do" zrobisz od razu: [syntax=basic4gl]For Cykl = 1 To Y Z = ( Cykl * X ) \ Y Prc = ( 100* Cykl ) \ Y Call Oblicz Next Cykl[/syntax] to bedziesz mial co potrzebujesz i to bez uzywania single Nie znam dobrze Bascom, wiec jak nie mozna robic tylu operacji w jednej linii to dodaj zmienna pomocnicza...
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]
[syntax=basic4gl] Out1 Alias Portc.0 Out2 Alias Portc.1 Out3 Alias Portc.2 Out4 Alias Portc.3 [/syntax]
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...
Witam zamiast : [syntax=basic4gl] Config Int0 = Change [/syntax] ustaw : [syntax=basic4gl] Config Int0 = Low Level [/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]
Musisz dodać warunki, np. tak: [syntax=basic4gl] If Zmienna < 6 Then Zmienna = Zmienna + 1 Print Zmienna....... If Zmienna > 0 Then Zmienna = Zmienna - 1 Print Zmienna...... [/syntax]
Spróbuj do każdej wartości dodać znak % na końcu: [syntax=basic4gl]Data 7848% , 7748% , 7652% , 7559% , 7468% , 7380% , 7294% , 7211% , 7129% , 7048% [/syntax]
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...
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]
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] ;]
A czy jest inna metoda sterowania? Spróbuj takiej na przykład: pulseout ' w podobnej pętli For/ next e marcus Dodałem SYNTAX - bo pewnie rano się spieszyłeś :-)
musi być drugi wait po zmianie bitu [syntax=basic4gl]Do Portd.0 = 1 'zapal diode Waitms 200 Portd.0 = 0 'zapal diode Waitms 200 Loop [/syntax]
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...
Strasznie mieszasz, zmieniając te systemy liczbowe. Powinno być: [syntax=basic4gl] 'Wyjscie 1Hz I2cstart I2cwbyte &HD0 I2cwbyte &H07 ' zapis do adresu 07H I2cwbyte &H10 ' ustawienie czestotliwosci SQW/OUT I2cstop [/syntax]
Można to tak zrobić: [syntax=basic4gl]Dim Zdanie As String * 30 Dim Zdanie_array(30) As Byte At Zdanie Overlay Zdanie = "Dzien dobry/Elektrod/" Print Chr(zdanie_array(12))[/syntax]
[syntax=basic4gl]while a=1 x++ if x==100 zapal led if x==200 zgas led x=0 waitms 5 wend zgas led[/syntax]
Witam. ................ W czym problem? Przekaźnikiem steruję poprzez tranzystor BC547 Przekaźniki załączają się poprzez warunek: Potraktuj stan przekaźnika jako jednobitową pamięc albo flagę i od tego uzależnisz incrementację licznika. Na przykład: [syntax=basic4gl] If Tzad >= Hist and Przekaznik1= 0 Then Set Przekaznik1 incr licznik1 Lcd " " ;...
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:...
A może bardziej sensowne byłoby: [syntax=basic4gl] If S = 0 And PIND.7 = 0 Then port = portc End If [/syntax] e marcus
Mam to w programie Odłącz pin R/W od mikrokontrolera i podłącz bezpośrednio do masy.
W twoim programie jest tak: [syntax=basic4gl]If Wart_ac > 1000 Then Gosub Wykrywanie Elseif Wart_ac < 1000 Then Gosub Czujnik1przeciwnik Elseif Wart_ac1 < 1000 Or Wart_ac2 < 1000 Then ' ###### ta czesc petli nie reaguje na zmiany w ukladzie ### Gosub Czujnik12lini End If [/syntax] w jaki sposób 3 opcja ma zostać spełniona? Przecież jeśli...
[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".
Spróbuj to wpisać tak: No raczej tylko tak: [syntax=basic4gl]CLKPR = 128 CLKPR = 1[/syntax] Ta druga opcja nie zadziała - pierwsze do rejestru musi być wpisana kombinacja 0b10000000 a potem 0b0000XXXX, gdzie XXXX to prescaler.
Strona 132 PDF-a od attiny2313, rejestr UCSRC bity 5 i 4 [syntax=basic4gl] 'Odd Ucsrc.5 = 1 Ucsrc.4 = 1 'Even Ucsrc.5 = 1 Ucsrc.4 = 0 [/syntax]
[syntax=basic4gl] If Alarm = 1 And Portd.0 = 0 Then Reset Alarm ' Jeśli alarm wysyła dźwięk i zostanie naciśnięty przycisk nr. 1 - wyłącz go[/syntax] powinien być Pind.0
Pomyśl nad tym co napisałeś [syntax=basic4gl] If Pinb.0 = 1 Then 'jeżeli przycisk 1 wciśnięty Toggle PORTB.1 'zmień stan wyprowadzenia end if [/syntax] Przycisk masz podłączony do PB1 a nie PB0
Jeśli dobrze rozumiem pytanie to: [syntax=basic4gl]Dim Zmienna1 as String*10, Zmienna2 as String*10, Wynik as string*10 Zmienna1 = "s1234" Zmienna2 = "s67" Wynik = Mid(Zmienna1,2) '1234 Wynik = Mid(Zmienna2,2) '67[/syntax]
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]
Gdybym opisał program wszystko stałoby się oczywiste :D Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF :D Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się...
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...
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.
Pin wykorzystany przez przycisk P1, pewnie nie ma podciągniętego wewnętrznego rezystora. Przykład: [syntax=basic4gl] Config Pind.1 = Input ' PD1 jako wejście Set Portd.1 ' pullup PD1 (nie będzie działać jeżeli będzie napisanie Set Pind.1)[/syntax]
Prawidłowe wywołanie procedury musi być PRZED end,a nie po. [syntax=basic4gl] If Menu = 3 Then Menu = 0 call wyswietl_temperature End If [/syntax] Proponuję zrobić "po mojemu" czyli declare sub i sub wywoływany call'em.
To możesz zrobić tak: [syntax=basic4gl] Odczytaj_sprzetowy_uart: Dane = "" Do 'Odbierz znak po znaku Kod = Inkey() Dane = Dane + Chr(kod) 'Zapisz w Dane If Dane = "Obroty1" Then Obroty = 1 If Dane = "Obroty2" Then Obroty = 2 If Dane = "Obroty3" Then Obroty = 3 Bufor = Ischarwaiting() 'Zakoncz jeśli brak znaku Loop Until Bufor = 0 Return [/syntax] i...
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]
[syntax=basic4gl]If F1s = 1 Then Ilosc_wcisniec = Zmienna_pom Zmienna_pom = 0 Reset F1s End If[/syntax] Tu jeszcze mały błąd bo brakło zerowania flagi 1s i ma być porównanie z 1 a nie 0.
W tablicy powinieneś zaznaczyć że dane są typu word, dopisując do każdej wartości % : [syntax=basic4gl] Data &B1000000000000001% , &B0100000000000010% , &B0010000000000100% , &B0001000000001000% Data &B0000100000010000% , &B0000010000100000% , &B0000001001000000% , &B0000000110000000% Data &B0000001001000000% , &B0000010000100000% , &B0000100000010000%...
Pootwieraj wszystkie i szukaj jednego z deklaracją mikrokontrolera. Tylko jeden będzie miał wpis i tylko ten się kompiluje. $nocompile
....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 :?:
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
Witam. Kolego źle wpisałeś dane to znaczy odwrotnie. A ma być tak: Load Timer0,144 (7372800 / 256) = 28800 28800 / 144 = 200Hz = 5ms 5ms * 200 = 1sek [syntax=basic4gl]Odmierz_1s: Load Timer0 , 144 Incr Licz_5ms If Licz_5ms = 200 Then Licz_5ms = 0 end if[/syntax]
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ą :|
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]$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ć...
... 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]
Włączam zasilanie i od razu prawy się kręci a nie powinie żaden. dopuki nie nacisnę startu. Macie jakieś pomysły na rozwiązanie tego problemu ? Gdzie w programie masz obsługę przycisku ? poza ustawieniem portu i nadaniem nazwy [syntax=basic4gl] Config Portd = &B01111111 Portd.7 = 1 Przycisk Alias Pind.7 [/syntax] Może to były Twoje założenia , ale...
W dokumentacji układu jest taka tabelka z opisem rejestrów. Są tam oznaczone "x" bity opisane jako nieistotne. Ale nigdzie nie jest powiedziane, że ich wartość będzie 0. Po odczycie danych z pcf8563 trzeba się tych zbędnych bitów pozbyć. np[syntax=basic4gl]Godziny = Godziny And &B00111111 Minuty = And &B01111111[/syntax]itd
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...
Możesz to skonfigurować w pliku CONFIG_AVR-DOS.bas. Zamień: [syntax=basic4gl]Const Cvariableseparator = 44[/syntax] na [syntax=basic4gl]Const Cvariableseparator = 9[/syntax]
W symulatorze możesz sprawdzić czy program nie nadpisuje stosu. Komunikat pokazuje się w dolnej części okna symulatora "Frame or software stack overlap", można też sprawdzić w zakładce "uP". Jeżeli nadpisało stos ustawiasz wartości dla stosów na początku programu np.: [syntax=basic4gl]$hwstack = 32 $swstack = 16 $framesize = 32 [/syntax]
Przy przepisywaniu danych masz jeden błąd, pierwsza dana z linii DATA nie zostanie przepisana do tablicy. Numeracja elementów w tablicy DIM zaczyna się od 1, a numeracja elementów danych pobieranych przez Lookup zaczyna się od 0 :) . W BASCOMIE od wersji 2.0.0.0 można zmienić w jaki sposób będą numerowane elementy w tablicy DIM: A gdybym chciał przechowywać...
Musisz poprzedni stan wyprowadzeń układu przechowywać w zmiennej w procesorze (typ Byte). Do tej zmiennej możesz dostawać się poprzez operację kropki. Czyli np. [syntax=basic4gl] Dim Ekspander as Byte '... Ekspander = &B11110000 I2csend &H40, Ekspander '... Ekspander.0 = 1 I2csend &H40, Ekspander '... [/syntax] Pierwszy mój post w 2015, więc Szczęśliwego...
[syntax=basic4gl]Światło wewnętrzne w samochodzie nie włącza się po otwarciu drzwi kierowcy [/syntax] Modelu już nie znamy. Ale generalnie czujnik znajduje przy mechaniźmie zamka a nie jak ktoś pisze wyłącznik krańcowy. Ale pozostaje jeszcze instalacja w tym samochodzie szczególnie wiązka między drzwiami i kabiną. Niestety tam potrafią pękać przewody.
Spróbuj tak: [syntax=basic4gl]Play: Printbin $55 Printbin $aa Printbin $00 Printbin $03 Printbin $01 Printbin $f7 Return [/syntax] Nie ma sensu stosować funkcji tam gdzie wystarczy podprogram. Nie działa bo jest - Debounce Portb.0 , 0 , Play , Sub - LITOŚCI!!! Debounce Pinb.0 , 0 , Play , Sub - MA BYĆ!
Do komunikacji z układem można wykorzystać instrukcje I2csend i I2creceive , po wykonaniu w zmiennej Err jest kod błędu: [syntax=basic4gl]I2csend 112 , &B00010000 ' I2csend adres układu, wartość I2creceive 113 , Zmienna ' I2creceive adres układu, zmienna[/syntax]
Tam też był błąd. I nadal jest tylko 7 jedynek. Ale to akurat na ma znaczenia. cytat z helpa Instrukcja RESET Przeznaczenie: Ustawia określony bit w stan 0. Ustawia bit a nie bajt i tu jest problem. Wpisz tak: [syntax=basic4gl] Portb = 0 waitms 500 Portb = 255 waitms 500 [/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...
Do sortowania użyj instrukcji Sort : [syntax=basic4gl]Dim A(3) As Byte ' trzy elementowa tablica A(1)= 86 A(2)= 42 A(3)= 230 Sort A(1) , 3 ' sortuj trzy elementy w tablicy zaczynając od A(1) Print A(2) ' wyświetl drugą wartość[/syntax]
Chodzi mi o to że w bascomie żeby przerwania działały musisz włączyć globalną obsługę przerwań, i dopiero konkretne przerwanie. Do tego widzę że nie ma jak się wykonać podprogram "readir" bo masz wyłączoną globalną obsługę przerwań. Proponuję : [syntax=basic4gl] Config Rc5 = Pine.4 On Int4 Readir Config Int4 = Low Level Enable Interrupts Enable Int4...
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]
syntax basic4gl syntax syntax basic4gl bascom dioda syntax zobacz
oporność głośnik suszarka electrolux edp12074pdw miernik licznik zużyć energia
elektrolit przemienne optotriak obciążenie indukcyjne
Konieczność przytrzymania "D" dla wpisania "E" na laptopie Lokalizacja modułu sterowania wentylatorami w Golf 4 1.4 16V