a tak z ciekawości zapytam - po co ci czyszczenie buforów
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ą.
Witam. Włącz przerwania, inaczej dane nie wpadną do bufora.
Witam, jak wiadomo (przynajmniej mi narazie) z helpa Bascoma - zwykłe polecenie PRINT generuje na końcu dwa dodatkowe znaki CR i LF Niekoniecznie :D Za pomocą polecenia PRINT , można wysłać stringa zakończonego ... praktycznie dowolnym znakiem - również sterującym. Print "Zmienna" ; Chr(13) ; ' średnik zakazuje wysyłania znaków sterujących. ... druga...
Czy jest funkcja szukania samych cyfr z buforu rs232? To są odpowiedzi z modułu SIM800. Bazuję na czymś takim: If Pinc.3 = 0 Then Waitms 750 Print "AT+CCLK?" ; Chr(13) ; 'zapytanie o datę i czas Waitms 50 Date_str = Mid(odb_txt , 20 , 8) Time_str = Mid(odb_txt , 29 , 8) End If Ale coś się dzieje i nawet wyświetla litery z odpowiedzi modułu. Da się jakoś...
Działa elegancko. Żeby było wiarygodnie to nawet wygrzebałem Ardu Leonardo z m32u4 na pokładzie. Na jedną rzecz bym jeszcze uważał. Twój kod nie jest w żaden sposób synchronizowany. Może się kiedyś zdarzyć, że jedna z wiadomości nie dojdzie. Z nie będzie miało wartości 3 i przy nastepnej wiadomości procesor zacznie przypisywać wartości innych zmiennych...
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.
Oczywiście miałem na myśli 7,8us. Jeszcze jedno pytanie. Czy dobrze rozumiem, że w przykładowym kodzie wydanie rozkazu C001 informuje moduł, że ma wysłać to co jest w buforze a następnie pójść "spać"? Ile danych maksymalnie mieści bufor?
P.S. Oczywiście, że przerwania lepsiejsze:) Zwłaszcza z buforem :)
Jeśli był timeout to w buforze odbioru nie powinno nic być.
Rzuciłem okiem w HELPa i funkcja "inputbin" czeka na znak, program dalej się nie wykonuje. Może lepiej użyć przerwań wykonujących się, gdy w buforze UART jest znak ?
Miże to pomoże: Config Serialin = Buffered , Size = 200 Size ustala wielkość bufora.
mirekk36 podoba mi się to Twoje rozwiązanie. Właśnie o to mi chodziło kiedy z Tobą rozmawiałem w moim temacie. Pytanie tylko co się dzieje ze znakiem <LF> nadawamym po <CR> ?. Trzeba go pewnie odfiltrować lub oczyścić bufor ?
Digitrace używa tylko wejść portu. Bascom potrzebuje wyjść i wejść. Jeżeli programator to tylko kupa drutów, bez bufora, spróbuj podciągnąć wszystkie linie wejściowe i wyjściowe opornikami ok. 10kOhm do +5V. Jeżeli z buforem to zasil bufor z układu, podciągnij również wszystkie użyte wyprowadzenia portu LPT takim samym opornikiem do zasilania bufora.
W taki sposób, że zaraz po zakończeniu nadawania właściwej zmiennej, z powrotem startuje nadawanie znaków NULL. Tak więc moje rozwiązanie "wyłuskuje" wszystko z pomiędzy tych pustych znaków ;) [EDIT] A jednak mój sposób zawiódł. Nie tyle że nie działa, co po prostu przerwania od bufora są zbyt częste i mam problemy z napisaniem dalszej części programu...
Problem w tym, ze musze napisac ten kod w basicu. W zasadzie mam ten kod napisany, ale chyba nie dziala jak powinien. Nie wiem czy to nie ma zwiazku z ustawieniami fusebitow, bo sekunda trwa ekstremalnie dlugo. Czy ktos wie jak zapisac cos do buforu odczytac lub sprawdzic czy jest cos w buforze? (bascom i attiny2313)
Co będzie jak jednym z kodów przesłanych do mikrokontrolera będzie znak o kodzie 0? Odp: Nie zostanie zauważony. Dlatego INKEY() powinno się poprzedzać operacją sprawdzenia zajętości bufora UDR.
Konwersje byte->string otrzymuje się przy użyciu funkcji Str. W drugą stronę działa funkcja Val.
Tutaj: If Licz_znaki = Max_znakow Then Licz_znaki = 0 End If brakuje ci czyszczenia bufora. Z doświadczenia doradzę ci abyś wykonywał czyszczenie bufora co jakiś czas. Do tego celu możesz uruchomić timer który będzie generował przerwanie w którym będziesz czyścił bufor.
Ponieważ to jest Bascom to chyba szybciej będzie wstawić na linii E np w szeregu 6 jakiśch bramek, np inwerterów lub zwykłych buforów.
Napotkanie Inkey() powoduje zatrzymanie pracy programu aż do odczytu znaku z bufora UART.
Oczywiście próbowałem ale bez efektu, sprawdzę jeszcze na tych tranzystorach. Jak nie zatrybi to zostanie mi chyba tylko dobudować bufor.
Ja bym nie ufał i dopisał przed skopiowaniem bufora [syntax=vbnet] If Flaga Then Return[/syntax] a [syntax=vbnet] In_pos = 1 'Zmniejszamy wskaźnik bufora do 0 (usuwamy ramkę)[/syntax] przeniósł przed ten warunek.
Gdzies juz chyba widziałem, jak napisałeś coś w stylu, że "ogólnie wiadomym jest, że bascomowe SPISLAVE nie konfiguruje tak jak potrzeba" . Ja o tym czytałem pierwszy raz... Mogę wiedzieć której wersji Bascom używasz jeśli nie najnowszej 2085? W SPI najważniejsze jest to, że to master taktuje slave`a. Dlatego nie bez powodu w komendzie konfiguracyjnej...
Masz bufor softwareowy w Bascomie, instrukcjami które kolega podał możesz się do niego "dobrać", z drugiej strony masz instrukcję input która stoi w miejscu póki w UDRze nie znajdzie CR.
Nie, jeszcze nie testowałem bo zwinąłem na dzisiaj "warsztat". Czy Twój sposób wymaga jakiejś wcześniejszej konfiguracji bufora UART'a?
Może się pomyliłem, ale chyba przerywasz sobie odbiór co 2ms. Dlaczego nie użyjesz wyższego preskalera? Np. 1024? Możesz nawet po ustawieniu Flagi wyłączyc Timer i po odbiorze włączyć ;) Timery można dowolnie konfigurować podczas pracy programu. Druga sprawa ustaw sobie odbiór do bufora w tle (Config Serialin = Buffered, Size..)
przerwanie od portu szeregowego obsługujesz w ten sam sposób jaki i każde inne przerwanie. Ale to nie wszystko ;) Jeśli skonfigurujesz seriala do pracy z buforem , to Bascom sam "podłoży" przerwanie i będzie za Ciebie odbierał znaki z uarta i zapisywał do bufora kołowego.Instrukcję obsługi Bascoma trzeba czytać , czytać , czytać... , a nie tylko pytać...
Skoro z kompa umiesz to powinienes tez umiec z atmegi... z tego co wiem, bascom ( :/ ) zwraca czas w BCD. Ale mniejsza o to... Musisz zrobic tak: 1) Zdefiniuj wlasnego fonta (cyfry 0..9) 2) Zrób sobie bufor ramki, najlepiej JEDNOwymiarowy 3) Napisz parę funkcji które wyrenderują cyfry do bufora ramki 4) No a jak przeslac taki bufor na matryce to juz...
jak zadeklarować te zmienne? A np. tak dim Bufor as string * 16 ' 16 - maksymalna długość odebranych danych dim Bufor_znak as byte dim Bufor_flaga as byte
jeżeli użyłeś config serialin=buffered, size=10 to musisz podawać dane powoli bo jak ci się przepełni bufor uarta to kich. rozwiązanie: albo zwiększysz wielkość bufora uart albo będziesz przesyłał bez bufora. przy tylu danych proponuje zrezygnować z bufora.
No coś w ten deseń :P Ten reaguje kiedy na końcu pojawi się znak 13 [syntax=vbnet]$regfile = "m644pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack = 100 $framesize = 200 $baud = 38400 $baud1 = 38400 Config Submode = New Open "COM1:" For Binary As #1 Open "COM2:" For Binary As #2 Config Serialin0 = Buffered , Size = 100 , Bytematch = 13 ' from ESP8266...
Witam, Proponuję resetować diody poprzez wysyłanie zer, czyli ustawić wszystkie bajty w buforze na "0" i wysłać je. Ja tak robię w swoich projektach. Też działam w Bascom-ie. Zawsze wykorzystuję wewnętrzny oscylator RC 8MHz, prędkość transmisji do diod WS to 800kHz. Poniżej kilka moich projektów. [youtube]https://www.youtube.com/watch?v...
Ja bym jednak polecał programatory z buforem (np. 74hct244) zabezpieczają port LPT przed uszkodzeniem, a to naprawde nie jest trudne ;)
Dzięki Koledzy...problem rozkminiony. Napisanie nowej procedurki z trzema inkeyami podstawiającymi pod kolejne zmienne poszczególne znaki z bufora rozwiązało problem.
Cześć Po pierwsze wgraj sobie programator Dybkowskiego, tam masz pełną jasność co do końcówek, możesz ustawić z której końcówki LPT wystawiasz poszczególne linie programatora. Jak nie pomoże to spróbuj na starym komputerze, mnie po wymianie płyty głównej przestał działać taki programator jak Twój, dopiero programator z buforem na scalaku zastartował,...
Nie znam Bascoma, nie używam go i nie planuję. Ja bym użył wskaźnika na początek pliku i zapisał dane z offsetem po zakończeniu akwizycji. Tworzyłbym też plik samodzielnie zamiast kombinacji z pustym plikiem na PC. Proponuję szukać w helpie do Bascoma jak zdefiniować wskaźnik na początek pliku albo bufor dla danych z pliku i jak je później nadpisać.
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
Witam ! Jeśli masz problem ze scalaczkiem do programatora t zrób inny programator bez buforu, jednak tu trzeba uważać aby nie uszkodzić portu LPT. Schemat zaczerpnąłem z pliku pomocy Bascom AVR, poniżej schemat. http://obrazki.elektroda.net/47_12361589... Pozdrawiam. Stefan ps. W Bascomie AVR w opcjach - programer ustaw Sample Electronics Programmer....
Ok, już sobie poradziłem z problemem tego krzaka :D Teraz mógł by mi ktoś powiedzieć, jak wyczyścić bufor uarta w bascomie??
Może gubisz przesyłane znaki bo gdzieś pętla jest za wolna. Jeśli taką komunikację wrzucisz do większego programu to problem się tylko pogłębi. Lepiej skonfiguruj bufor i Bascom będzie odbierał wszystkie znaki w przerwaniu. Nie przegapi żadnego znaku. ->Config Serialin0 Widać, że dodajesz Enter na końcu stringów. Możesz to monitorować i parsować dane...
Dobra mały błędzik jest tu: For I = 1 To 32 I2crbyte Bufor , Ack If I = 17 Then ' to zmień Lowerline End If Lcd Chr(bufor) Next I oj jakoś się motam ostatnio.
wyświetlacz na sterowniku ks0108 nie wysteruje bezpośrednio przez i2c, możesz podpowiedzieć jaki bufor dodatkowo musiałbym zastosować ?
Czy liczba jest zawsze siedmiocyfrowa? Nie mówie że to jedyny sposób ale podam jeden z możliwych. Deklarujesz zmienną tekstową siedmioznakową. Taka zmienna ma w rzeczywistości osiem bajtów. Nie chcesz wysyłać ósmego NULL. No i OK :D Na te zmienną nakładasz bufor siedmiu bajtów. Kiedy zmienna Dword każesz zamienić Bascomowi na string to on zapisze komórki...
witam pisze pewien programik pod bascomem i potrzebuje zaimplementować w asemblerze bufor FIFO dla przychodzących danych. Napisałem pewną procedurkę, lecz nie wiem czemu często coś się w nim zamiesza. sprawdzałem go troche w debugerze ale nic nie mogę wyczaić. Oto kod procedurki zapisującej i odczytującej z bufora: Save_to_fifo: 'Const Wielkosc_bufora...
Witam, mam następujący problem: na komputerze PC napisałem program wysyłający przypadkową liczbę co 500ms przez port com do mikrokontrolera. W uKonrolerze ATmega16 program wygląda następująco: $baud = 9600 $crystal = 11059200 Dim Danewej As String * 12 Cls Lcd "reset" Waitms 500 Do Input Danewej Cls Lcd Danewej Waitms 100 Loop Wszystko działa,...
Tak mógłbyś odbierać wszystkie znaki aż do wystąpienia CRLF Po wystapieniu znaku CR program skoczyłby do obsługi przerwania i poczekał na LF. Możesz sprawdzać z pętli głównej ilość znaków w buforze. Acha no chyba że w odbieranym ciągu przewidujesz nie zamierzone wystąpienie po sobie CRLF
witam chciałbym odebrać dane z odbiornika GPS i sytuacja wygląda tak : w pierwszej kolejności odbiera dane GPGGA następnie GPGSA, 3xGPGSV i na końcu GPRMC interesują mnie dane GPRMC i tu pojawia sie problem ponieważ pojemność bufora odbiorczego może mieć maksymalną wielkość 254 i przepełnia się zanim odbierze interesujące mnie dane. siedze nad tym już...
to co kolega zrobił, to jest bufor kołowy. Takie algorytmy średniej kroczącej robi się właśnie w ten sposób, więc pomysł kolega miał dobry. W buforach kołowych operuje się na wskaźnikach, tworząc tak na prawdę listę kierunkowa. Niech sobie kolega poczyta jak to się dokładnie koduje.
A jeśli chodzi o AVR to: ON źródło_przerwania nazwa_podprogramu [ NOSAVE ] gdzie: źródło_przerwania - symboliczna nazwa źródła przerwania, nazwa_podprogramu - etykieta określająca gdzie znajduje się podprogram obsługi przerwania. jako żródło przerwania można: URXCprzerwanie układu sprzętowego UART – odebranie znaku UTXCprzerwanie układu sprzętowego...
Witam kolegów. Pierwszy temat: potrzebuję odbierać poprzez UART ciągi znaków wysyłane z urządzenia. Urządzenie wysyła taki ciąg bajtów: GZ GZ A0 A1 Cm Sc -tu dane- EN gdzie: GZ GZ to jest stały początek zawsze taki sam, A0 A1 podaje kierunek transmisji, Cm Sc komendy według wzorca, -dane- może być od jednego do pięciu bajtów, EN koniec transmisji. Jak...
Poczytaj o instrukcji Config Serialin. To jest bufor wejściowy w USART w bascomie.
A po co to Enable/Disable w obsłudze ? no i druga sprawa - ideą przerwań jest, że nie mogą być w nich pętle, przemyśl konstrukcję obsługi tak, aby przy każdym czytaniu UDR dany znak był zapisywany pod kontrolą programu do bufora. To chyba się nie przyda : Config Serialin = Buffered , Size = 20
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...
Mnie zastanawia jedna rzecz, skoro korzystasz z przerwań to po jakiego grzyba tam input? Zobacz jak mozna to rozwiazac: Odebrano: Disable Urxc ' wylaczenie przerwania na czas trwania aktualnego 'Jesli licznik znakow jest mniejszy od maksymalnego rozmiaru bufora to... If Licz_znaki < Max_znakow Then '...zwieksz licznik znakow, do buforu transmisji...
Profesjonalnie to można programować w każdym języku, tylko trzeba go po prostu znać i umieć stosować w praktyce co najważniejsze. Dla takich początkujących jak ty Bascom powinien być jednym z lepszych języków tym bardziej, że nie rozumiesz jeszcze przerwań. Bascom daje ci gotowe rozwiązania w tym zakresie na maxa - popatrz sobie na Config Serialin ........
Zakup mikrokontroler, np ATTiny2313. Zbuduj programator, na kilka razy wystarczy funcard programmer, bez bufora. Ściągnij program Bascom AVR. Czujniki podłączasz tak jak tu : http://www.elektroda.pl/rtvforum/viewtop... Pozdrawiam
Nie wiem na czym polega problem kolegi. Poza tym o porcie RS232 mówimy tylko po stronie komputera, koledze chodzi jak mniemam o to, że z komputera są wysyłane dane do procesora i ten powinien je odbierać. Zatem jak kolega napisał po pierwsze należy użyć bufora (dostępny z poziomu BASCOM - poszukaj w helpie) a potem w danym miejscu programu sprawdzać...
Tablica Bufor() jest typu Byte więc to nie Stringi i konwersja Hexval do niczego się nie przyda. Bajty są zamieniane niejawnie we Frame tylko na potrzeby wyświetlania na LCD. Coś w ten deseń powinno działać. Ogólnie to można to mocno poskracać, ale nie chciałem zaciemniać. [syntax=vbnet]Dim Arr(4) As Byte Dim Test As Single At Arr(1) Overlay Dim Bufor(9)...
Może masz błąd w obsłudze bufora??
Nie, ponieważ odczytuję z maszyny, którą znam i wiem co tam jest, buforu nawet nie można edytować.
Właśnie w tym problem że nie mogę sprawdzić czy poprawnie odbiera dane ponieważ mam w tej chwili jedynie wyświetlacz led 3 cyfry i nawet nie mam jak wysłać danych na PC bo czekam na bufor (max232)
Nie ma znaczenia jaki tranzystor zastosuje i tak nie uniknie przedostawania się zakłóceń od kolektora na bramkę tranzystora przez jego pojemność, jeśli nie zastosuje "sztywnego" bufora problem nie zniknie.
No, coś mi się wydaje, że jednak może nie do końca rozumiesz właśnie to wszystko i stąd takie podajęcie. Co to w ogóle dla ciebie znaczy, że: Bo niby po czym innym program ma poznać czy odczytane dane pasują w tym określonym miejscu ? .... toż twoja próba obsługi tego przerwania - pokazuje, że w 1000% mógłbyś wykorzystać mechanizm z Bytematch Ustawiłbys...
Twoim podstawowym błędem jest to że ciągle czyścisz ekran. Ta operacja zajmuje prawie 2 ms Nie wiem po co to robisz ? Wystarczy zdefiniować bufor w który bedziesz wpisywać swoje wyniki i ten bufor cyklicznie wyświetlać ale tylko wtedy kiedy to będzie konieczne czyli w zależności od ustwienia ew. flag sygnalizujących np. zmianę czasu. Inna sprawa czy...
Ja używam innej konfiguracji portu bo też miałem problem i wszystko zadziałało Config Serialin = Buffered , Size = 100 , Bytematch = 10 ' bo telefon odpowiada 0D0A = 13 10 = ClLf Echo Off Config Input = Crlf , Echo = Crlf bytematch = 13 (0Dhex) nie jest dobrym pomysłem bo końcowy znak to 10 (0Ahex), spróbuj tak jak wyżej. Ważna jest też config input...
Tak jak to kolega Adam opisał cały nasz problem pojawia się przy funkcji get która nie wiedzieć czemu czyta całkiem inne dane. Prosty przykład Open "test.txt" For Binary As #4 Do Get #4 , bufor Print chr(bufor) Loop Until Eof(#4) <> 0 Daje nam całkiem inne znaki niż zawarte w pliku test.txt EDIT: problem rozwiązany, wszystko...
Możesz zdefiniować tablice 8-elementową ładować do niej dane i wysyłać poleceniem Printbin . [syntax=basic4gl]Dim Bufor(8) As Byte ' tablica 8 elemetowa .............. Printbin Bufor(1) , 8 ' wyślij 8 bajtów zaczynając od Bufor(1)[/syntax]
No na logikę tak ale nikt przecież nie bronił ATMELowi zrobić wszystkich rejestrów 16-to bitowych w taki sposób. Szczególnie że tak było by prościej bo wszystkie rejestry wtedy były by takiego samego typu. No ale może jest tak jak mówisz. Nie sądzę że ATMEL dawałby specjalnie dodatkowy "hardware" (czyt. kasa) skoro nie byłoby takiej potrzeby, wtedy...
No dobra. Wywal wszystko na linii Tx telefonu do Rx procesora. Ma być połączenie bezpośrednie. Na drugim kierunku zostaw tak jak masz. Poniżej kod do testów. Powinien działać. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Lcd = 16 * 2 Config Serialin = Buffered , Size = 100 Enable Interrupts 'Declare Sub Oproznij_bufor...
chcę nawiązać komunikację z urządzeniem które wysyła i odbiera dane na jednej linii protokół standardowy jak w rs232 użyłem poleceń SERIN i SEROUT w bascomie ale po wysłaniu ramki odbiera jakieś śmieci podkreślam że transmisja podsłuchiwana była w terminalu i urzadzenie odpowiada poprawnie , ale procesor odbiera śmieci .Czy trzeba stosować jakiś bufor...
Jak zaprogramować przerwanie od pojawienia się bajtu w buforze usart.
Do czyszczenia bufora można użyć: [syntax=basic4gl]CLEAR SERIALIN[/syntax]
pewnie piszesz w bascom ,wiec masz kod odbierania danych (całych stringów ) w przerwaniu :) : Config Serialin = Buffered , Size = 20 do If Ischarwaiting() = 1 Then '1 - odebrano znak,0 - pusty bufor Call Read_rs232 End If loop Sub Read_rs232 Dim Bufor As String * 24 Input Bufor Noecho end sub
Zrób to jako dwie pętle bo wielkość tabeli w bascomie to max 255 bajtów poza tym nie wiem czy bascom sprawdza zajętość bufora transmisji co za tym idzie może gubić bajty . Zatem w pętli dodaj opóźnienie potrzebne na czas wysłania informacji przez interfejs.
Dzięki za pomoc w tej kwestii z tym że wszystko super działa jeśli odnosi się to do jednego kanału pwm a ja chciałem wpisać dla każdej wartości z 3 oddzielnie i dlatego rozważam warunek tekstowy chyba ze jest jakiś lepszy sposób odniesienia do każdego z pwm P.S. Rozumiem że Bufor sam się czyści ??
Witam. Myślę, że w tym przypadku przed odczytem bufora RS sprawdź czy jest w pełni zapełniony, czyli czy cała wiadomość 7 znaków wpadło do bufora.
PWM możesz obniżyć spokojnie do 30Hz, pojawią się lekkie szarpnięcia, MOSFET to na prawdę dobre wyjście, a wysterujesz go już 6V/1mA (np.BUZ11). W takich warunkach pracuje bez radiatora. Najlepszy bufor między nóżkę uK a tranzystor to OP amp pracujący jako komparator. Nie zapomnij też o szybkiej diodzie tak jak to sugerowano, np 1N5822 i wydajnym układzie...
Najlepiej to dać znacznik początku ramki a na końcu jakieś CRC. Odbiornik powinien szukać znacznika początku i jak na niego trafi to zacząć odbierać pozostałe dane. Jak zbierze ich 513 to z 512-tu oblicza CRC i porównuje ze znakiem 513-tym. Jak dobre to zapisuje, jak złe to odrzuca. A sam odbiór to w przerwaniu, i zapis do bufora z jednoczesnym inkrementowaniem...
Witam Mam następujący problem po przekompilowaniu programu pojawia się kilka błędów Error 5 oraz Error 320. Błędy te wyświetlają się wyłącznie po zadeklarowaniu bufora Config Serialin=Buffered, Size=254 Config Serialout=Buffered, Size=254 W załączniku przesyłam zrzut ekranu. Proszę o pomoc pierwszy raz z czymś takim się spotkałem Pozdrawiam Michał [/img]
Witam! Gratuluję autorowi ciekawego sposobu komunikacji z WS2812B! Ja jeszcze bawię się AVR-ami, a nawet Bascomem ;) W układzie z filmiku [youtube]https://www.youtube.com/watch?v... wykorzystałem ATTiny85. Bufor danych do wysłania oczywiście w pamięci RAM. 3 bajty na diodę (RGB). Każdy bajt bezpośrednio określa jasność świecenia...
W zasadzie to trzeba wyłączyć bufor FIFO o odbiorniku (Output and FIFO mode Command --> "fe" na 0). Do tego trzeba rodzaj filtru ustawić na OOK (Data FIlter Command --> "s0" i "s1" na 0). W nadajniku trudno powiedzieć. Pisze coś o trybie bez sybchronizacji, ale tylko drogą dedukcji można dojść że to jest właśnie tryb z wyłączonym buforem FIFO (Low Battery...
E tam, Bascom jest niekoszerny :) Rozumiem, że jakąś automatykę domową chcesz zrobić? RFM22 ma moc 17dBm, w domu spokojnie pociągnie. W dodatku sprzętowo realizuje stosunkowo wysokopoziomowe funkcje (MAC, CRC, nadawanie ramek). Akurat zaczynam tworzyć driver do niego. No i tani. Jeszcze tańszy jest RFM12, ale mniej wygodny w sterowaniu i ma mały bufor...
Sproboj zrobic tak, żeby procesor po odebraniu danych czekał na określony znak (przyslany z komputera przez RS), po jego odebraniu niech natychmiast odsyla dane, w prog. na PC trzeba oczywiscie odbierać dane zaraz po wyslanie tego znaku inicjującego odbiór... Upewnij się też, czy nie masz zapełnonenego bufora nadawczego w uC.
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...
1$ - to juz lepiej dorwac specyfikacje techniczna i napisac swoje (przynaj- mniej bedziesz mial to co potrzebujesz). Inna sprawa: czy I2C wymaga buforów trójstanowych??
Rozumiem. Mój błąd i niedoczytanie datasheeta. W programie mam 9 bitową rozdzielczość a czekałem 750ms. Ten problem juz z głowy. Dostaję odpowiedź maksymalnie w przeciągu 200ms. Powiedz mi proszę w takim razie jak np. rozwiązać sprawę SHT11? Tutaj przy szybkich odczytach potrzebna jest tablica. Chodzi mi po prostu o to, żebym mógł ustawić odpytywanie...
Pierwsza sprawa musisz tak napisać program by rozpoznawał początek i koniec paczki , żeby móc policzyć który bajt masz sprawdzać. Możesz czekać na wartość 65 jak ją odbierzesz to odbierasz kolejny, którego nie sprawdzasz i jeszcze jeden który porównujesz z wartością poszukiwaną jak jest ok to wyświetlasz komunikat jak nie wracasz na początek programu...
Napisanie $crystal = 1000000 spowoduje, że Bascom dostosuje opóźnienia do aktualnej częstotliwości pracy zegara i program zacznie zachowywać się normalnie. Aby przełączyć procek na zewnętrzny oscylator kwarcowy trzeba go podłączyć do programatora obsługiwanego przez Bascom. Kliknąć ikonkę programowania w Bascomie, wybrać programowanie ręczne, co pozwoli...
Spróbuj odbierać przy użyciu : Config Serialin Bytematch = ALL zamiast Urxc. Jeszcze lepiej gdybyś ustawił bufor i odbierał z bufora całe linie zakończone CRLF
Ja nie wiem z jakiego powodu taki zachwyt... :| Sieć-->step down na 5V--> uP z prostym programem choćby w Bascomie--> Bufor--> LED RGB Nawet można zrobić identyczną wkręcaną przy odrobinie zaparcia...
bolek , praktycznie każdy wzmacniacz operacyjny z wejściem JFET się nadaje. Na przykład taki TL08x ma rezystancję wejściową rzędu 1Tohm, tak, Tera :] Wystarczy prosty wtórnik i bufor gotowy.
Witam Cieszę się, że mój program, który defakto nie jest szczytem programowania, kogoś zainteresował. Ogólnie działa on dość fajnie ale mógł by lepiej hehe. Teraz co do programu, to nie mam czasu na dokładną analizę całości (sesja :/ ), nawet swojego kodu już dobrze nie kojarze, ale zauważyłem jedną rzecz: kolega, w tym co dopisał używa zmiennej wynik_o...
W roli "programatora" zastosowano tam kilka rezystorów. Wystarczy dołączyć linie z portu LPT, ale bezpieczniejszym rozwiązaniem byłoby zastosować osobny programator z buforem.
McRancor: nie zgadzam sie, moim zdaniem to dioda jest na linii VCC miedzy 74hc244 a programowanym ukladem. A prawda jest taka ze poprzez bufor przechodzi napiecie z portu LPT (w moich programatorach bez tej diody dalo sie nawet zaprogramowac 2313 zasilajac go wlasnie z portu LPT przez ten bufor). Poprostu przez bufor "przecieka" napiecie (nie sprawdzalem...
Jaki masz programator? Z buforem? Sprawdź na innym komputerze. W programie wykorzystujesz sprzętowe SPI?
Hm, rzeczywiście obsługę "dekodowania" zawartości odebranego stringu można przenieść poza przerwanie. Choć - to akurat rzeczywiście działa :) Ale - to raczej nie zmieni problemu z "ginącą" częścią odebranego stringu, bo przecież zawartość bufora się nie zmienia od momentu "poskładania" go w serial1charmatch. Kiedy następuje wywołanie serialcharmatch...
Siemanko. Nie jestem, koledzy zagorzałym fanem Bascom, tylko go po prostu trochę znam. Zaopatrzony w lekturę zgłębiam teraz C i pomyślałem, że to będzie fajne ćwiczenie :D Napisałem to sobie w Bascom ekspresem i wygląda to tak https://filmy.elektroda.pl/65_1422227481... Nie chciałem takiego dużego okna tu wstawiać, ale zastosuje się do polecenia :P...
Nic skomplikowanego. Najlepiej zdefiniować np. 10 rejestrów typu Integer. Na to nałożyć Overlay Buffer * 20 (bo po dwa bajty na kazdy Word lub Integer). Odbierasz bajty do bufora, sprawdzasz CRC i przepisujesz do swoich danych ;)
To można rozwiązać na wiele sposobów. Jeśli tylko cześć ramki jest stała a zależy Ci na wartościach odebranych to można użyć bufora kołowego i kiedy wykryjesz koniec ramki to wciągasz z bufora poprzednie siedem bajtów. Tutaj jednak sprawa jest prostsza. Poniższy mikroprogram powinien sprawdzać po kolei nadchodzące bajty. Jeśli się zgadzają to wskaźnik...
bascom bufor czyścić bufor bascom bufor rs232 bascom
prosty pilot włącz wyłącz płyta indukcja electrolux telefon grzeje ładowania
Płyta indukcyjna przegrzewa się - przyczyny i rozwiązania Instrukcja obsługi lodówki Polar CZN 235 - gdzie znaleźć?