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ę :)
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.
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...
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)...
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...
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.
mirekk36 - czy ten bajt to OSCCAL ? :) Oscillator Calibration Register – OSCCAL tak to dokładnie ten bajt. A jak pisałem mi także większość procków działa sprawwnie nawet bez kalibracji - jednak ponieważ już troszkę "ich przewachlowałem do różnych układów" to dlatego mówię, że zdarzają się takie w których właśnie jest sens używać tegoż bajtu...
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...
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.
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...
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....
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...
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ął...
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...
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:...
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...
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)
A ASM robi jak chcesz ale pod warunkiem że wiesz czego chcesz. I robi kod okropnie długi. ASM robi kod okropnie długi? Chyba coś Ci się pomieszało. Może Ci chodzi że trzeba dużo pisać aby uzyskać to samo co w Bascomie, ale wpisanie LCD"jakis tekst" zajmuje kilkaset bajtów co w ASM zajmuje trochę mniej - już nie tak dużo. Innym rażącym przykładem...
"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ą?...
(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...
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:
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...
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...
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...
W bascomie to leci mniej wiecej tak : If Bd(9) = Crc8(bd(1) , 8) Then ' jezeli 9 bajt odczytany z ds-a (czyli suma kontrolan wysyłana z ds-a) jest równa sumie kontrolnej obliczonej z 8 bajtoów to transmisja ok i wyslij dane dalej do obliczenia ' przykład ;) else pomin odczyt lub inne co komu sie podoba lub pasuje w zaistniałej sytuacji ;) a dokładnie...
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.
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...
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);...
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)...
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...
Z tego co wyliczyłem ostatnia zadeklarowana zmienna wchodzi na obszar zarezerwowany dla stosu i właśnie dlatego wyskakuje błąd braku pamięci. Zmniejsz rozmiar stosu a zobaczysz, że uda się skompilować bez błędów. Tak samo jak zwiększysz stos to jeszcze mniej zmiennych zadeklarujesz. Bardzo dużo projektów na Bascomie zrobiłem, w większości używałem EEPROMu...
Do 30 Hz po zmianie. Filtr fc=35Hz. Obecne próbkowanie: f= 125Hz (więcej nie dam, bo wtedy dokładność W takim razie musisz się liczyć z przekłamaniem sygnału na granicach pasma. Możesz to próbować kompensować w sofcie mnożąc otrzymane fft przez funkcję odwrotną do ch-ki amplitudowej filtru (kolejne mnożenia), ale weź pod uwagę, że z racji rozrzutów...
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...
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...
Wszystko zależy z czym się zetknąłeś. Jeśli kiedyś pisałeś na ZX Spectrum lub podobnym i tak zakończyłeś, to najszybciej będzie w Bascomie. Jak liznąłeś C to w C. Jak nic nie robiłeś to: Bascom w 3 tygodnie C w 3 miesiące Asm w 3 lata (lub 33 lata dla opornych :D ) Ja, mając pojęcie o Basicu na Atari (z przed kilkudziesięciu lat), łyknąłem Bascoma w...
'***************************************... '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...
Wiecie może jak w bascomie poradzić sobie z wysłaniem zmiennej 10 bitowej po spi jeżeli ma ona być poprzedzona 4 bitami ustawiającymi. Wygląda to mniej więcej tak, że w pierwszym bajcie mają sie znaleść 4 bity ustawiające i 4 starsze bity zmiennej 10 bitowej. Następny bajt to 6 mniej znaczących bitów zmiennej 10 bitowej oraz 2 nieistotne. P.S liczba...
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ę...
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ć....
Nikt nie zabrania, tylko że ekspandery są znacznie mniej popularne i trudniejsze do dostania niż np. drivery do RS485, które można kupić za 2 zł a nawet taniej. Expandery Microchipa są typowo w większych obudowach, drivery RS485 typowo w SOIC-8. Przecież ja nie każę stosować do tego ekspanderów! Tylko wysłać dodatkowy bajt z adresem, ekspander był...
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......
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...
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ąć...
Może być problem bo nie wiadomo ile z tego jeszcze zżera obsługa plików. Może BASCOM przy odczycie nawet jednego bajtu odpala no nowo całe obliczanie adresu sektora. Zapomniałem wspomnieć że ja nie stosowałem systemu plików i wtedy miałem tak ogromny transfer jak wspomniałem. Ale o zapisywaniu danych z poziomu kompa można (mniej więcej) zapomnieć. Jest...
Moje trzy grosze - może komuś się przyda. Jeśli tylko masz w zapasie kilka bajtów SRAM to wybieraj BYTE na flagi a nie BIT Jeśli wybierasz BIT w celu pozornej oszczędności to kompilator wszystkie flagi bitowe wsadzi do jednego Bajtu. Kiedy potem piszesz Set Flaga_1 to mikrokontroler musi wczytać cały bajt i wykonać na nim operacje tak by ustawić ten...
Cześć. Nie miałem czasu wcześniej tego zamieścić. Nawet teraz go nie mam Zerknij. W tych trzech przykładach pokazuję jak można ustawiać zmienną która ma cztery bajty. W Bascom bez problemu możesz nadać Aliasy każdemu bitowi. Wprawdzie zmienna ma cztery bajty, ale to chyba nie problem. Poprzez Shiftout możesz wysunąć tylko 24bity, albo wszystkie, zależy...
Do tego lepiej wykorzystać dodatkową zmienną, bo niestety pierwsze rozwiązanie jakie podał kolega piotrva w Bascom nie zadziała... [syntax=basic4gl]zmienna = PINB And &H0F If zmienna = 0 Then Set PORTD.6 else reset PORTD.6 End If[/syntax] ...i to powyższe jest o wiele praktyczniejsze niż seria IF-AND-AND... z tego względu, że AND w połączeniu z IF zajmuje...
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....
LOOKUP nie wie jakiego typu są dane, które ma przeglądać. Równie dobrze możesz mieć tablicę słów (Word) a odczytywać ją bajt po bajcie przez LOOKUP, gdzie zmienną do której zwraca ona wartość będzie Byte. To otwiera pewne możliwości: 1. Normalnie dane są jednobajtowe. Dane dwubajtowe, są w stałych i określonych miejscach oraz jest ich bardzo mało. Zatem...
czyli da się zapisywać i odczytywać tylko jeden bajt _a1 i trzeba sobie radzić tworząc własną procedurę zapisu i odczytu wielu danych? a jeśli chodzi o sprzętowy TWI, to czy on może pracować jako slave, czy tylko master? programowo obsługuje się go zdajsie tak samo jak wersje bez TWI, tylko zajmuje to mniej miejsca w pamięci? biblioteka jest gdzieś...
Po prostu dlatego ze tworca BASCOMa nie zrobil takiej mozliwosci. Inaczej mozna to zrobic bardzo prosto: wpisujac nowa wartosc do rejestrow UBRRH I UBRRL (kolejnosc wpisywania jest wazna). Oczywiscie wpisywana wartosc trzeba wczesniej obliczyc bo w takim wypadku BASCOM juz jej sam nie obliczy. Rozumiem , Dzięki , poczytałem o dyrektywach i ich podziale...
Trochę sobie komplikujesz życie, można to robić na piechotę, ale w BASCOM są do tego specjalne instrukcje jak MAKEBCD, która zamienia liczbę zapisaną w postaci binarnej na jej odpowiednik w BCD. Potem wystarczy już tylko prosta operacja wyłuskania pół bajtu. i na jej podstawie trzeba wygenerować odpowiedni znak. http://obrazki.elektroda.net/21_12491494...
Witam. Do prawidłowej pracy przetwornik potrzebuje sygnału taktującego o częstotliwości z przedziału od 50kHz do 200kHz. Sygnał ten jest generowany z sygnału zegarowego procesora. Aby uzyskać właściwą częstotliwość należy skorzystać z wbudowanego preskalera. Stopień podziału ustala się ustawiając trzy bity ADPS0, ADPS1 i ADPS2 w rejestrze ADCSR. (...)...
Wszystko kwestia kompilacji, podejżewam że cvavr konfiguruje jeszcze inne stałe w procku, dlatego zajmuje to więcej, odpal AVRStudio jako debugger i zobaczysz kod w asemblerze, wtedy ocenisz kóry kompilator daje "lepszy" kod, a skoro tak przeszkadza ci ilość skompilowanych bajtów, to napisz własny programik w asmie, wtedy podejżewam że będzie zajmował...
podlaczylem do ATEMGI16 ten nieszczesny przetwornik na I2C i zaprogramowalem Atmege w Bascomie przetwornik przesyla dwa bajty z opdpowiedzia - najpierw bardziej znaczacy a potem mniej znaczacy problem w tym ze ten mniej znaczacy plywa -wartosci wygladaja jakby byly losowe nie ma reguly co do monotonicznosci wartosci pokazywanej ma moze ktos jakis pomysl...
Witam Kolegów! Projektuję urządzenie, które z 4-kanałów 10-cio bitowego przetwornika A/D ma zapisywać wyniki co kilkanaście minut i przechowywać je w pamięci EEPROM. Napisałem program w Bascomie AVR na procek ATMEGA8, ale mam jeden problem. Odczytując wyniki z 24C16A pojawiają się na aktualnej pozycji cztery wyniki prawidłowe, ale dodatkowo dopisywana...
komentarze ;) .EQU DATA = 5 ; zdefiniowanie pinu w uC na którym będzie sygnał DATA .EQU CLOCK = 6 ; -------------- || ---------------------------------- CLOCK .EQU CHIP_ENABLE = 7 ; ------------------|| ------------ CHIP_ENABLE ;parametry wejściowe ; ; 3 bajty danych do wysłania umieszczone w SRAM ; pod adresem dane: send: ldi XL, Low(dane) ; ładujemy...
Będzie w stanie zastąpić. Jednego nie rozumiem - przecież litery to też liczby...Cieżko po prostu wysyłać ascii? Jest lepiej - zauważ, że w rc5 masz bit, ktory xoruje się dla każdej "nowej" ramki, a nie xoruje sie dla ramek powtórzonych. Dzięki temu możesz odbiornikowi jasno wskazać kiedy transmisja się zaczyna. Oczywiście musisz opracować protokół,...
Witam Przymierzam się do pisania aplikacji serwera http w bascomie Mam jednak problem - moja mega168 jest strasznie zapchana i kody html chciałbym umieszczać w pamięci zew. np I2C lub DataFlash Dodam iż zmiana procka narazie nie wchodzi w grę bo hardware mi na to nie pozwala. I tu pytanie: jak zmusić bascoma, aby wiedział że wszystko po komendzie data...
Poprawiłem nieco kod i wygląda tak :[syntax=vbnet] $regfile = "m16adef.dat" $crystal = 80000000 $hwstack = 40 $swstack = 16 $framesize = 32 Config Porta = Input 'port A jako wejścia Config Portb = Output 'port B jako wyjścia ' Config Portd = Input 'Port D Jako Wejścia Config Portc = Output 'port C jako wejścia Config Sda = Portc.1 'konfiguracja pinu...
Ponieważ pusty znak (zero) oznacza koniec łańcucha No tak, to już zauważyłem i mnie to wnerwia! Nie po to definiuję taką długość zmiennej żeby mi sie sama skracała, a jak bym chciał wysłać mniej to bym to określił przy wysyłaniu... A próbowałeś w taki sposób wykorzystać Printbin ?: Tak, myślę że wszystko co możliwe z helpa już przerabiałem, teoretycznie...
Błąd "The contents of the HEX file does not fit in the selected device" znaczy, że hex nie mieści się w pamięci wybranego układu, a nie, że hex nie jest odpowiedni do wybranego procka. Tak jak pisałem w pierwszym poście przekroczyłeś ilość dostępnej pamięci. Jak też już ci pisałem, proste polecenie avr-size na twoim pliku daje wielkość segmentu text...
Witam! Usilnie próbuje opracowąć protokół komunikacji miedzy wieloma węzłami w sieci RS485 multimaster. Węzły zbudowane są za pomocą AtMega8. Ramka wyglada tak: 1 bajt - długosć ramki 2 bajty - adres odbiorcy (word) 2 bajty - adres nadawcy (word) x bajtów - dane właściwie 1 bajt suma kontrolna z wszystkich poprzednich Transmisja odbywa się na prędkosci...
Trzeba zacząć od tego że ustawione przez Ciebie przerwanie co 16ms jest niepraktyczne. Wygodniej liczyłoby się 5ms i przydałby sie do enkodera, albo nawet 10ms w ostateczności do przycisków. Przypuśćmy, że ustawiasz przerwanie na 5ms. W nim ustawiasz tylko flagę i wracasz. W pętli głównej widząc ustawioną flage możesz sobie spokojnie dodawać po 5ms...
Przede wszystkim gratuacje za wielkość :) - wielkości wyświetlacza czyli całość zajmuje "nic". A teraz uwagi/czepianie się. Tiny13 uzasadnione jest tylko rozmiarem (i to rozumiem akurat, ale znowu nie aż tak), ja w projekcie z lcd nie schodzę poniżej Mega8 (a i to niechętnie, wolę 88 :P) - kosztuje maks 4zł więc nie zawyża budżetu znacząco (chyba że...
Witam Mam dwa programatory stk200, nie moge powiedziec co maja w srodku, bo kupilem gotowe i sa zalane zywica. Dzialaja oba dobrze, kiedy sa podlaczone do starawego laptopa. Problem sie zaczyna, gdy chce je podlaczyc do stacjonarnego kompa. W Atmel AVR ISP dziala odczyt i Erase, ale przy programowaniu wyskakuja rozsiane błędy (mniej wiecej 1 bajt na...
https://obrazki.elektroda.pl/3956937900_... Przedstawiam mój kolejny metronom ze "stukaniowym" nabijaniem tempa. Dawno temu opisywałem na elektrodzie pierwszą wersję z programem pisanym jeszcze w Bascomie. Różnica jest taka, że ten jest dużo mniejszy i poręczniejszy (waży 28g), ale z kolei nie wydaje żadnego dźwięku. https://obrazki.elektroda.pl/9785729100_...
Obawiam się, że AT90S2313 nie jest tak ambitny jak Ty. Aby wyświetlić temperaturę z dokładnością do 0,1'C z DS 1820 trzeba przeprowadzić kilka obliczeń na odczytanych z czujnika bajtach 7 i 8 (a nie tylko na 1 i 2). Wymaga to operacji na liczbach zmiennoprzecinkowych (chyba, że ktoś się zaweźmie i spróbuje zrobić to na typie Integer). Takie kombinacje...
1. inicjalizacja zmiennej polega na nadaniu jej konkretnej wartości. np I=1 to jest inicjalizacja ponieważ wiesz, że po tym napewno w I będzie liczba 1, jeśli w pętli stosujesz zmienną I do odliczania to samo zdefiniowanie pętli jest inicjalizacją gdyż nadaje jej pierwszą wartść oraz kolejne według pewnej reguły. 2. poto podaje sie adres komórki żeby...
OMG... odpadlem [; czlowieku! liczba twoja zajmuje dwa bajty. wiec najpierw zapisz ... pierwszy, a potem... drugi. po co te kombinacje? moze zapisuj to jako ilosc wielokrotnosci jakiejs fajnej liczby pierwszej (np 23) oraz reszta - bedzie jeszcze bardziej bezsensownie. mozesz zapisywac w eepromie 16bitowo? no to w ogole po co te kombinacje? moze pokombinuj...
A dlaczego nie w Bascomi'e ? Tylko bez ideologi. Jeśli coś działa, tak jak miało działać, to co za różnica jak to jest to jest zrobione. Bez żadnej ideologii. Basic jaki jest każdy widzi. 32 KB RAMu to nie jest jakieś szaleństwo a kompilatory basica nie są najszczęśliwsze ze względu na specyfikę języka. Musiałem tam zmieścić pełną implementację MS/TP,...
Tak na szybko: Masz zmienną : Byte (1 bajt, 8 bitów) Word = 2x Byte (2 bajty, 16 bitów) Long = 2x Word (4 bajty, 32 bity) Nie ma zmiennej składającej się z 3 bajtów, dlatego jeśli chcesz rozszerzyć tą idee na 3 porty musisz użyć zmiennej Long, następnie rozbić ją na 2 zmienne WORD a potem WORD rozbić na 2 zmienne Byte ( i je przydzielić do portów) Wizualnie...
Przerwań nie mogę wyłączyć, flaga jest bajtowa, albowiem inkrementując ją, aktywuję inne warunki w programie. Może coś takiego ze sprawdzaniem crc? Wtedy po prostu nie wyświetli wyniku, jak nie będzie prawidłowe... Tylko niestety nie może zdarzać się to za często. Przerwania zaś są obecnie tylko od. 1 timera... [0]. Czy ten odczyt 9 bajtów będzie trwał...
Nie wiem czy sie przyda ale mam opis bootloadera ale na ATmega8 oto on napisany w bascomie: 'Program Bootloadera (monitora) dla ATmega8 umożliwiający ładowanie 'programu do pamięci Flash przez interfejs RS232 z prędkością 19200 'bodów 'Bity fuse należy ustawić, by na Bootloader było przeznaczonych 128 'bajtów 'Początek adresu programu Bootloadera:...
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
Po wielu spędzonych godzinach...doszedłem do prostego rozwiązania.... Ramkę złożoną z 32 bajtów odbieram w poniższy sposób: If Ischarwaiting() = 1 Then Inputbin Mess_1 , Mess_2 , Mess_3 , Mess_4 , M0_1 , M0_2 , M0_3 , M0_4 , M1_1 , M1_2 , M1_3 , M1_4 , M2_1 , M2_2 , M2_3 , M2_4 , M3_1 , M3_2 , M3_3 , M3_4 , M4_1 , M4_2 , M4_3 , M4_4 , Chk_1...
A ja dla odmiany zawsze zaczynam pisać probramik w BASCOM. Pisze sobie szybciutko najważniejsze procedurki, pentelki, obliczenia, komunikacje i inne. Jak już wiem że to co chce zrobić działa zaczynam to upiększać. Dodaje interfejsy, odsługę klawiatury np. i najczęściej wtedy zaczyna mi brakować miejsca... I w tedy zaczynam przeglądać wyrywkowo program...
Generalnie chodzi mi tylko o protokół. Potem metoda prób i błędów. Będę wysyłał losowe wartości i sprawdzał czy zareaguje :D Z tym szukaniem noty układu w googlach to chyba zły pomysł... na układzie jest tylko S063169 D3F0A - google milczy :| EDIT: To chyba rozwiązanie mojego problemu: http://www.foxharp.boston.ma.us/avrlirc/... Wielkie dzięki wszystkim!...
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...
Ho ho ho :) ale narozrabiałeś :wink: Dim Timer0_200ms As Word , B_200ms As Bit ' dot. uaktualniania co 200ms Const Timer0_200ms_max = 400 REM to dodaj $asm inc {Timer0_200ms_max+1} $end Asm Dim Timer0_1s As Word , B_1s As Bit ' dot. uaktualniania co 1s Const Timer0_1s_max = 5 Dim Licznik As Word 'pomocniczy licznik do zminy stanu lini w glownej petli...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
Pogram zatrzymuje sie, bo wykonujesz dwie pętle jedna w drugiej i nie ma mozliwości wyskoczenia z nich. W programie głównym nie ma wywołania podprogramu który napisałeś. Co do sposobu zapisu- straaasznie to długie. Ten kawałem który ma zaświecać LED-y w kółko proponuję zapisać tak: Portb = &B11111111 Portd = &B1111111 For k=0 to 7 Reset Portb.k Waitms...
Jak czas transmisji danych? Wysyłasz do wszystkich DS polecenie zmierzenia temperatury (kilka/kilkanaście ms albo mniej), czekasz 750 ms i odbierasz dane ze wszystkich (kilka/kilkanaście ms albo mniej). Dokładne czasy możesz wyliczyć na podstawie szybkości transmisji i ilości przesyłanych danych. No i właśnie o wyliczenie tych dokładnych czasów tutaj...
Niestety zapis: zmienna=2bajty_mlodsze+2bajty_starsze*65... przy kompilacji wywietla error 177 : Illegal operation a jak zapisze to w taki sposób: zmienna=2bajty_starsze * 65535 zmienna=zmienna+2bajty_młodsze to gubi jeden bajt i tak zamiast podać liczbe 89431 która była zapiasna wcześniej do eeproma to podaje 89430. Można by za każdym razem dodawać...
Jak dla mnie to powinno być tak. Nie mam kompilatora pod rękom nie jestem pewien czy jest dobrze ale to mniej więcej to. Kod: $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input ' ustawiam we/wy Dim A As byte 'po co marnować pamięć A = 0 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Enable Interrupts Do If Pind.4 =...
witam!! ja też używałem tego pilota i sam pisałem procedurki do niego, a standard nadawania jest bardzo prosty!! a do odbioru używałem tych fajnych scalonych "oczek podczerwieni" tu nasz symbole: TKP 69 127 TSOP 1738, wymiary okolo:[wys,szer,gł]15mm/10mm/3mm do kupienia w większości sklepow z elektronika (podalem wymiary ponieważ sa jeszcze oczka mniejsze(nie...
Witam :cry: Po tygodniu walki z tym problemem postanowiłem poradzić się fachowców, więc piszę. Problem polega na tym, ze po wysłaniu całej zawartości AT24C64A dostaję kilka danych mniej. (Zamiast upragnionych 8192 dostaję np: 8190 , 8180 , 8080! ostatni pomiar) kilka razy dostałem całą paczę ale to musi być pewne i nie zawodne. Pracuję na oscylatorze...
Bawiłem sie w bascomie ładne pare miesiecy, od bascoma zacząłem swoją (trwającą już od zimowych ferii 2004) przygodę z uC, no na początku oczywiście było świetnie, byłem zdziwiony jakie to proste i nie przejmowalem sie tym że proste programy zajmują ponad 1k w pamieci programu. Pierwsze programiki to było coś wspaniałego, programowałem na początku tylko...
http://obrazki.elektroda.pl/9418966600_1... Witam wszystkich na forum. Jest to moje pierwsze publikowane DIY. Słowo wstępu… Projekt powstał z jednego, bardzo ważnego powodu: bo bardzo chciałem coś takiego mieć! Jest to układ odczytujący kod karty poprzez interface EM4095 z anteną, dekoduje, sprawdza i wysyła poprzez port szeregowy....
Co myślisz o tym żeby użyć tylko jeden Timer? [youtube]https://www.youtube.com/watch?v... [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a :...
AVR-y tak juz mają , że jeśli w "Z" jest adres parzysty to czytają daną z adresu "Z+1" , gdy "Z" jest nieparzyste , to czytają z adresu "Z-1". Moim skromnym i omylnym czasem zdaniem ;) śmiem się nie zgodzić. Dlaczego ? Kompilowałem cosik na Atmegę8 w AVRStudio : .equ TxtEndChar = 0x80 (...) .macro ProgAddr2Z ldi ZL, low(2*(at)0) ; Load...
nie mam problemu ze sprzetem... a z programem jest to klawiatora 4x4 matrycowa nie jest itsonte jak sa poukladane tak wyglda mniejwiecej kod: Sub Getkbd 'skanowanie matrycy Set P3.4 : Set P3.5 : Set P3.6 : Set P3.7 Reset P3.4 Waitms 20 Debounce P3.0 , 0 , Kew1 '1 Debounce P3.1 , 0 , Kew2 '4 Debounce P3.2 , 0 , Kew3 '7 Debounce P3.3 , 0 ,...
Kompilatory są po prostu udoskonalane/poprawiane i może ktoś kto lata temu miał z nimi styczność i widział ich niedoskonałości niestety się zatrzymał, a kompilatory na szczęście nie :D Warto sobie życie ułatwiać jeśli są takie możliwości. Mimo iż większość ma mnie jedynie za bascomowca to nie mam klapek na oczach jak konie na wyścigach i używam prawie...
Nie wiem w czym widzisz problem. Sterowanie fazowe to też włączanie i wyłączanie danego kanału. Jedyna różnica polgega na zsynchronizowaniu całości z częstotliwością sieci. Program nie wykonuje żadnych skomplikowanych operacji matematycznych, tylko odczytuje zawartość pamięci i wysyła ją na wyjścia. Sieć pracuje z częstotliwośćią 50 Hz, procesor z...
Embedded zazwyczaj jest chaosem i bajzlem ale wcale tak nie musi być. Wydaje mi się, że wynika to z tego, że większość ludzi (łącznie ze mną) zajmują się tym jako kolejny etap ewolucji elektroniki. Hobbyści tak, ale od lat programowanie systemów embedded jest częścią studiów kierunkowych związanych z elektroniką. Na początku bardzo popularne były zestawy...
... Zumek podpowiedz mniej doświadczonym jak powinno być i w czym jest problem . Przytoczony przez Ciebie(i mnie) fragment programu, jest jak najbardziej prawidłowy - z punktu widzenia kompilatora - i będzie działał jak trzeba :D Jest tylko jedno "ale".Niepotrzebnie zużyjemy klawiaturę :wink: i - co w tym przypadku jest jeszcze straszniejsze - pamięc...
Jak widzisz, w kodzie który przedstawiłeś, brak czujnika lub błąd lub nienaturalna temperatura (ujemna w tym przypadku) skutkują wynikiem "99". A ja jednak podtrzymuje stwierdzenie, że umiejętne zwarcie linii sygnałowej do masy w Twoim kodzie będzie skutkowało wesołym odczytem 0 stopni celsjusza. Zero nie jest ujemne i nie wyłapiesz tego warunkami...
FFT potrzebuje więcej pamięci niż DFT Są dwa rodzaje implementacji FFT - in-place i jakaś tam inna :D (według tego kryterium, bo samych rodzajów jest całą kupa :D ) in-place potrzebuje mniej pamięci, niż DFT, bo wszystkie operacje wykonywane są na buforze danych wejściowych, a po transformacie dane wyjściowe mamy tam, gdzie wcześniej były wejściowe...
bascom input bajty pcf8583 bajty bajty polskie
prąd ładowania astra domofonu kolory kabli bosch zabezpieczenie
instrukcje montazu instrukcje montazu
Kod błędu P0638 w Renault Modus - sterowanie przepustnicą Kolory przewodów do lampy przedniej w Seat Ibiza 2003