Przeciez to banal. $regfile = "8535def.dat" $crystal = 4000000 $baud = 9600 Dim Wskaznik As Byte Dim Dane(4) As Byte On Urxc Odebranybajt Nosave Enable Interrupts Wskaznik = 0 Do If Wskaznik = 4 Then Wskaznik = 0 'a tu dalsze intrukcje 'jak juz masz wszystkie 4 bajty End If Loop Odebranybajt: Wskaznik = Wskaznik + 1 Dane(wskaznik)...
https://obrazki.elektroda.pl/4706372500_... W poprzednich częściach pokazałem zasadę działania oraz uruchamianie pozyskanych wyświetlaczy (modułów) VFD. Teraz przyszła pora na zbudowanie własnego sterownika wraz z potrzebnym zasilaczem. • Zasilacz Ze względu na dość złożony sposób zasilania samego wyświetlacza postanowiłem zacząć...
Wiem że trzeba z tego skorzystać jednak nie mam pojęcia jak. Wiem że są tam dwa bajty jeden mniej znaczący drugi bardziej. Wiem że powinienem je odczytać, ale nic mi z tego nie wychodzi. Gdy odczytuję 14 i 3 bajt wychodzą jakieś dziwne liczby.
Dzisiaj mam urodziny i mam prawo być pod wpływem :P, ale .. zwróć uwage na ten Twój rysunek gdzie pisze 15-8 i niżej 0-7 Myślisz że to przypadek albo coś innego? Zobacz też że dwa bajty się nazywają X, dwa nazywają się Y i dwa nazywają Z Warość prawdopodobnie jest dwubajtowa. Coś typu Word albo Integer. Kiedy czytasz tylko jeden bajt to albo czytasz...
No więc tak. Bascom posiada gotowe komendy do sterowania po I2C. Mniej wiecej wyglada to tak: start transmisji wyslij adres na magistrale i po kolei możesz wysłac bajty ile chcesz ale bajty a nie całe słowo. W sumie to chyba przebiegi sygnałów są takie same, Więc jeżeli wysłałbym dwa bajty cały czas trzymając niski stan na nodze FSYNC to może by przyjął...
tak też można,procedura z dzieleniem zajmuje odrobinę mniej pamięci, jeśli jest jej mało to można zyskać ze 2 bajty Dodano po 2 (dotyczyło to procedury ze zmiennymi łańcuchowymi)
Musisz posprawdzać sobie ile potrzeba Ci pamięci na stosy. Każde polecenie gosub odkłada dwa bajty na stos. Pamięć ta jest zwracana przy wyjściu z podprogramu, ale jeśli z tego podprogramu uruchamiany jest następny podprogram, to nie dość że pamięć nie jest zwracana (bo nie ma prawidłowego wyjścia z podprogramu) to jeszcze następne dwa bajty są odkładane...
http://obrazki.elektroda.pl/3809639100_1... Bywa, że w projekcie trzeba dodać dodatkowy port komunikacyjny. Jest to problemem, gdy taka potrzeba zajdzie w końcowej fazie projektu. Wymiana mikrokontrolera na większy spowoduje konieczność zmiany PCB. Dodatkowy port USART, może być potrzebny tylko podczas uruchamiania urządzenia (np do...
Witaj, Po pierwsze w Bascomie możesz zadeklarować programowy bufor USARTA w dodatku z wieloma sygnałami sterującymi Twoją ramką a po drugie pamięć EEPROM możesz zapisywać stronami bodajże po 32 bajty co oczywiście nie zmienia faktu, iż zapis strony potrwa tyle co zapis bajtu, nie mniej. Pozdrawiam... robiw
Można też, gdyby Ci zabrakło kilka bajtów, odzyskać je zamieniając warunki IF...AND... na łączone IF...IF... Taka zamiana czyni program nieco mniej czytelnym ale czasem ratuje skórę :)
Nie lubię i nie używam Basica, ale moim zdaniem jest tak: PRINT wysyła dane typu STRING, a FUSING zamienia liczby na ciągi ASCII. Dodatkowo PRINT wysyła znaki końca wiersza. Żeby wysłać bajt spróbuj CHR() mniej więcej tak: PRINT CHR(Msb); CHR(Lsb) Teraz wysłane zostaną dwa bajty - starszy i młodszy a za nimi znaki końca wiersza. Teraz...
Raczej operacją sprawdzenia zajętości bufora UDR, a nie sprawdzenia jego zawartości. Chodzi o coś takiego: Do D = ISCHARWAITING If D <> 0 Then 'jeśli coś jest odczytane to wtedy to zapisz do tablicy D = Inkey() W(n) = D Incr N 'przejdz do czytania kolejnego elementu tablicy If N = 16 Then N = 1 End If End If Loop Mniej więcej.
Czyli zapis wyglada tak (?): Dim A as Byte Dim B as Word B=0 Do while B<65535 For A=0 to 3 I2cstart I2cwbyte 160 I2cwbyte (A+B) I2cwbyte wartosc I2cstop Next A B=B+4 wend if B=65535 then Print "Malo pamieci!" loop
u mnie zajmuje mniej miejsca a poza tym jest szybsza - dzielenie i tak zajmuje sporo czasu procesora a im większy jest dzielnik tym dłużej. Mozna to jeszcze bardziej skrócić, dac mov {ala},{do_podzielenia_pomoc+0} zamiast tego low i jeszcze pare takich mov do przepisywania wartosci - bascom robi to toche inaczej a tak mozna bezposrednio przesowac zmienne...
Skoro rysunek 2255842600_1396547955 pokazuje, że najpierw wysyła się "address high" a po nim "address low", to można przyjąć (bez zagłębiania się w notę), że dane wysyłane po sub-adresie przesyła się w taki sam sposób: najmniej znaczące bajty wielobajtowych danych wysyłamy na końcu, zatem 0xAABB wyślemy jako najpierw 0xAA, potem 0xBB, najpierw szesnastki,...
Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
Shift jest od przesuwania bitów. Ty musisz przesuwać całe bajty w tablicy Buffer_in. Użyj sobie mojej metody odbierania: [syntax=vbnet]Inputbin Dana Buffer_in(in_pos) = Dana Incr In_pos If In_pos = 9 Then 'Jak zmieści się co najmniej jedna cala ramka danych If Buffer_in(1) = &H01 Then 'To sprawdzamy czy jest prawidłowo rozpoczęta If Buffer_in(2) = &H10...
Disable Interrupts 1wreset Enable Interrupts Disable Interrupts 1wwrite &HCC Enable Interrupts Disable Interrupts 1wwrite &H44 Enable Interrupts Waitms 750 'czas konwersji 750 ms Disable Interrupts 1wreset Enable Interrupts Disable Interrupts 1wwrite &HCC Enable Interrupts Disable Interrupts 1wwrite &HBE Enable Interrupts Najgorzej to z tym: T(1)...
Z całym szacunkiem to jest to po prostu wioska. Nie zadałeś sobie trudu sprawdzenie biblioteki o której pisałem. Powinienem to tak zostawić , ale nie mogę na to patrzeć. Nie dość, że nie możesz używać standardowych instrukcji Bascom takich jak Lcddat, Showpic itd to jeszcze potrzebujesz 512 Bajtów na bufor.. Dyskwalifikuje to ten kod dla mniejszych...
W czym problem? Funkcją Modbus mozesz zapytać sterownik o jeden lub o kilka rejestrów na raz. W zapytaniu podajesz ile rejestrów chcesz otrzymać i od jakiego adresu. Ten kod który masz jest trochę za prosty. Gotowy przykład jest w Samplach Bascom`a (zajrzyj do katalogu Serial i Modbus_slave, Modbus_master) Chodzi o to że tam po adresie slave`a otrzymasz...
Witam Kupiłem robota klasy mini sumo. Zawiera on 2 mikrokontrolery Atmega8 służącą do obsługi dalmierzy, oraz Atmega32, która jest główną jednostką. Atmegi są połączone ze sobą przez SPI. Atmega 8 jest już zaprogramowana i wysyła przez SPI 2 bajty ( 1 dalmierz lewy, 2 dalmierz prawy), jeżeli obiekt jest w odległości 10cm to wysyła bajt o wartości 10....
Tylko ze litery chyba nie zajmuja tyle samo bajtow. Napewno litera "w" zajmuje wiecej niz "l". Wtedy znaki zajmujace mniej bajtow musisz dopelnic bajtami, ktore beda ignorowane, nie przekazywane do wysylania na wyswietlacz. Musisz tylko znalezc wartosc bajta, ktora nie stanowi zadnej litery. Jedyne ktore przychodza do glowy to 170 lub 85 ale kto wie...
Przetestuj ;] Generuj timerem pseudolosowe 8bitowe zmienne i badaj wydajność :) Level drugi optymalizacji jest rozbić bajt na dwa nibble. Fakt, że musimy wykonać około 2 instrukcje więcej, ale RAMu zostanie użyte 16x mniej...
Disasemblując plik hex nie rozróżnisz danych od rozkazów, co może utrudnić/uniemożliwić ponowną assemblację. Będę szczery - czepiam się :D Pierwsze i najważniejsze - jeżeli zdisasemblowanego programu nie da się spowrotem zasemblować, to znaczy, że w disasembler jest do d... i nie działa tak, jak powinien (ewentualnie nie działa asembler). :D A poza...
Gdzie z tego ma procek wrócić? A tutaj: If _hour = G1 And _min = M1 And _sec = 0 Then Call Karmienie End If '<--- tu If _hour = G2 And _min = M2 Then Call Karmienie End If '<--- tu I tak w zasadzie tworzenie z tego SUBa jest nieco bezsensowne. Nie można: If _hour = G2 And _min = M2 Then ' wlacz karmienie Portd.0 = 0 Portd.5 = 1 Wait 1 Portd.5...
Oczywiście zgadzam się z kolegą, po optymalizacji będzie tego mniej. Czcionki można wprowadzić do pamięci EEPROM mikroprocesora. Da to wiele zalet, i zaoszczędzi główna pamięć programu. Jeśli będziemy pracować tylko w trybie tekstowym to i RAMu na bufor obrazu niewiele trzeba 6 linii * 14 znaków, czyli 84 bajty.:idea:
No tak ale 105B to zdecydowanie troszke mniej niz 1024B A obsługa tego? Nie zajmie chyba 0B (to wyszukiwanie)? Nie wiem ile w BAscomie ale w ASm góra 40 bajtów.
"delay" (czekaj, opóźnij), który do niczego nie służy, a miejsce zajmuje Oj służy, służy. Bez tego program by nie działał. Ostateczna wersja zajmuje 1022 bajty. Być może dało by się mniej stosując jakieć optymalizacje, albo wprowadzić jakieś siermiężne programowanie czasów wymagające wiedzy i umiejętności, ale po co? Co zrobić z pozostałą pamięcią?...
Mniej miejsca zajmie skompaktowanie tego - tylko 4 bajty na pelna date: union CompactDateTime 24 { 25 struct CDT 26 { 27 uint8_tSecond : 6; 28 uint8_t Minute : 6; 29 uint8_t Hour : 5; 30 uint8_t Day : 5; 31 uint8_t Month : 4; 32 uint8_t Year : 6; 33 } cdt; 34 35 uint32_t bin; 36 }; Na Bascomie sie nie znam...
Takie rzeczy były w moim kodzie? Już zapomniałem co tam było..:P Wiesz, jeżeli masz możliwość, to zrób sobie te moje płytki testowe - wykluczysz złe połączenia i sprawdzisz czy moduły są ok. Fakt, czytałem że lubią ścisk, ale powiedz mi, masz kondensatory blokujące przy zasilaniu? Uwierz lub nie, ale bez nich układ działał diabelsko niestabilnie.. EDIT:...
1) Flash. Zrobiłem ze zmiennymi wyświetlacz tak jak mówiłeś. Że została jednak, i przed każdą cyfrą, podstawiam konkretną wartość za każdym razem do jednej tej samej zmiennej. Rezultat? Nic to nie dało, a jeśli dało, to mniej niż 1%. 2) W c jeśli dobrze to zoptymalizujesz. Kolega napisał ten program w C i zajął 1016 bajtów. Kod (już z działającym wszystkim)...
Co do samego odczytu [syntax=basic4gl] Przerwanie_od_rxd: Dana = Udr Incr In_pos Buffer_in(in_pos) = Dana Wywal_bajt = 0 If In_pos >= 4 Then 'Jeśli są co najmniej 4 bajty (dwa startowe, długość ramki i jakaś dana) If Buffer_in(1) = &H7F Then 'Jeżeli pierwszy bajt startowy jest dobry If Buffer_in(2) = &HEF Then 'Jeżeli drugi bajt startowy jest dobry...
Witam. Czytam właśnie notę: http://www.atmel.com/images/doc1644.pdf Proszę o pomoc w interpretacji (str. 4, wiersze 3-4) Page Erase All Flash memory updates are done page by page. Before writing new data to a page, the page must be erased. The Z-register is used to select the page to be erased. Set up the Z-register to point to a byte in the page to...
Witam. Czy może mi ktoś powiedzieć co robię nie tak. Tak - nie czytasz dokumentacji... :twisted: Przecież próbujesz zapisywać/odczytywać dane do/z jakiegoś innego układu niż Twój AD5933 ;) Jego adres do zapisu to &H1A , a do odczytu &H1B (adres podstawowy &B0001101 plus bit kierunku 0 = write, 1 = read ). Stoi o tym jak byk w dokumentacji na str. 25......
'***************************************... 'Program zapisuje bajt Value do dziesięciu komórek pamięci 24c64 począwszy od komórki o adresie &H0000 '***************************************... 'Dla adresowania 24c64 potrzebujemy zmiennej...
U mnie kompiluje. W Twoim BASCOMIie jest jakaś pluskwa. Zmienna T powinna mieć długość co najmniej 5 bajtów. Np. dla temperatury 23°C jej zawartość to będzie: 23,0# Gdzie jako # zaznaczyłem znacznik końca linii. U Ciebie też będzie działało, bo za zmienną T nie ma innych zmiennych (w pamięci RAM) więc nic nie zostanie nadpisane. Ale lepiej to zmień....
Po pierwsze adres to: 192 - Write i 193 Read, lub 194 Write i 195 Read. A nie tak jak u Ciebie R-192 i W-194 Poza tym ramka powinna mniej więcej tak wyglądać: [syntax=c]//Adres + Write I2C_Start(); I2C_Write(192); I2C_Stop(); //Dzielnik - starszy bit I2C_Start(); I2C_Write(div_h); I2C_Stop(); //Dzielnik - młodszy bajt I2C_Start(); I2C_Write(div_l);...
Zrozumienie prostego i nieskomplikowanego, jak się na końcu okaże, Overlay bardzo się przydaje. Zanim zacznę to przypomnę i umówmy się że jeden bajt zapisujemy w dwóch znakach, na przykład FA, FF, 8C, 0B itd.. Pierwszy przykład obrazujący zagadnienie: Jak wiadomo zmienne typu WORD albo INTEGER składają się z dwóch bajtów. Jeśli więc zadeklarujemy w...
(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...
A jak mniej więcej miałoby to wyglądać. Przejrzałem pomoc do tej komendy w Bascomie i jakoś nie wiem jak jej użyć. To może być np coś takiego ? D0 = Data (D1) Lcd D0 D1 - dana wejściowa Aktualnie tego nie przetestuje bo uszkodziłem układ.
Ischarwaiting też do końca nie rozwiązuje problemu. Program działa minutę po czym czeka minutę na dane z uart-a. Ręce opadają. Skonfiguruj bufor pierścieniowy, będziesz miał dostęp do zmiennej _RS_BUFCOUNTR0 . Jeżeli się nie mylę jest to aktualna ilość odebranych bajtów w buforze. [syntax=basic4gl]If Ischarwaiting() = 1 And _rs_bufcountr0 >= 6 Then...
Te AVR-y posiadają dwa sposoby programowania, jeden przez interfejs ISP i dodatkowo przy pomocy protokołu równoległego z wysokim napięciem na nóżce RESET. A jaki ty posiadasz ? Dodam że przez ISP jest mniej lini potrzebnych do zaprogramowania procka to może ci ułatwić rozszyfrowanie tego programatora. Tak czy inaczej coś musi być nie tak skoro źle się...
Błędy się mogą zdarzyć zawsze, ale lepiej jak jest ich jak najmniej więc możesz spróbować dodać kondensator 100nF - 1uF przy samym czujniku jeśli pracuje w trybie na trzech przewodach. Potem zmieniłbym procedure odczytu danych z czujnika na taka która sprawdza CRC i ósmy bajt na obecność wartości &H10. Kiedy sprawdzanie przebiegnie pomyślnie to bierzesz...
Witam. Mam do was Panowie prośbę. Pewnie powiecie ze nie moge oczekiwać gotowych rozwiązań.. ale zapewniam ze juz sie nad tym glowilem i nie wiem jak to napisać: Ale do rzeczy: W pamięci eeprom będę miał wprowadzony tekst ... ciąg bajtów... zawartość eepromu będzie przewijana na LCD od nokii (6 wierszy po 14 znaków) muszę teraz napisać kod ktory np....
Chyba nie $INC tylko $INCLUDE (?) $INCLUDE ”nazwa_pliku” gdzie: nazwa_plikuNazwa dołączanego pliku ze ścieżką dostępu. Plik musi zawierać tekst programu w języku BASCOM BASIC. Wynika z tego, że dołączony plik ma wyglądać mniej więcej tak: Dane: Data 5 , 10 , 100 (i tutaj jeszcze ok 500 bajtów) Może się mylę, ale to chyba nic...
AT89C51 też ma 128 bajtów SRAM... :) AT89C52 ma więcej 256 ogólnie ...52 mają 256 bajtów RAM, może to też za mało ? W sumie warto przetrzepać noty katalogowe pod kątem : "512 x 8-bit Internal RAM", co by program się skompilował w końcu, bo zawiera dużo liczenia. W każdym bądz razie "out of internal memory" to oznacza "zabrakło pamięci wewnętrznej",...
Mniej więcej w ten sposób mam to teraz zrobione, ale jest to hmmm... nieestetyczne. Jeżeli szukane dane znajdują się na końcu tablicy, to za każdym razem musi być niepotrzebnie czytana prawie cała zawartość tablicy (czy przez 'read' czy 'lookup'). Jeżeli wykonuje się to kilkadziesiąt razy na sekundę, to przy dużych tablicach procesor może się nie wyrobić....
bingo napisałem już program który pokazuje odebrane sygnały z ibus szyny błędnie myślałem ze trzeba odwrócić sygnał, zastosowałem interfejs od gościa który zrobił takie coś na microchipie czyli tylko dioda i opornik (u mnie 1n4148 i 10k) [syntax=basic4gl]Serial_flag = Ischarwaiting() 'jesli znak czeka to ustaw flage If Serial_flag = 1 Then ' jelsi flaga...
Do obsłużenia systemu plików potrzeba co najmniej 512B to przechowywania jednego sektora. Żeby zapisać choćby jeden bajt na kartę SD to trzeba wysłać do zapisania cały sektor, a więc wcześniej trzeba odebrać sektor, zmienić potrzebny bajt i potem wysłać sektor. Inaczej podczas zapisu potrzebnego bajtu zamażesz pozostałem bajty. Więc procesor ATMEGA8...
Można. Służy do tego opcja(w opcjach) Options/Compiler/Misc Tam jest środkowe pole: Byte end(hex) i jakaś wartość. Właśnie ta wartość informuje kompilator ile ramu ma maksymalnie wykorzystać. Domyślnie jest 50(hex = 80 bajtów) w uC co mają 128 można tam wpisać 7F a w twoim przypadku nawet FF(256) ale ustaw troszkę mniej i jak przekroczysz znowu limit...
bascom input bajty bajty polskie pcf8583 bajty
awaria ekspresu philips samsung pralka uszkodzenie agregat jednofazowy sieci
telefon dziwny sygnał bateria hilti
Schemat elektryczny zmywarki Whirlpool 6th Sense – gdzie znaleźć, jak odczytać Motus PRO 10 Sport 2021 – opony bezdętkowe tubeless, rozmiary, montaż, kompatybilność