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ś...
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.
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.
P.S. Oczywiście, że przerwania lepsiejsze:) Zwłaszcza z buforem :)
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
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 ........
Fajnie by było gdy byś przykładowo napisał co takiego przesyłasz.........jakie dane?? Mógłbym to przy okazji sprawdzić u siebie. A tak przy okazji z kodu wynika że pomimo tego czy jakiś znak jest czy nie w buforze to co 500ms "czyści" Ci sie wyświetlacz, spróbuj zamiast inkey() użyć waitkay(). Bo waitkay() powoduje zatrzymanie programu na czas napotkania...
Może masz błąd w obsłudze bufora??
...jeśli już jednak o tym mowa to nie żebym chciał męczyć cię o tą rozbudowaną funkcję przerwania, ale może chociaż tak w 2 słowach powiesz mi jak "to w locie" dekodujesz? tzn - przy okazji na jakim procku minimum warto się za to zabierać? M8? M16? M32? czy jeszcze większy? Bez przesady ;) Jak jest >=512 RAM-u , to wystarczy do smsowania. Co do ilości...
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...
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...
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 Na port rs232 dostaje pewne dane chciałbym je wszystkie zebrać i wrzucić do zmiennej. Coś na zasadzie bufora. Jak powinienem podejść do rozwiązania tego problemu. Pozdrawiam
Poczytaj o instrukcji Config Serialin. To jest bufor wejściowy w USART w bascomie.
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]
Ok, już sobie poradziłem z problemem tego krzaka :D Teraz mógł by mi ktoś powiedzieć, jak wyczyścić bufor uarta w bascomie??
klops_mops ---> masz dwa wyjścia żeby ci nie mrugały te wyświetlacze w czasie PRINT'a ;) - innymi słowy mówiąc aby procedura wysyłania RS232 nie zakłócała procedury multipleksowania 1. prostszy sposób - zwiększ tą kocią prędkość RS232 na jakąś ludzką - chociaż 9600bps to już praktycznie nie powinno ci mrugać a jak dasz każdą większą to już będzie coraz...
Po prostu nie możesz korzystać z instrukcji Input tylko z instrukcji np. Inkey i odbierać 128 bajtów o dowolnej zawartości (nawet bajtów zerowych) Po odebraniu 128 bajtów sprawdzić sumę kontrolną, tak jak pisał kolega mirekk36. Jeśli odebrałeś wysłasz ack spowrotem np. z sumą crc ramki Instrukcja Input się nie nadaje do tego celu. Tylko odbieranie za...
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.
czy nie potrzebna jest tutaj instrukcja INKEY() ? swojego czasu zrobiłem taki układ , że dwa procki atmega8535 przesyłały między sobą zmienną. program zajął dosłownie 3,4 linijki w odbiorczym użyłem instrukcji inkey() tzn , jeżeli było coś w buforze(różne od 0 ) to wyświetlało daną. oczywiście czasy w realizacji pętli były takie same oraz kwarce również...
Miałeś jeszcze zwiększyć długość bufora. A konwerter to oczywiście można zrobić. Jeszcze bym radził przetestować to urządzenie na RS232. Tylko wtedy musiało by być tylko jedno podłączone.
No to zaczynamy po raz kolejny. Coś takiego jak stworzyłeś to niestety za szybko nie będzie działać. Mega z kwarcem rs 14 z groszami działa naprawdę szybko i można zrobić bardzo dużo w jedna sekundę. Do odbierania i wysyłania danych można sobie napisać własną procedurę - nawet w bascomie i jest ona sporo szybsza i działa rewelacyjnie. Deklarujemy przerwania...
:arrow: Mictronic: Predkosc transmisji to 9600! Ponizej wklejam wycinki mojego programu do obslugi tego modulu: '------------------------------- ' modul RFiD ' ' 9600.1.0 ' dane 0xff,x,x,x,x,x,crc8 '------------------------------- {...} $baud = 9600 ' predkosc transmisji Config Serialin = Buffered , Size = 100 ' rozmiar bufora {...}...
u mnie krzaki to rzecz normalna i nie przejmuję się nimi. Zawsze będzie tak że do bufora coś wpadnie. Od czego są polecenia: InStr i ChKey i Mid? Ważne że między krzakami jest odpowiedź.
Dlaczego do bufora 32 znakowego wpisujesz 64 znaki? Lekko zmodyfikowałem funkcję ReadUart, aby wypisywała zmienną buf: Jakbyś jeszcze kończył string w miejscu, gdzie skończyły się dane, to nie wypisywałyby się śmeci. Coś w tym stylu: [syntax=cpp] ret = ReadFile(hPort, buf, len,&retlen, NULL); buf[retlen] = 0; cout << buf; [/syntax] Tak w...
Problem rozwiązany zmieniłem funkcje odbierania znaku na taką [syntax=c]//Odbieranie unsigned char uart_odbieranie( void ) { /* Czekaj na dane do odbioru */ if( ( !(UCSRA & (1<<RXC)) )==0)return UDR; /* Pobierz i zwróc dane pobranie z buforu */ }[/syntax]
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...
Za punkty - nie, przynajmniej nie ja. Ale cos pomóc mogę. Zrealizowałem już parę projektów uC + vb6 i jakoś one działają. Może zacznijmy od samego uC. Jeżeli był by to asm (bascom + zaawansowany bascomowiec) to zrobiłby to na dwuch tablicach które wyrażały by bufor odbioru i nadawania np rs_tx_bufor(12) as byte i rs_rx_bufor(12) as byte Można by to...
Zwiększ bufor odbiorczy, a do sprawdzenia czy jest nowy bajt w buforze użyj Ischarwaiting() : [syntax=basic4gl] Config Serialin = Buffered , Size = 20 ' bufor 20 bajtów ........ Do If Ischarwaiting() = 1 Then P = "" Input P Gosub Przelicz End If Loop[/syntax]
Ło matko! ludzie co wy tu opowiadacie? Jarosław J - odnośnie twojego problemu ale już konkretnie: 1. Możesz najspokojniej w świecie przy komunikacji dwóch procków zrobić tak, że jeden będzie taktowany wewn oscylatorem a drugi np. kwarcem (Żaden problem) !!! 2. ale używaj sprzętowego UARTA w Bascomie a nie to co tutaj wszyscy razem wyczyniacie ;) 3....
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...
Jak chcesz wysyłać bezpośrednio wartości do portu(tzw tryb binarny) to w bascomie komenda printbin zmienna. Spowoduje to wpisanie wartości zmiennej do bufora a potem jej wysłanie. W standardowej komendzie print jeżeli na końcu linijki nie dasz znaczka";" to do wszystkiego doda enter(LF CR) dlatego ci drukuje dodatkowe rzeczy po prosty daja tak print...
Już chyba wiem, w czym może być problem. Nie mam mostków na liniach 4-6 i 7-8 portu COM. Aplikacja na PC nie jest w stanie wyczyścić bufora RS232 przed odebraniem danych. Czy to może być spowodowane brakiem w/w mostków? ---edit--- Niestety mostki nie były problemem.
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...
Problem leży w tym ,że to co usiłuje zbudować kolega wymaga sporej wiedzy na temat rozwiązań tego typu zagadnień. Jeśli urządzenie to ma pracować w domu stanowiąc automatykę RS232 nie nadaje sie do tego typu transmisji ze względu na długość przewodów i odporność na zakłócenia . Do tego jest RS485 i CAN. Co do nauki programowania to mało kto napisze...
Kolejny raz widzimy to samo. Zamiast dobrać kontroler do zadania, to próbujesz na siłę dopasować zadanie do kontrolera leżącego w szufladzie. Tutaj o tyle gorzej, że nawet się nie zastanowiłeś ile zasobów potrzebujesz, tylko od razu przyjmujesz 2 albo 3(!) kontrolery do w sumie bardzo prostej aplikacji. Moim zdaniem wszystko zrobisz na jednym uC i może...
No i problem wygląda na rozwiazany, to co powodowało niedziałanie ww układu to fakt, ze w przerwaniu od UART nie pobierałem znaku z buforu, przez co flaga nie zostawała wyzerowana i kolejne znaki nie były odbierane... Innymi słowy powinno być tak: Port: A=InKey() Toggle portd.6 Return
Mam problem z transmisją danych. Na PC mam uruchomiony terminal (terminal v1.9b), i jak wysyłam treść z AVR do portu RS232 to terminal poprawnie odczytuje wysłaną treść. Natomiast problem tkwi w transmisji w drugą stronę. Żeby sprawdzić czy poprawnie AVR odbierze dane wysłane z RS232, napisałem tak program żeby po odebraniu treści wysłanej z terminala...
Musisz stworzyć bufor jeśli chcesz odbierać dłuższe nazwy. Powyższy przykład odbierze co najwyżej 1 znak. Tu temat który rozwiąże twój problem: http://www.elektroda.pl/rtvforum/topic19...
Witam, ja się w ogóle nie dziwię, że masz taki efekt, ja gdybym był na miejscu procesora i gdybym otrzymał taki kod to też bym zwariował na maxa ;) Na prawdę jeszcze czegoś takiego to nie widziałem, żeby : 1. nie skorzystać ze sprzętowego UARTA - gotowca w bascomie 2. nie skorzystać z pięknych buforów cyklicznych - gotowca w bascomie tylko w zamian...
Witam. Zna ktoś rozwiązanie jak ugryźć temat przesyłania danych taką trasą: PC <-RS232-> AVR <-RS232-> Układ docelowy Komputer i urządzenie docelowe mają ze sobą rozmawiać dwukierunkowo, AVR ma być pośrednikiem transmisji oraz dodawać / odejmować swoje dane kontrolne. Obie transmisje muszą być buforowane. Jakie znacie procki które spełnią...
Kolego prosta sprawa, do odbioru danych po rs232 używaj przerwań i gromadź dane w buforze. Obsluga przerwania odbioru znaku powinna sprawdzać kod znaku nadchodzącego z zewnątrz. Jeśli przyjdzie znak Enter przerwanie ustawia flagę. Flagę sprawdza z kolei głowny program, jeśli jest ustawiona wykonuje obsługę związaną z nadchodzącymi informacjami po rs232....
Najprosciej napisz ja na przerwaniu - port RS 232 ustawia flage ze odebral bajt do bufora i mozna ja sprawdzac i wyjmowac bajt gdy flaga - lub podpiac to pod przerwanie i wtedy wyjac bajt - podstawa sprawnego programu.
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
kurczę jeszcze gorszy jest ten problem bo okazuje się że wysłanie jakiegoś dłuższego stringa z PCta do Bascoma graniczy z cudem no chyba że znowu wysyłam znak po znaku i robię pomiędzy tymi znakami znowu przerwy po np 200ms czyli tak jakby symuluję wpisywanie znaków jak z klawiatury gdy jestem podłączony terminalem gdzie robię błąd ??? Dodano po 55...
Witam ! Pytanie pewnie trywialne, ale ja odpowiedzi nie znam. Chce nawiązać komunikację pomiędzy dwoma AVR'ami. Programowane w Bascomie. Czy to się robi tak, że w przypadku SPI, jak i UART, jeden uC nadaje, a ten odbierający po odebraniu wywołuje przerwanie które odbiera bajt z bufora i przypisuje do jakiejś zmiennej ? Bo jeśli nie i odbiór następuje...
To jest proste jak świński ogon :D ahahahaha, ale napisz kawałek kodu. Czy masz tam jakiś LCD czy nie, czy masz tam jakiś Timer ustawiony do odmierzania sekundy czy Wait`ujesz :D Czy w dokumentacji czujnika pisze, że nadaje tez na końcu niewidoczne w terminalu znaki 13 lub 10? EDIT: aaa masz tu taki prosty. Napisałem przy śniadaniu więc błąd mógł się...
Proponuję wyciągnąć procesor z podstawki i w miejsce lini RXD i TXD wstawić zworę(zewrzeć ze sobą). W ten sposób jak naciśniemy coś w terminalu to będziemy mieli echo tego co wyszło. Jeżeli i to niezadziałao to wtedy można sprawdzić czy aby napewno na MAX'ie jest prawidłowe 5V i czy dobrze podłączone są przewody. Co do komunikacji w procku to wstaw...
Eeeej panowie, nie trzeba wchodzić tylnymi drzwiami, nie trzeba stosować żadnych sztuczek i nie trzeba koniecznie tworzyć przerwanie, które jakoś tam "na siłę przerwie input". Wystarczy tylko inaczej - a w zasadzie to "normalnie" podejść do tematu a nie od tyłu. Niestety help bascoma nie pomaga w takim myśleniu od przodu ale nie ma co się dziwić - tam...
Spróbuj z tym programem: $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 Dim I As Byte Dim Znak As String * 1 Do Input "podaj wartosc I:" , I Print "wartosc I wynosi:" ; I If I = 1 Then Do Znak = Waitkey() Print "odebrano znak:" ; Znak Loop Until Znak = "k" End If If I = 2...
Witam A w czym piszesz na uC ? W bascomie zadekalrujesz sobie powiedzmy jakiś bufor i jak coś do niego wpadnie to dostaniesz przerwanie. Daną z bufora przypisujesz do zmiennej (byte) i wysyłasz ją spowrotem. realizujesz w ten sposób coś wo rodzaju echa. To powinno zadziałać. Jeśli bedziesz to wyświetał na LCD to będzie trochę zamętu. co innego wyślesz...
Witam, a po choinkę wyłączać Timer przy organizowaniu wymiany danych z PC ??? poczyta sobie kolega o takich poleceniach jak np: Config Serialin - dzięki któremu można ustawić sobie bufor wejściowy, do tego proszę zobaczyć co przy tym poleceniu robi Bytematch - dzięki, któremu można sobie ustalić po nadejściu jakiego znaku ma się zainicjalizować np jakaś...
gospodarka buforami A jaka różnica w tym przypadku między TCP a UDP? W tym że dla TCP musi być większy bufor, bo nagłówek większy? Niebardzo widzę te wady UDP. A na pewno pozbawiłeś go głównej zalety - prostoty. Poza tym mowa jest jedynie o wysyłaniu danych, (co do buforów nie mówię większy/mniejszy, tylko że trzeba miec kilka buforów i w przerwaniach...
"- a nie mówiłem :), pulling to pulling". czytaj dokładniej bo o tym na samym początku mówiłem i ja i inni i sam Osamu Tamura - tak więc z tego typu twoich wypowiedzi wynika tylko to co w skrócie zamieściłem w kilku linijkach poniżej: ... a nie mówiłem, że mówiłeś iż mówiłem o tym, że mówiłeś - to ty nie wiedziałeś że mówiłem o tym, że mówiłem ...................
Szkoda :( ,ale LPT żadko pada (chyba że nie stosuje się buforów 74HC244 :(,wtedy przy odrobinie szczęścia i umiejętności można skopcić ;) ), nie masz gdzieś kopii pliku w bascomie ,notatniku gdziekolwiek, może być też z przed kompilacji. A jak nie to się troche pobawie i odezwe jak zadziała lub będe miał jakieś problemy,pozdrowki.
Zacząłem od początku: Dim Bufor As Byte Dim Dane As String * 32 Do Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze If Bufor = 1 Then Kod = Inkey() Lcd Kod Wait 1 End If Loop na wyświetlacz wypluwane są mi wartości : 77 69 83 83 77 48 02 36....itd.. W tabeli ASCII odczytałem że powstaje: MESSM0...itd.. jak teraz zapisać te wartości...
Na AVR bez problemu można realizować transmisje o szybkościach rzędu setek kbps. Według mnie problem u ciebie polega na tym, że dane odbierasz pojedynczo (w procedurze obsługi przerwania odebrana daną wpisujesz do zmiennej - a co jeśli następny znak pojawi się szybciej niż zdążysz tę zmienna "obrobić" w programie?) - przez to gubisz część danych. Spróbuj...
Dodatkowo w Bascomie bardzo łatwo zrobić bufor danych, pogoglaj na temat poleceń Config serialin oraz Config serialout .
Ja ci radzę jednak wysyłać hexem stałej długości. Np coś takiego: #F,FFFF(enter) Następnie w obsłudze rs'a sprawdzasz jaki przyszedł znak i jeżeli jest # to reset licznika wejścia i zapisujesz dane do bufora. Jak przyjdzie koniec (czyli enter lub podobne) sprawdzasz sobie adres(odpowiedni znak) i przepisujesz sobie zmienne do innego bufora. Dodatkowo...
No to 89c2051 wystarczy w zupełności, nie trzeba specjalnych buforów, heheh bez problemu napiszesz to i w C i w Bascomie... troche wiary w siebie, poczytaj helpa od Bascoma i juz bedziesz wiedział jak wysyłać i odbierać dane. A sprzetowy i softwarowy uart załatwisz jednym poleceniem ;)
... W jaki sposob mam wrzucić dane do bufora i później je odczytywać? Ty nic nie musisz wrzucać , o wszystko zadba kompilator.Zainteresuj się dyrektywą Config Serialin , funkcją Ischarwaiting() ,zmiennymi systemowymi _RS_HEAD_PTR0,_RS_TAIL_PTR0,_RS232INBUF0 . Bascom rulez :D Piotrek
Np. druk czcionek - nie robiłem bufora przechowującego cały napis w formie pikseli, a po prostu drukując każdą linię odczytywałem dane na bieżąco z tablicy czcionek. Wcześniej pisałeś coś o połączeniu przez RS232. Obrazki można kompresować różnymi metodami, zawsze można dołożyć pamięć zewnętrzną na nie (np. eeprom, jeśli ma to być zmieniane częściej...
No tak na marginesie to bardzo ciekawy efekt ci wyszedł ;) A na poważnie to działasz na ATmega32 więc jak możesz próbować nawet tworzyć bufor w RAM o rozmiarze 2026 ??? nie wspominając o większym - skoro cały RAM tego procka to 2kB. Zastanowiłeś się nad tym? Rany julek, teraz dopiero zdałem sobie sprawę z tego co próbowałem "na siłę" zrobić. Z tym...
A jak zrealizować wyświetlanie znaków jeden po drugim w takim kodzie: Do Print chr(bufor(a)) incr A Loop Podaje bez deklaracji zmiennych. Dodano po 10 OK dodać średnik w pętli. Dzięki za podpowiedź, nieraz rzeczy oczywiste są ciężkie do zauważenia.
Sprawa rozwiązana: Poniższe komendy włączają i wyłączają projektor: Print Chr(13) ; "*pow=on#" ; Chr(13) Print Chr(13) ; "*pow=off#" ; Chr(13) Natomiast: Print Chr(13) ; "*pow=?#" ; Chr(13) Zwraca stan projektora, tylko należy zwrócić uwagę, mój projektor również dodaje echo. I na tym się przejechałem. Bufor na input miałem za mały i odbierałem tylko...
Mam ten sam moduł, ten sam problem... Pozwoliłem sobie przerobić troszkę Twój kod: $regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Portb.3 = Output Config Portb.2 = Output Set Portb.3 Set Portb.2 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2...
Napisałbym to pewnie inaczej, ale tutaj masz "tłumaczenie na Bascom" tego co zapisane było w C. W Bascom każda zmienna jest inicjowana na początku wartością 0 W C inicjujesz zmienną i nadajesz, albo nie, jej wartość i to jest to : static uint8_t i=0; Po prostu I As Byte i I = 0 I jest indeksem dla numeru bajtu w buforze. Wykrzyknik w C to zaprzeczenie....
Witam wszystkich mam taki problem.Potrzebuję z aplikacji android wysłać cztery zmienne typu Word do procesora Atmega 32 i zapisać je w Epromie.Dane wysyłane w Srtingu. Na razie wysyłam dane z terminala z Pc-ta.Aplikację na Android pisze mi ktoś inny.Potrafię wysłać jedną zmienną nadaną jako String przekształcić na Word i zapisać ją w Eprom na procku...
pracownia z prockow:) odrazu implementacja z przesylaniem danych przez rs232. moze sie polapiesz bo kod jest troche zaspamiony pozdro bufor EQU 030h;adres początkowy buforu danych index EQU 02fh;index ostatniego bajtu w buforze index2 EQU 02eh;index pierwszego bajtu w buforze ORG 0H SJMP RESET org 023h;przerwanie od portu szeregowego JNB ri, serout;w...
Dziękuję Koledze Mundi1970 za radę. W sumie z buforem to chciałem oszczędnie, jeśli chodzi o pamięć. Co do nagłówka, to chodzi o coś takiego jak jest w ciągu GPS? Czyli zawsze jest na początku GPRMC ? Czyli jeśli jest to znaczy, że początek ciągu jest odebrany prawidłowo. W sumie ma to dodatkowy sens, bo w przypadku większej liczby urządzeń już po RS485,...
a jak masz ustawioną prędkość w Bascomie dla UART? jak masz ustawione taktowanie procka? Na jaką prędkość i jakie parametry połączenia skonfigurowałeś w terminalu w PC? Jak wreszcie to połączyłeś ? może jakiś kawałek schematu? próbowałeś wyjąć procka i zewrzeć z tej strony Tx z Rx aby zobaczyć czy w terminalu masz powrót echa czyli tego co wpisujesz...
Witam serdecznie bardzo proszę o pomoc bo nie mogę sobie poradzić z pewnym problemem. Mianowicie komunikuje się procesorem amega32 z pewnym urządzeniem poprzez rs232 wysyłam do urządzenia zapytanie w postaci hex AA 000A20010110ffffffffffff3A BB gdzie AA początek paczki BB koniec a 3A to suma kontrolna poprzez xor wszystkich bajtów oprócz AA i BB. Wiec...
mikrokontroler master to nic innego jak terminal z oprogramowaniem napisanym przeze mnie w qb64. Mikrokontrolery podłączone do niego są poprzez port rs232 tj. linia rxd terminala jest dołączona do linii txd atmeg a linia txd terminala jest spieta z linia rxd admeg. Komunikacja pomiedzy nimi odbywa sie w formacie ascii tzn terminal wysyła adres atmegi...
witam . meczę sie już jakiś czas z odebraniem danych z modułu czytnika RFID. wysyła on ramkę ttl po zbliżeniu karty do czytnika w takiej postaci: RS232 TTL (ramka danych 0xff,x,x,x,x,x,crc8 ), x-dane karty oczywiście w Bascomie. próbowałem już z poleceniami Waitkey() inkey() czy sprawdzaniem bufora Uart Ischarwaiting(). $baud = 9600 oczywiście całość...
napisalem taki kod w delphi procedure TForm1.Button1Click(Sender: TObject); var hCOM:THandle; nrWrit:DWORD; nrRead:DWORD; Errors:DWORD; Dcb:TDCB; ComStat:TComStat; buf:array Dodano po 42 DOŁOŻYŁEM PETLE POMIEDZY WYSYŁANIE ZNAKÓW DO BUFORA A ODBIERANIE I WTEDY TO DZIAŁ, ALE CAŁY PROBLEM POLEGA NA TYM ŻE POWINIENEM CHYBA DANE WYSYŁANE Z MIKROKONTROLERA...
Witam. Już kilka dni męczę się z tymi modułami. Schemat mam taki jak na stronie http://loee.jottit.com/rfm12b_and_avr_-_... , jedynie zamieniłem ze sobą linie MOSI i MISO. Używam programowego SPI. Korzystałem z kilku bibliotek zamieszczonych w tym temacie, m. in. ze strony 3 (http://www.elektroda.pl/rtvforum/topic8... którą zamieścił...
Można zapisywać dowolne dane z dowolnej zmiennej. W pętli umieściłem odczyt adc, bo tylko w trybie jednoczesnej obsługi przetwornika i karty mamy możliwość rezygnacji z bufora. Oczywiście ta obsługa może dotyczyć kilku kanałów, łącznie z zapisem na karcie znaczników/wartości czasu. Analogicznie może się odbywać współpraca z rs232/485 (w procedurze odczytu...
Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie. $regfile = "attiny2313.dat" $crystal = 11059200 $hwstack = 32 $swstack = 10 $framesize = 20 'DEKLARACJA ZMIENNYCH I PROCEDUR Dim Flaga As Bit , Flaga1 As Bit Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte Dim Znak1...
Podsyłam prosty programik z polskiego helpa do bascom-avr. Bardzo dobrze obrazuje zasade wysylania i odbierania sygnalu szeregowego. Wiem, że niby temat jest zamknięty, ale może kolega jeszcze tutaj zerknie, a jak nie, to będzie dla innych :) '---------------------------------------... ' RS232BUFFER.BAS ' (c) 2000-2002, MCS...
proponuje ci dać printa w pętli głównej aby podglądnąć co procesor czyta z UARTA. Może się zdarzyć że czytasz śmieci i przy takiej pętli co się kręci miliony razy na sekundę ciągle się trafia przypadkowy znak 87. Albo wyślij inny znak i zobacz czy procesor czasem na niego też nie zareaguje, jeśli tak to masz pewność że jest coś nie tak sprzętowo. Albo...
Chciałbym sie poradzić jak napisać w Bascomie, oprogramowanie do urzadzenia, które musi coś tam wyświetlać, musi obsługiwać klawiaturę, wysyłać coś tam po I2C oraz na bieżąco musi odbierać ramki z UARTA0. Chodzi o to że z komputera wysyłam 64bajty przez RS232 Atmega to odbiera i dokonuje odpowiednich nastaw w urządzeniu. Jednocześnie musi działać klawiatura...
http://obrazki.elektroda.pl/5985056000_1... Witam. Od razu przepraszam za jakość płytki drukowanej, dopiero uczę się je robić. Moją nową "zabawką" jest urządzenie, zwane "PseudoComputerem". Pomysł Wpadłem na pomysł urządzenia, które będzie posiadało coś na kształt interpretera. Wczytuje ono komendę w postaci kodu, następnie argumenty...
....- przerabiałem to Bascom jedynym sprawdzonym i profesjonalnym odbiorem danych jest mój zapis reszta to dla amatorów "zapal zgaś diodę" - Bez obrazy! Lecz to doświadczenie oooj bardzo małe to doświadczenie, każdy początkujący amator nie umiejąc sobie poradzić z transmisją w RS232 na początku zwykle dobiera się do transmisji binarnej, która sprawia...
Sprawa jest banalnie prosta (pomijam tu już połączenie sygnałów na krzyż bo to zrobiłeś chyba prawidłowo) , tylko po 1. Włącz sobie w Bascomie w obu prockach sprzętowy bufor RS232, który działa na przerwaniach - służy do tego polecenie Config Serialin - poczytaj sobie o tym i jak ustawić sprzętowy bufor wejściowy 2. to co chyba ci rozwala całą koncepcję...
2. Po wyglądzie danych w Ale ja wysyłam przy pomocy ptintbin jakbym wysyłał przy pomocy print dane w terminalu za każdym razem pojawiały by mi się w nowym wierszu gdyż bascom po komendzie print automatycznie dodaje znaczniki końca. 4. Podpunkt w pełni rozumiem i właśnie tak robię. Mam problem ze zrozumieniem pozostałych podpunktów. Co do funkcji nie...
Tu masz przykład odbierania tekstu po RS-232 w Bascomie: [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 8000000 $baud = 19200 Const Maxlen = 40 'Deklaracje stalych Dim Akey As Byte 'Deklaracje zmiennych Dim I As Byte Dim Pwm As Integer Dim Cmd As String * 4 Dim Buffer As String * Maxlen Dim E As Eram String * Maxlen I = 0 Config Pinb.2 = Output...
Taa, ciekawe, który _cast? Tutaj akurat nie ma i nie będzie, żadnego nadzorowania, bo trzeba przekształcić tablicę bajtów na strukturę. Rzutowanie ma tą zaletę, że nie trzeba niczego kopiować. Hmmm masz rację po głębszej analizie nadaje się chyba do tego tylko reinterpret_cast? Co prawda nic nie będzie nadzorował ale łatwiej go odnaleźć w programie...
Problem polega na tym, że gdy mam ustawione 9600, data bits 8, stop bits 1, parity none jest wszystko w porządku.Ale jeśli ustawie np 4800 lub coś innego np data bits 7 już nie działa i nie wiem co jest grane. Jak używałem komendy input() wszystko pięknie działało a z inkey() nie chce. $regfile = "m162def.dat" 'Kwarc 14,7456MHz $crystal =...
3. w Bascomie można zdefiniować dodatkowo, opócz sprzętowego UART-a, także wirtualne porty UART, na dowolnych portach. 4. Polecam: https://avrhelp.mcselec.com/, a dokładnie rozdział: "SOFTWARE UART" Nie polecam software uart. W Arduino sa z tym, kłopoty a Bascom jest jeszcze bardziej nieprzewidywalny a nie ma dostępu do bibliotek aby je zmodyfikować....
MES Mariusz. a nie lepiej lekko obciążyć wejście wzmacniacza równoległym rezystorem 47k ? kondensator zwiększa bezwładność pomiarów (co czasami jest pozyteczne a czasami nie). pozdrawiam Ale przy takiej niewielkiej częstotliwości pomiaru jak 10Hz te kondensatorki nie wiele zdołają namieszać. 10Hz to niewiele, ale nie jestem w stanie wycisnąć więcej,...
Witam, Programuję sobie procesorek AT89C2051 i magistralę 1-Wire. O ile z odczytem danych z magistrali nie było problemów, o tyle z wysłaniem tego przez RS-232 jest problem. Czy ktoś z użytkowników ma jakieś gotowe procedury zapisu i odczytu do porty RS232? W BASCOM wszystko działa, ale chcę to zrobić w C. Na razie doszedłem do: //funkcja obsługująca...
Telefon cokolwiek wysyła bo jak podłączyłem wyjście z SIEMENS do portu D.7 to na wyświetlaczu pokazały sie 3 znaki wysłane przez telefon Tak samo jak dzwonie na niego to również coś wysyła - jakiś pakiet znaków. Może mam źle ustawione coś z komunikacja RS232 lub może trzeba do telefon wysłać jakąś komendę jeszcze. Jak wgram ten poprzedni programik od...
zrobiłem tak: Atmega328 - Master Do Config Serialin = Buffered , Size = 24 Enable Interrupts If Ischarwaiting() = 1 Then ' sprawdź czy jest jakiś znak do odebrania w buforze lub HW UART Gosub Odczyt_rs End If '***************************** wysyłanie żadania danych do modułu 001 If Flaga_001 = 1 Then Set Re_de Waitms 2 Print "MOD001"...
Witam Starałem się wyjaśnić platforma AVR lub zadania jaki ma wykonać NIE JEST TAK WAŻNE jak zorganizowanie komunikacji na RS232 za pomocą paczek HEX! Mogę wykorzystać dowolną większą kość AT! AT90s2313 Akurat tą kość mam gotową do pracy i kompletną do komunikacji na RS232. Czy jest możliwe zorganizowanie takiej komunikacji.? Potem wykona zadania......
Wiem że na forum jest pełno zagadnień dotyczących rs232 i AVR ale wszystko jest w bascom-ie którego nie umiem, pozatym dlamnie lepszy jest zwykły assembler. Poniżej program który wgrałem do ATmega8515 #include <m8515def.inc> Rjmp Start USART_Init: ;Ustawia Baud Rate Out UBRRH,r17 Out UBRRL,r16 ;Otwórz port i włącz transmisje Ldi r16,(1<<RXEN)|(1<<TXEN)...
Jednak ta procedurka działa dobrze tylko poprostu procesor się nie wyrabiał Zapis: Print "wczytaj hex" Adres = 0 For Z = 1 To 8 Inputhex Hexbuf1 For X = 1 To 32 Hexbuf2 = Mid(hexbuf1 , X , 2) Dana = Hexval(hexbuf2) Call Write_eeprom(adres , Dana) Incr Adres Incr X Next X Hexbuf1 = "" Next Z Return Wystarczyło...
Witam, Na wstępie dziękuję za pozytywne komentarze. Widzę, że przewija się jak narazie głównie jedno pytanie odnośnie sposobu udostępnienia tegoż modułu. W odpowiedzi mogę narazie napisać tylko, że już wkrótce bo mam nadzieję maksymalnie do końca tego miesiąca - wszystko się wyjaśni. Narazie trwają intensywne prace nad ukończeniem finalnej wersji Biosu...
Witam serdecznie! Chciałbym poprosić kolegów o rozwiązanie pewnej kwestii. Ischarwaiting() zwraca wartość 1 gdy w buforze coś jest a 0 jak nie ma. Dana wejściowa (Znak) z RS232 na postać 5 znaków + enter czyli 6 znaków. Config Serialin=Buffered, Size=6. Zmienna Znak jest wartości String*6. Dane z RS-a odbierane są w pętli: Dodano po 3 powstał mały byk...
Zgadzam się, jak wszystko jest podłączone ok to nie ma szans aby układ nie transmitował. Faktycznie ja też stosuję 11059200 i zawsze działa. SPRAWDŹ KABLE! 1. Po pierwsze kabel komp<->RS232 czy masz kabel z zamienionymi końcówkami Rx Tx tzn. przy kompie 2 przy Max232 3 i na odwrót! 2. Sprawdź schemat połączeń max 232 z noty aplikacyjnej - proawidłowe...
bascom bufor rs232 rs232 bufor bufor rs232
wirus pliki znikają lodówka bosch rozszczelnienie ustawienie anteny warszawa
Spalenie startera pompy myjącej Bosch SGS5668/22 - przyczyny i diagnostyka Akumulatory 4MAX - Producent i jakość