Jak nie rozumiesz całości to ciężko będzie to tak w kawałkach tłumaczyć bo w drugiej funkcji jest wskaźnik na tablice z danymi. Trzeba pobrać adres tych danych u Ciebie i trudno się wypowiadać nie widząc całości. Mam dużo swoich spaw i też nie bardzo mam czas się oderwać. Najlepiej ściągnij jakąś biblioteke do obsługi LCD z Forum Bascom i zobacz jak...
To procesor steruje tym układem, a nie odwrotnie. Stąd też szybkość procka nie ma znaczenia - chcesz coś odczytasz to ustawiasz odpowiedni sygnał i w dogodnym czasie odczytujesz stan magistrali danych. Wszystko masz w nocie układu.
Witam! Po pierwsze to z reguły przyciski powinny zwierać piny wejściowe do masy a nie do zasilania. Wynika to z faktu posiadania przez procesory AVR wewnętrznych rezystorów pull-up podciągających wejścia do +vcc, czyli panuje na nich stale stan wysoki (oczywiście gdy zostaną uaktywnione). Po drugie to akurat sygnał CLK ma się zmieniać, podczas narastającego...
... BASCOM nie obsluguje tablic bitow... Bascom-AVR obsługuje tablice bitów , jednak z pewnymi ograniczeniami a)Tablica nie większa niż 256 bitów. b)index/numer bitu , MUSI być zmienną , choć właściwie niekoniecznie MUSI :D Piotrek
Bascom nawet w wersji demo.
Dopiero zaczynam programowac ale wydaje mi się ze mozna zrobic cos takeigo w Bascomie: ... Ale zupelnie nie wiem o co chodzi z tym maskowaniem bitow :? Maska jak nazwa wskazuje służy do zasłaniania np.twarzy :wink: Do tego wykorzystuje się logiczne "AND" i "OR". Przykład: Do x chcemy skopiować najstarszy i najmłodszy bit z y. x=y AND 129 (129 to właśnie...
No to spróbuj - zmienną wysyłasz jak normalną wartość, w Bascom ustawienie bitów w niej będzie się odbywało tak samo jak majstrowanie z rejestrami PORTn.x.
Jeśli dalej używasz choćby jednej zmiennej typu Bit to nadal pomysł jest aktualny bo bitów zawsze jest osiem. Jeśli nie, to mozna wygospodarować jedną zmienną typu Byte, ale że Tiny13 to bardzo wymagający uC i mozesz już nie mieć więcej miejsca na Byte to możesz pojechac po bandzie i do przechowywania wartości wykorzystać jakiś nieużywany rejestr :D...
A ustawienia bitów konfiguracyjnych?? Włączyłeś obsługę zewnętrznego kwarcu??
Kolego, układy AVR mają nogę podłączoną do kilku rejestów. Pisząc słowo PIN konfigurujemy rejestry wejściowe, a słowo PORT rejestry wyjściowe. Chodzi tu o składnie języka Bascom. Ta informacja jest oczywiście niedokładna , a sama interpretacja błędna (!). Pisząc 'config ...' w efekcie edytujesz rejestr DDRx odpowiedniego portu x. Nie jest ważne czy...
W Bascom masz do tego dedykowane funkcje - poczytaj helpa - polecenia Config...
wylacz watchdoga i naucz sie czytac dokumentacje. bascom tego za ciebie nie zrobi. 0x41 0x56 0x45!!
Sekunda.0 to najmłodszy bit bajtu sekunda, taki dostęp do pojedynczych bitów bajtu pojawił się dopiero w jednej z wersji bascoma, stąd nie działa we wcześniejszych. Działa to dokładnie jak w przypadku odwoływania się do pinów portu - piszesz portd.1 - kiedy chodzi o drugi (po pierwszym - zerowym) bit bajtu Portd, w odpowiednim rejestrze
Ok, użyje sprzętowego uarta i tyle to ja wiem, ale jakimi parametrami go ustawi? Ile bitów transmisji, stopu, parzystości i czy z inwersją? "Bo Bascom jakoś ustawi" to jest złe rozwiązanie. Nawet sprzętowego uarta przepuszcza się przez CONFIG COM żeby miec pewność że nie będzie niespodzianek.
... Może Bascom w ogóle nie potrafi tej 16tki odczytać? Pozdrawiam, Damian. Bascom potrafi , tylko Ty nie rozumiesz jak działa instrukcja I2creceive :( A działa tak: I2creceive 68 , W 'i2cstart 'i2cwbyte 68 OR 1 , czyli 69 'i2crbyte W 'i2cstop Z tego jasno wynika , że zawsze odczytasz tylko jeden bajt i zawsze będzie to pierwszy bajt z Twojego PCF-ka...
Kolego myślę że 16 bitów w takim wykonaniu jakie masz to i tak bardzo dobry wynik. Pomijam sam sposób budowy układu. Do wysoko rozdzielczych pomiarów trzeba użyć niskoszumowych wzmacniaczy i dobrego źródła napięcia odniesienia. LM358 i LM385 na pewno nie spełniają żadnego z tych kryteriów. Cena ich jest wyższa niż tego przetwornika AD. (np MAX6350,...
w Bascomie Fusebit A987 to cztery bity, ja muszę zmienić trzy bity CKSEL3..1 ustawić w nich jedynki, czwarty bit w A987 jest nie istotny bo jest bitem SUT? Bit A - to bit CKSEL3 Bit 9 - to bit CKSEL2 Bit 8 - to bit CKSEL1 Bit 7 - to bit SUT zgadza się? Nie , nie zgadza się... W Bascom, czy innym środowisku fusebitami odpowiedzialnymi za taktowanie...
Dane można zakodować 7-mio bitowo. Wtedy zajęte będzie tylko 7 bitów a ósmy bit będzie miał wartość 0 (w danych). A bajt kończący ramkę będzie pełny 8-mio bitowy i jego ósmy bit powinien być stawiony i po tym by się go rozpoznawało. Albo żeby nie bawić się w konwersję 8-->7bitów i potem spowrotem 7-->8bitów, to można zastosować RSa 9-cio bitowego. Wtedy...
Nic nie trzeba informować kompilatora - Bascom ładnie przyjmuje wprost rozkazy asemblera ale w zasadzie atom1477 zrobił to nawet bez asemblera - sorki - po prostu "ręcznie" odwołał się do rejestrów i wpisał do nich odpowiednie wartości tzn poustawiał bity tak żeby coś tam działało w tym przypadku co ja ci podałem trza by to było mniej więcej zrobić...
Za pewne nie wziąłeś pod uwagę fuse bitów które oryginalnie ustawiają zegar tak aby pracował z częstotliwością 1MHz. Wystarczy wpisać magiczne: $Crystal = 1000000 i po kłopocie :)
Jaka walka to tylko 4 przewody chyba że nie masz LPT w kompie. Bascom pod względem ustawiania "fusb..." jest najbardziej czytelny. Ja próbuje samodzielnie zaprojektować PCB ale idzie topornie. Dodano po 25 A jeszcze zapomniałem że pisze w HELPIE do BASCOM : Podczas gdy bity zabezpieczeń oraz tzw. fusebits pozwalają na dostosowywanie niektórych układów...
Najpierw to $crystal = 14745600 zamień na to: $Crystal=1000000 Nie zmieniałeś fuse bitów więc korzystasz z wew. oscylatora 1MHz. Na pewno masz 4k7 do drugiej nogi i do VCC?
GPIOB->BSRR=0b00000000000000000000000... //ustawi 1 na PB.0 bez zmiany pozostałych pinów? GPIOB->BSRR=0b00000000000000010000000... //wpisze 0 na PB.0 bez zmiany pozostałych pinów? Jednak wolę Bascom niż zabawę w liczenie 32 bitów To nie Bascom, nic nie trzeba liczyć. Piny mają zdefiniowane nazwy symboliczne np. w odniesieniu do...
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Twój LM75 jest na I2C, zakładam więc że umiesz odczytać z niego te dwa bajty z wartością temperatury. Sprawdzasz najstarszy bit, starszego bajtu w odczytanym z czujnika wyniku. jeśli jest równy 0, to znaczy że temperatura jest dodatnia i wynik liczysz poprzez: 1. przesunięcie otrzymanego z czujnika wyniku o 5 bitów w prawo 2. pomnożenie rezultatu tej...
Wystarczą dwie instrukcje MAKEINT i SHIFT : [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 $baud = 2400 Dim A As Byte , B As Byte , C As Word A = &b00110000 B = &B00100000 C = Makeint(b , A) ' z dwóch bajtów zrób słowo Shift C , Right , 5 ' zmienną C przesuń w prawo o 5 bitów Print Bin(a) Print Bin(b) Print Bin(c) End[/syntax]
Zaproponowane zmiany nic nie zmieniły. Jak była obsługa 12bitów to procesor i tak rozpoznawał jaka to ramka za pomocą długości bitu startowego i dalej już "nie obsługiwał" części odpowiedzialnej za tą ramkę 12bit. Sprawdziłem i odbiera normalnie zawsze pierwszą ramkę, załączam ekrany oscyloskopu, drugi kanał jest wyzwalany flagą po odebranej ramce...
Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
No to jak się zastanawiałeś nad tym, to powinieneś zaskoczyć o co chodzi... Po prostu należy najpierw wyłączyć maskowanie roku i dnia tygodnia (więc zamiast 8 do rejestru 0 wpisać wartość 0), potem odczytać cały bajt, zamaskować niepotrzebne bity w danym bajcie: najpierw rok i odczytać dzień miesiąca, potem zamaskować dzień miesiąca i odczytać rok -...
Możesz napisać i cieszyć się funkcjonalnością nie wiedząc o co chodzi ... $baud = predkosc_transmisji Tylko jeśli nie umieści się tej informacji w kodzie i użyje gdzieś Print/Input lub pochodnej to kompilator ustawienia dla $baud bierze z tych zdefiniowanych w IDE. Bascom konfiguruje od razu obydwa piny. Skonfigurowanie ich polega na wpisie do rejestru...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Może tak: 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 Do Incr Pwm1a If Pwm1a = 1000 Then Exit Do Waitms 10 Loop Do Decr Pwm1a If Pwm1a = 5 Then Exit Do...
Witam Sprawa prosta. Rozwiązać problem można na kilka sposobów. Ja robiłem tablicę 16-to elementową i w pętli z każdym zboczem sygnału zegarowego wpisywałem wartość do tablicy. Po odczytaniu 16 bitów czytałem te komórki, które mnie interesowały i sumowałem wynik z odpowiednimi wagami bitów. Poglądowy program poniżej. Config Pinx.x : Clk alias Portx.x...
Hehe, przeanalizuj dokładnie Twój ostatni programik i odpowiedz sobie jeszcze raz na pytanie jak on właściwie działa :) ...jak ograniczyć ruch diody dosłownie na 4 pinach. Tu mamy przesuwanie 2 diodek - "00010001"... Wkradł mi się mały błędzik :) W swoim programie pobierałem dane z linii Data i były to tylko bity 0...3 dla silnika bipolarnego natomiast...
Witam poporstu generujesz przebieg ze sprzętowego PWMa tylko problem polega na odpowiednim dobraniu kwarcu ja dokąłdnie nie pamietam jak to jest wykonane w bascomnie ale kiedyś pisałem taki program. Zobacz do PDFa na rejestry TCCR0a i bedziesz wiedział jak albo poczytaj w bascom help na temat config PWM . Wzór na F wyjściową z PWMa jest taki częstotliwość...
Czy w trakcie programowania nie nastąpiła jakaś przerwa , zły kontakt przy wtyczce itp. Bo to wygląda na zablokowanie procka przez błędy w programowaniu . Program nie widzi procka z powodu złego ustawienia bitów konfiguracyjnych . Rozwiązanie - programator równoległy HV . Jeżeli dajesz nowy procek i dalej nie jest widziany przez program to sprawdź połączenia...
Jak czytałeś lub nie :) karta ma sekwencje "startu" , nie pamiętam teraz jaki ma format, jest to jakiś 5bit znak, ja najpierw z czytuje cały bitstream od czytnika i potem funkcją szukam startu jak nie znajdę to "przekręcam" bufor (znaczy ostatni bit staje się pierwszym w strumieniu) i jeszcze raz szukam znaku startu, potem już tylko na podstawie tablicy...
Witam Mam nadzeje ze temat jeszcze aktualny, Bascom obsluguje standard Unique (125kHz) wiec warto sprawdzic czy standard zastosowany tutaj jest z nim zgodny. Sprawdz co dostajesz z wyjscia Data, podlacz sie na rx procesora i wyswietl to sobie na LCD lub podlacz data bezprorednio pod PC przez konwerter TTL/CMOS i bedziesz wiedzial co idzie. Dla Unique...
Porównywać dane można np. dim chip(8) as byte '8 bajtów odczytanych z karty chip dim eprom(8) as byte '8 bajtów odczytanych z eepromu dim k as byte,i as byte 'zmienne pomocnicze ... gosub porownaj if k=0 then ... 'numer karty jest zarejestrowany porownaj: For I = 1 To 8 K = Chip(i) Xor Eprom(i) If K <> 0 Then...
DZIĘKI za dokładne opisanie :) A czy mógłbyś mi napisać dlaczego PIND =&B00100000 =32 ? Skąd te 32, czy to był tylko przykład, czy faktycznie po wpisaniu jakiejś formuły stan poszczególnych bitów przelicza się na jakąś tam wartość, w tym przypadku 32? To nie są przypadkowo wybrane liczby! Jedynie przykładowo został wybrany numer portu (B.5) albo (D.5)...
Również nie jestem Bascomowcem ale być może moje uwagi okażą się cenne. Po instrukcji Print "{008}5r", dane jest 10 ms opóźnienia. W tym czasie slave mógł już przesłać wszystkie swoje dane - a master jeszcze nie rozpoczął nasłuchu. Inną sprawą jest to, że 100 obiegów pętli w procedurze Odczyt_zn może trwać krócej niż transmisja jednego znaku przez UART...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Kwarc wstaw w obu przypadkach nawet 16MHz. Baudrate jest zależna w zasadzie od jego dzielnika niż od kwarcu. Nie szalej też z dużą szybkością bo błędy mogą wyskoczyć, zacznij od 4800 bps. Połączenie po UART masz zrobić sprzętowo! Timer niech ci obsługuje multiplexing, główna pętla programu sprawdzanie czy w UART coś przyszło i przepisywanie do tablicy....
Witam Kolego Unreal89. Pracuję pod Bascomem 8051 i nie spotkałem się z funkcją, o której wspominasz. Przejrzałem pliki help'a i tam również nic nie znalazłem. Zainteresowany jestem z jakiego powodu odpada komenda "fusing"? Dla czego pytam? Pozwolę sobie obszerniej skomentować zaprezentowany listing. 1. Termometr DS18B20 przechowuje informacje o temperaturze...
Zrobiłem jak pisał Driver, odłączyłem wejście sygnału do LM7001 i podłączyłem sterowanie nap. warikapów przez potencjometr. Przy ok.2,2V miałem f=132MHz a przy ok.7,2 f=136MHz to by było z zapasem dla odbioru i ok.11,5 f=146. Ponownie podłączyłem zgodnie ze schematem, nie zaskoczyła... Myślę że podanie częstotliwości ze skanera nie ma co sprawdzać,...
A jednak są literówki :D I w sumie dzięki temu chyba znalazłem błąd, który rozwiąże całość. Sprawdzałeś 16 bit Send_volume a wcześniej przesuwasz Volume o 16 bitów (co oznacza, że bity jakie sprawdzasz są "0"). Warunek do sprawdzania czy DQ ma być 1/0 musi być [syntax=c]if(Send_volume & 0x80000000)[/syntax] Ja na twoim miejscu zrobiłbym w ogóle...
lub mozna użyć NOT - neguje pojedyńczy bit
Tak co jeden cykl. Prescale jest 64 wiec nie tu chyba problem. Nic sie nie dzieje na wyswietlaczu a w symulatorze tez nie pokazuje zmian zmiennych. To nie jest jeden cykl, ani też 64 jakby wynikało z podziału prescalera. Wszystko można odczytac w symulatorze, tylko musisz potrafic posługiwac się jego ustawieniami i funkcjami. Poniżej masz przykład...
Witam, Zgadzam się układ w takiej formie nie ma sensu, po prostu musiałem się cofnąć do wyświetlenia pojedynczych bitów z DS18B20 bo układ nie wskazywał poprawnie temperatury.
Może zmień kabel na inny. Mi kiedyś też usbasp odmawiał współpracy na kablu 2m a na 1,8 z filtrami działał bez problemu. Jakiego masz bascoma bo starsze miały problemy z usbasp.
bascom maskowanie bitów bascom odczyt bitów bascom tablica bitów
tyrystor sterowany napięciem kotla olejowego mostek bc337
warzone ścinki protokól pomiarów
Błąd F02 w bramach Crawford/Entrematic i pralkach Whirlpool, Indesit – diagnostyka i przyczyny LiFePO4 – montaż baterii na leżąco czy na stojąco? Zasady, marki, typy ogniw