A może jest jakiś inny sposób? A może jest coś w przykładach BASCOMA? Tak, jest w helpie : "ENCODER"
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?...
chyba nie 401 a 104 (chodzi o końcówkę). Przynajmniej u mnie tak jest na nich napisane (mam 3 sztuki - jeden sie spalił). Co prawda nie w avr ale odpalałem to w bascom 8051 i działą rewelacyjnie. Jedno do czego mozna sieprzyczepić to słaby kontrast - trzeba patrzeć na niego na wprost. Ale oprócz tego to sprzęt jest rewelacyjnie mały. U mnie sa takie...
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...
Moja jest ogólnodostępna, ale to biblioteka dla Bascom :D niemniej jest przejrzyście opisana :P Mógłbym dopisać więcej funkcjonalności jak bufor, ale to było pisane pod jakiś konkretny projekt który tego nie wymagał.
Witam Bardzo dziękuję za pomoc oaz ten program. Jedyne czego nie rozumiem w programie Kolegi, to zasady działania polecenia Shift. Z tego co zrozumiałem, to chodzi o przesuwanie bitów zmiennej, czyli umożliwia to de facto dzielenie lub możenie liczby. A co w przypadku, gdy chcę pomnożyć moją liczbę np przez 0.74, w tym wypadku byłby to zapis: [syntax=vbnet]Liczba...
Ja to potzrebuje dla Bascoma Nie wiem czy bascom moze tak operowac na wskaznikach. Faktycznie wszystkie jezyki umozliwiaja takie fajne, proste przesuwanie sie w ciagu ale jak to zrobic w Bascomie tego nie wiem. MO
Pin OE w stan wysoki i odłącza wyjścia od rejestru szeregowego układu. Pinem OE można nawet regulować jasność świecenia sterując go PWM. Wiersze mają zasilanie z tranzystorów a SCT ściągają odpowiednie kolumny do GND. Czyli z tego co widzę po schemacie tak jak u kolegi. Wpisuje dane do kolumn i włączam tranzystor zasilający wiersz 1. W kolejnym przerwaniu...
Nie znam się zbytnio na bascomie, ale spróbuj czy jednorazowe przesunięcie bez pętli zadziała. Być może to jakiś ukryty problem z przesuwanie rejestrów które są rejestrami fizycznie podłączonymi do sprzętu.
Przesuwanie startu watchdog na początek nie eliminuje problemu. Pewnie tak jak piszesz Bascom procedury inicjacyjne LCD umieszcza zaraz po resecie mikrokontrolera i stad te opoznienie. Moim zdaniem nie powinno tak byc bo ciezko zapanowac nad czyms czego nie widać. Chyba przyjdzie samemu napisac procedury odnosnie obsługi LCD :(
tak to jest najszybsza metoda wykorzystujaca przesuwanie i dodawanie wartosci 3 .Porownanie czasu tej operacji w asemblerze a sposobow napisanych w basicu pokazuje jakie to sa roznice.Algorytm jest kilka razy szybszy i kilka razy mniejszy.i ta metoda nie jest tylko dla 8-bitowych liczb lecz dla kazdej wielkosci liczby.po prostu zamiast 8 bitow przesuwamy...
witam. moim skromnym zdaniem bascom sie do tego nie nadaje. takie opoznienia i to jeszcze z przesuwanie bajtu powinno sie napisac w assemblerze tym bardziej, ze dokladnie wyliczysz sobie co i jak. jezeli chodzi o maskowanie bitu to nie za bardzo rozumiem co masz na mysli. bit mozna zamaskowac instrukcja [anl] ale nie wyrzucasz go. mozesz rowniez skasowac...
Komenda shiftlcd left tego nie zrealizuje Niby dlaczego? Problem będzie tylko, gdybyś chciał wykorzystać inne linie do czegoś innego. Tu masz przykładowy program, korzystający z pamięci EEPROM: $eeprom Data "Baaardzo d{003}uuugi napis.!Jest zapisany w pami{002}ci EEPROM. W ATTiny 2313 mo{007}e mie{001} do...
z tabelka to dowaliłem ... przepraszam...zapędziłem się odpowiedzią... Bardzo dziękuję, że jestes taki pomocny. Napisałem też do Ciebie PW. Przeanalizuję to wszystko dzisiaj i zobaczę co mi wyjdzie, nie mogę nigdzie znaleść przykładu procedury przesuwania bitów na 3 pinach - znalazłem tylko przesuwanie na całym porcie co do tabelki to widzę prawidłowość,...
arktik1 --> zajrzyj sobie do helpa i zobacz, że shiftlcd to przesuwanie (sprzętowe) całej zawartości wyświetlacza a nie jednej twojej wyimaginowanej linijki. W ogóle sprzętowe przesuwanie działa różnie tak na prawdę na różnych wyświetlaczach. Ty masz akurat spory bo 20x4 i w pamięci DDRAM LCD nie ma bufora na całe linie - stąd te dziwne zawijania o...
marekms1 - Nie wiem czy dobrze zrozumiałem jak ma działać program, więc zapytam. Czy otwieranie zaworów ma się odbywać przez przesuwanie bitu, czyli 1-szy zawór otwarty reszta zamknięta, 2-gi otwarty reszta zamknięta. Czy może w zależności od zmiennej więcej niż jeden zawór ma być otwartych? Edit: Zadając pytanie nie widziałem jeszcze postu Kolegi zumek.
Zgadzam się z yego666, sterownik bitmapy to fajna rzecz, ale wydaje mi się że takowy sterownik powinien posiadać większe możliwości, a na AVRach niestety się takowego zrobić nie da. Minimum to: -generator znaków -jakieś proste grafiki, powiedzmy bitmapy -linia kwadrat koło -kolory w trybie > 3bit żeby można było jakieś odcienie uzyskać -jakiś prosty...
Wiem o tym, czytałem te wszystkie wywody na temat jaki to Bascom jest plugawy, ale nie mam wyboru - z przyczyn ode mnie niezależnych muszę go jakoś okiełznać... (a przynajmniej w stopniu podstawowym) Jeśli chodzi o Rotate, to na początku modyfikowałem program z książki autorstwa Marcina Wiązania o Bascomie. Program ma działać tak, że diody zapalają...
jeśli będziesz to pisał w bascomie to używaj tylko najprostrzych instrukcji, staraj sie to zrobić bez użycia mnozęnia i dzialenia. w sumie to wystarczy ci przesuwanie bitów, i doczyt pojedynczych bitów. odczekanie na kolejny regaz musi być w pętli co określony czas i najlepiej jak będzie to pętla for która wykona sie ileś razy i potem przeskoczy dalej...
ja ci kolego nie podam gotowca z 2 powodów, bascom mnie zupełnie nie interesuje a druga sprawa ze net jest pełen przykładów. A różnica jest zasadnicza bo sprzetowa transmisja aby wysłać znak potrzebuje takich czynności jak ustawienie interface (predkość, polaryzacja sygnału) a potem tylko trzeba ustawić pin odpowiedziałny za sygna CS urzadzenia oraz...
Np. po to, żeby przesuwanie lub mnożenie nie musiało być jedyną możliwością zmiany stanu wyświetlacza. W tablicy można zapisać dowolną sekwencję kombinacji. Oczywiście, jeśli z góry założymy, że urządzenie nigdy nie będzei wyświetlało innych wzorców, niż jedna krążąca w kółko kropka, rozwiązanie z rotacją zmiennej będzie lepsze. W obu przypadkach budowa...
Witam serdecznie wszystkich Mam pewien problem jeśli chodzi o lcd a mianowicie opisze to tak. Mam sterownik domowy wykonany na M128 i lcd 4x20 RGB - ale mam za mało wierszy i pytanko ? Czy da się jakoś połączyć 2 takie same lcd żeby w programie wydawać komendę aż do 8 lini po 20 znaków. Czy jest jakiś taki patent. I jest jeszcze jedna sprawa - programowa...
MarasK -> moim zdaniem ten efekt u ciebie to tylko i wyłącznie ewidentna wina softu choć mogę się też mylić, a nie wina zasilania i zakłóceń. W czym masz napisaną obsługę LCD? - Bascom (gotowiec), C - jakieś własne procedury czy może jakieś z netu? czy w asemblerze coś własnego? takie przesuwanie się o jeden znak w bok, po dłuższym czasie jeszcze o...
Jeśli wyświetlam temperaturę mniejszą od 100 to wyświetlam ją w sposób: Locate 1 , 9 : Lcd T (a więc od 9 miejsca na lcd). Jeśli temp jest trzycyfrowa to swyświetlam ją w postaci: Locate 1 , 8 : Lcd T (a więc od 8 miejsca na lcd) i jak następnie temperatura znowu zmaleje do 2-cyfrowej to zostaje na wyświetlaczu jedynka (z poprzedniego wyświetlenia setki)....
No fakt, to jest BASCOM 8051 a nie AVR. :oops: Ale idea jest taka sama. Trzeba zrobić sobie bufor w pamięci (np. tablica bajtów - Array) i dwa wskażniczki: Zapis, Odczyt; które będa sobie biegać w kółko po tablicy - tworząc tym samym bufor kołowy (http://en.wikipedia.org/wiki/Circular_b... Zapis będzie wskazywał element, który aktualnie można zapisać....
Pozwolicie, że odkopię ten temat, gdyż widzę, że autor ostatniego postu zagląda jeszcze na forum i mam nadzieje, że on lub ktoś inny mi pomogą. Tak jak opisałem w temacie: http://www.elektroda.pl/rtvforum/viewtop... staram się wykonać matrycę led 5 na 24 z użyciem Atmegi16/32 i 3 rejestrów przesuwnych 74HC595. Ustaw port D jako...
Działa !!! ,wystarczyło zmienić na : Teraz mam jeszcze 2 pytanka ,by nie zakładać nowego tematu: 1) Dlaczego pierwszego programiku nie chciało symulować ,choć poprawnie się skompilował (bez błędów) i działał na "żywo " w procku??? 2) To czy da się zmienić wyświetlacz na taki 16x1 (LCD1601) z jednym wierszem, czy to nie ma znaczenia dla symulatora???...
' Na początku kodu Index_tab=0 ...... ...... If Licznik = 1200 Then IF Index_tab=3 Then ' przesuniecie w tył jeżeli pozyskano co najmniej 3 pomiary Pomiar(1)=Pomiar(2) Pomiar(2)=Pomiar(3) Else ' Fragment kodu wykonywany dla Index_tab=0,1 i 2 Incr Index_tab IF Index_tab>3 Then Index_tab=3 End If Pomiar(index_tab)...
Np. taki wężyk 'snake w Bascom 8051 Dim X As Byte , Y As Byte , C As Byte , D As Byte , E As Byte , F As Byte , R As Byte Dim X1(10) As Byte , Y1(10) As Byte Dim dlugosc as byte dim tmp as byte P1.0 = 0 P1.1 = 0 P3 = 0 Config Lcd = 16 * 4 Deflcdchar 0 , 32 , 14 , 31 , 31 , 31 , 14 , 32 , 32 Cls X = 8 Y = 2 R = 1 Locate Y , X Lcd Chr(0)...
Przykład bez użycia tablic... [syntax=basic4gl]$regfile = "m8515.dat" ' specify the used micro $crystal = 4000000 ' used crystal frequency $baud = 19200 ' use baud rate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space $sim 'Config Lcdpin = Pin ,...
Witam. atom1477 - masz rację, ale... Odgrzebałem swojego Pecela, aby sprawdzić w praktyce. Dla ludzkiego oka różnice w działaniu obu programów (przynajmniej tych konkretnych) nie są specjalnie zauważalne , a pierwszy, z wyświetleniem 16-tu spacji, upraszcza wyświetlanie przesuwającego się napisu. Zwłaszcza gdybyśmy chcieli przesuwać ten napis w pętli...
(at)zumek Dzięki za kod, ale nie do końca wiem jak on działa. Szkoda :( W1 to tablica wskaźników na W, przesunięta o dwa miejsca? Mylisz się :( W1 , to jakby wskaźnik na W powiększony o 1 element tablicy W , czyli 2 bajty . Natomiast tablica wskaźników , to ... nie z tej bajki ;) A dokładnie rzecz ujmując , to Bascom definiuje tablicę W1 , w obszarze...
Tak byłoby najprościej, ale bajtów mam 5 szt. PRzydałaby się większa zmienna.
Zamieszczam w załączniku kod programu. Zmiana tekstu jak można zauważyć odbywa się przez płynne przesuwanie literek po wyświetlaczu. Kod jest modyfikacja programu z książki : Projektowanie mikrokontrolerow AVR w praktyce. Bascom. Literki sam robiłem więc mogą być niektóre nie takie jak powinny. Pozdrawiam
Napisz program od nowa, przekombinowałeś wszystko maksymalnie, takie sterowanie da się zrobić prościej. Nie ma żadnego schematu. Przesuwasz sobie bity po porcie sterując jakoś, czymś... Dodatkowo przesuwasz aż 4 bity. Ile cewek ma twój silnik że aż 4 bity trzeba przesuwać?
INKEY i INPUT stricte nie czyszczą bufora. Od tego jest CLEAR SERIALIN. Jednak korzystanie z INKEY i INPUT pobierają dane z bufora i przesuwają wskaźniki, co także powoduje, że bufor jest "opróżniany" - choć dane w pamięci dalej są.
Skorzystaj z przykładów w helpie Bascoma. Wydaje mi się, że źle określiłeś wartość danej A.
Bufor ten ma 3 znaki ale po pojawieniu się pierwszego znaku od razu jest on przesuwany bo bufora programowego. Czyli działa to jak jak by bufor sprzętowy miał tylko 1 znak.
Ja Ci napisze jeszcze coś ciekawszego. W folderze Bascom jest plik PDF o nazwie BASCAVR.pdf To dopiero kopalnia wiedzy jeśli chodzi o udogodnienia. Przesuwałem jak przysłowiowy osioł linijka po linijce jak czyjeś kody były przyklejone do lewej linii albo bez wcięć. Teraz zaznaczam taki blok który chcę przesunąć i naciskam CTRL + SHIFT + I Suuuuuper...
Jeden mały rysunek w pamięci, przed wyświetleniem kasować ekran wyświetlacza i wysyłać rysunek od określonego adresu (zmiennego).
za pomocą shiftlcd można przesunąć tylko cały wyświetlacz. jak chcesz przesuwać jedną linię to musisz to zrobić w programie.
Chodzi o instrukcję SHIFT ? ... Nie, chodziło mi o MAKEINT(LSB,MSB), bo co Ci po SHIFT, skoro nie wiesz w którą stronę przesuwać :D
On będzie się zwiększał o 1 w tym przypadku, bo wartość przesunięcia przekazywana do funkcji też się tak zwiększa. Jeśli jednak np. zacząłbyś przesuwać w prawo to funkcja nie działałaby prawidłowo, poza tym musiałbyś tą wartość zapamiętać poza funkcją dla danego napisu (tak, jak teraz przesuniecie ). Dlatego trzeba to liczyć.
Przesuwanie było w pierwszym poście. Tamta wersja nie działała jak powinna bo odbierała jak pisałem. Na razie nie mam dostępu więc teoria tylko. Czy wystarczy polecenie shift left 1 przesuwając Dana? Pozdrawiam Maciej.
To jest ten obszar, gdzie Bascom nie daje rady. W assemblerze Bascoma to by było mniej więcej:[syntax=asm] ldi r16, 8 lds r18, {zmienna} przesuwanie_bitu: lsr r18 rol r17 dec r16 brne przesuwanie_bitu sts {zmienna}, r17[/syntax] Albo szybciej kosztem wielkości kodu: [syntax=asm] lds r18, {zmienna} lsr r18 rol r17 lsr r18 rol r17 lsr r18 rol r17 lsr...
Jeśli chcesz potencjometrem regulowac prędkość, to łączysz jego opór pomiędzy szyny zasilania mikrokontrolera, a suwak dajesz pod przetwornik ADC. I przykładowo program: Config Adc = Single, Prescaler = Auto, Reference = Avcc Start Adc i w programie co jakiś czas sprawdzasz sobie: opoznienie = getadc(0) i zamiast waitms 500, dajesz waitms opoznienie...
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
Tu masz troszkę prościej, z użyciem operacji przesunięcia bitowego (krótszy kod, łatwiejsza zmiana prędkości linijki led) Dim Led As Byte Dim Kier As Bit Config Portb = Output 'wszystkie porty b jako wyjścia' Portb = &B00000000 'wszystkie porty b w stanie niskim Config Portd = Output 'wszystkie porty d jako wyjscia Portd = &B0000000 'wszystkie porty...
Będzie to kodowanie z offsetem, i to w dodatku z offsetem zależnym od pomiaru w momencie naciśnięcia przycisku. Tak się po prostu nie robi. Czyli jedyna rada, to sprzętowo, za pomocą potencjometru regulować punkt 0? Nie, nie. Chodziło mi o to że jak regulujesz programowo, to zmienne muszą być trochę bardziej pojemne, na przykład typu LONG. Ale skoro:...
.. myslalem, ze jest do tego jakies 'tajemne' polecenie :) widze, ze bez nakladania masek, przesuwania sie nie obedzie..
bascom przesuwanie przesuwanie tekstu bascom bascom przesuwanie tekstu
uszkodzony pentagram płyta whirpool lokalizacja bluetooth
podzielniki ciepła techem systemy grzewcze serwis
Programowanie kluczyka Volvo V50: VIDA/DICE i CEM Ford Kuga Hybrid nie odpala - brak zapłonu