dim urx_bufor(5) as byte dim urx_licznik as byte dim urx_odebrano as bit ... urx_licznik=1 'to jest potrzebne dla bascom'a bo tablice zaczynaja sie od 1 a nie 0 enable interrupts ... przerwanie_urx: if urx_licznik<5 then urx_bufor(urx_licznik)=udr incr urx_licznik end if if udr=13 then set urx_odebrano 'odebano ENTER if udr='T'...
Skoro chesz przesyłać dane czyste dane binarne to chyba zrozumiałe, że odpada ci konstrikcja Bytematch z zastosowaniem dowolnego bajtu, który byłby końcem jakiejś tam ramki w związku z tym musisz je albo: 1. wysyłać czysto binarnie z kompa a w procku po prostu czekać na zakończenie transmisji - wprowadzając jakiś TimeOUT (ale to czasami mało eleganckie...
Jak przyjdą wszystkie 4 ramki to w terminalu widać to tak : http://obrazki.elektroda.pl/9423490600_1... Oczywiście jak przyjdzie jedna to w terminalu jest tylko jedna linia i tak samo dla 2 i 3 ramek.
nouki właśnie chciałem zaproponować Ci lekturę mojej biblioteki do której link podałeś. Wbrew pozorom biblioteka jest baaardzo prosta. Przeanalizuj sobie jak jest zbudowana. Wydaje mi się, że większość mechanizmów da się z powodzeniem zastosować w bliźniaczej formie w Bascomie. Dodano po 4 50 05 05 82 01 10 00 64. Jak ustalić że po nagłówku ramki 50...
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ć...
Staram się zrobić obsługę PT6958 za pomocą bascoma - niestety brak specyfikacji ramki skutecznie mnie blokuje. Może ktoś robił już obsługę tego układu i mógł by się podzielić przykładową procedurą - bo sam to już raczej nic nie wymyślę. w załącznikach pdf do PT6958
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...
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......
W Bascom'ie jest biblioteka mmc.lib i nigdzie nie jest opisana jej konfiguracja jak i jej sposób użycia. Czy wiecie jak wysyłać i odbierać bajty przy użyciu tej biblioteki? Dodano po 3 Dokopałem się do czegoś takiego i co dalej....... $regfile = "m128def.dat" $crystal = 14745600 $baud = 115200 $hwstack = 150 'wartosc stosu $swstack = 150 'wartosc...
Witam, posiadam dwie atmegi8 sprzęgnięte ze sobą komunikacja za pomocą UART. Jedna atmega będzie zbierać informację z czujników i poprzez UART przesyłać bajty danych do drugiej atmegi której zadaniem jest wyświetlanie tych wartości na wyświetlaczu graficznym. Moja ramka danych składa się z dwóch bajtów, pierwszy z nich jest to bajt "adresowy" który...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Jeśli jest możliwość wykorzystania pinów uC dodałbym kontrole przepływu przez port sterując sygnały RTS/CTS portu COM co znacznie poprawi wysyłanie i odbieranie z portu bez potrzeby stosowania znaku na koncu wysyłanej ramki ;)
-w innych przypadkach powinna być usunięta. Nie. Właśnie przez to że usuwasz całą masz problem z odbieraniem. Przykładowo przyjdą dane: &HDD &H10 &H01 &Hxx &Hxx &Hxx &Hxx &Hxx &H90 &H10 &H01 &Hyy &Hyy &Hyy &Hyy &Hyy &H90 Czyli jakiś śmieć, i dwie poprawne ramki. Ty sprawdzisz że pierwszy bajty to nie są &H10 &H01 i ostatni (w sensie ostatni w ramce,...
Dane odbieraj w przerwaniu. Jak natrafisz na znaki "AT" to rozpoczynaj zliczanie 154 bajtów po czym ustawiaj flagę "Data_ready" czy jakąś taką i znowu czekaj na znaki "AT". A jak chcesz odbierać dane o rożnych długościach to czekaj na znaki "AT" i ustawiaj flagę po ich odebraniu. Tyle że odebranie poprzedniej ramki będzie wymagało pojawienia się początku...
Pomijając tragiczny kod zastanawiam się po co wysyłasz milion znaków, przecież w jednej ramce rs możesz wsadzić 255 różnych znaków, na tak prostą rzecz nie potrzebujesz takich ramek.
Zaproponowane zmiany nic nie zmieniły. Jak była obsługa 12bitów to procesor i tak rozpoznawał jaka to ramka za pomocą długości bitu startowego i dalej już "nie obsługiwał" części odpowiedzialnej za tą ramkę 12bit. Sprawdziłem i odbiera normalnie zawsze pierwszą ramkę, załączam ekrany oscyloskopu, drugi kanał jest wyzwalany flagą po odebranej ramce...
Ma ktoś jakieś pomysły jak to przeskoczyć? Zainstalować najnowszą wersje BASCOM'a (2.0.7.6.001) :). Tak z ciekawości uruchomiłem program na swoim zestawie, dane odbierał terminal. Za pierwszym razem skompilowałem program wersją 2.0.7.5.003, program wysyłał jedną ramkę (printbin) i stanął. Przy drugiej próbie użyłem BASCOM'a 2.0.7.6.001 i ramki zostały...
U mnie to działa na tej zasadzie ze procesor sobie cos tam wykonuje, jeśli nadejdą jakieś dane RFM12b generuje przerwanie i mikrokontroler odbiera cała ramkę. W tym czasie procesor nie może zajmować się innymi rzeczami.
W takim razie jak inaczej wykryć koniec ramki skoro na końcu zawsze jest co innego? A procedurę zapisu na kartę jak mam szybciej wykonać? Nadajnik wysyła ramki co sekundę i nie mam na to wpływu. A jak wykryć koniec ramki po znaku CR? Zrobiłem jak piszesz i dałem oczekiwanie na znak "$". Jest trochę lepiej ale i tak są błędne ramki.
To nie lepiej wysyłać z 3 LED, 3 kody RC5 i odbierać je 3 czujnikami?? LEDy podłączasz wtedy do 1 tranzystora a kody odbierasz poszczególnymi czujnikami. Układ jest wtedy nie wrażliwy na inne nadajniki IR ,takie jak np PILOTY. hyhyhy teraz to kolega zaszalał ;) - 3 diody nadawcze i aż 3 czujniki ;) szok. Toż już by można było sobie w głowie pomysł...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Witam, drogich forumowiczów. Mam problem z komunikacją kilku urządzeń w sieci rs485. A tak prawdę mówiąc to z komunikacją pomiedzy dwoma, jednym "master" i jednym "slave". Normalnie staram się zadawać pytania w ostateczności na forum Elektroda, ale po prawie 3 tygodniach siedzenia przy problemie, przeglądaniu masy poradników i postów związanych z rs485...
Witam Właśnie dla tego żeby długość ciągów w ramce była taka sama to wysyłam to jako HEX. Deklarując zmienną jako np. Byte zawsze dane w HEX bandą zawierały się w zakresie 00-FF. I tak dla przykładu: -dla 5 stopni w HEX daje 05 -dla 25 stopni w HEX daje 19 -dla 125 stopni w HEX daje 7D Jak z tego widać ramka nie ma prawa się rozjechać. Wysyłam i odbieram...
Let me google it for you: https://www.google.pl/search?q=uart+odbi...
A w jakim standardzie dane wysyła gps? Odbieranie danych ja robiłem na przerwaniach od uartu. Jeżeli gps wysyła dane w NAMEA to jak przyjdzie przerwanie to sprawdzamy czy odebrał znak '$' jeżeli tak to mamy początek ramki, potem sprawdzamy co to za ramka. Jeżeli nas interesuje ta ramka, to ładujemy ją do jakiegoś bufora i potem dopiero obrabiamy.
Witam! Koledzy mam takie pytanie. Jak najlepiej wysyłać przykładową ramkę 5AA50480030003 w bascom-ie.Obecnie robię to tak: Print Chr(&H5A); Print Chr(&HA5); Print Chr(&H04); Print Chr(&H80); Print Chr(&H03); Print Chr(&H00); Print Chr(&H03); Ramka jest wysyłana prawidłowo, urządzenie je odbiera. Czy jest jakiś sposób, aby to zoptymalizować, ponieważ...
Ten procesor ma sprzętowy port szeregowy więc zapewne "wyposażony" został w mechanizmy które czuwają nad wysyłanymi i odbieranymi danymi, a co za tym idzie zgłaszają odpowiednie przerwania w momencie odebrania/wysłania ramki danych.
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...
PIsałem wyżej, slave'y mogą odbierać spokojnie 3 bajty, analizować je, przygotować do wysłania całą ramkę. Bufor odbiorczy zrobisz tak duży , na ile starczy ramuw .
Wartość kwarców można wywnioskować z kodu. Oba to 8MHz. Czy duże zmiany w kodzie trzeba by było wprowadzić, żeby przesyłać dane z 2-3 czujników DS? Nie, trzeba by dodać pole w ramce informujące odbiornik z którego czujnika jest odbierany aktualny pomiar.
Powiedz mi dlaczego - skoro korzystasz z Bytematch to dajesz parametr ALL ??? a przecież piszesz że odbierasz swoją "ramkę danych" zakończoną znakiem chr(13)... I znowu mógłbym się rozpisać za długo jak warto podchodzić do transmisji danych przez RS232, że warto wykorzystać własnie znaki końca linii do wyłapywania zdarzeń, że warto wtedy ustawiać flagę...
UART sprzętowy odbiera ramki z modułu GPS ( Tx modułu do Rx AtMega32 ) i to działa. Działa do momentu gdy włączę UART sprzętowy ?
Twój program ma różne pętle Do...Loop_Until w których czeka na określone znaki. Jak one nie przyjdą to program utknie w tych pętlach. Najprościej się przed tym zabezpieczyć, i jednocześnie uprościć program, robiąc tak żeby odebranie entera resetowało odbieranie ramki. I dopiero po odebraniu tego entera to co się odebrało do bufora uznawać za ramkę....
no ale co ten przekręt ma na celu bo nie rozumiem ? toż za jego pomocą chyba nie da rady nic nadawać ???? tylko chyba odbierać i ew przełączać kierunek transcieverka .... chociaż i tak w hmmm troszkę nieszczęśliwy sposób to przełączanie będzie robione i czy wyjdzie w ogóle. Przecież gdy na Tx poleci ramka z różnymi wartościami bitów to nadajnik będzie...
Dzięki lecz - NIE ZDA TO EGZAMINU Ja odbieram dane z przedziału 0..255 Jak zastosuje twoje rozwiązanie to jak wystąpi mi w ramce danych znak 13 to program wykryje że jest koniec transmisji - 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
Koncepcja jest dobra, tylko szczegóły złe. W odbiorniku: 1. W przerwaniu odbieraj tylko jeden znak a nie dwa. 2. Nie używaj w przerwaniu i pętli głównej tych samych zmiennych dr1 i dr2 bo nie wiesz kiedy dane przyjdą. Albo daj jakiś znacznik. Zacznij od opracowania jakiegoś prostego protokołu (ramki) bo może się zdarzyć (a może nie) że nie otrzymasz...
Posiada też I2C i tym bym się zainteresował: Piny 8 i 9 to według rozpiski z datasheeta SDA i SCL (wtedy Vss i Vdd podpinasz pod 6 i 7 - tyle wynika z mojego pobieżnego spojrzenia na dokument). W BASCOM, z tego co pamiętam, odbieranie z I2C jest realizowane poleceniem I2CRECEIVE - otwierasz helpa i czytasz. Powodzenia :) A ten digital output przypomina...
Witam. Temat CANa wrócił:) Teraz zastanawiam się, czy można zrobić coś takiego, że układ będzie odbierał przychodzące ramki, a następnie wysyłał je dalej, oprócz jednej konkretnej, którą zablokuje? Układ będzie musiał być wpięty w sieć CAN w taki sposób, aby ją przerywał (między urządzeniem docelowym, a resztą sieci). Prawdopodobnie będzie trzeba podpiąć...
Bez problemu mozna zrobic obsluge klawiatury matrycowej, LCD, RS, ADC na jednym timerze + petla glowna a efekt sekwencyjnego wywolywania kodu jest i tak niewidoczny dla uzytkownika. Jak chcesz migac 3 diodami, np. 1 co sekunde, 2 co dwie sekundy, 3 co trzy sekundy to bez problemu zrobisz to na timerze wywolywanym co sekunde. A i tak jest to przerost...
Szanowni koledzy! Czujnik ozonu wysyła po UART taką ramkę FF 2A 04 00 00 3E 27 10 5D z czego FF to bajt startu 2A - rodzaj gazu (03) 00 - cyfry dziesiętne ( nie istotne) 00 - stężenie gazu - bajt starszy 3E - stężenie gazu bat młodszy reszta nie istotna (choć znana) Jak w Bascom odebrać te dane do tablicy zmiennych? Zwykle odbierałem cyfry dziesiętne...
Gdzie PDU ? Przyjrzyj się ramce jeszcze raz: +CMGR: <stat>,[<alpha>],<... Ano w następnej linijce, bo masz zwracane <CR><LF> Ponadto nie filtrujesz znaków <LF> co może ci nieco namieszać. Proponuję odbierać przy pomocy Input i bytematch tak jak ja to zrobiłem w moim projekcie,...
Komunikuje sie z poziomu terminala lub własnej aplikacji na PC z własnej konstrukcji sterowniczkiem załączającym przekaźniki na Atmedze 126. Jeśli wpisze do Ubrr i Ucsrc wartości ustawiające np 9600 bitów na sekundę to transmisja po rs232 działa, ale jeśli wprowadzę np. dla 2400 i innych czy nawet zmienię data bits 8 na nap 7 przy 9600 bitów na sekundę...
If Ucsra.4 = 0 Then ZbeeGin , dzięki za podpowiedź. Jeszcze mam jedno pytanie. W UART przy odebraniu 1-szego znaku jest generowane przerwanie Urxc. Mam coś takiego (okrojone dla idei): On Urxc Odbierz ... Odbierz: Inputbin Adr1 , Adr2 , Adr3 , Adr4 , Adr5 , Adr6 , Adr7 Return Czyli wychodzi na to, że Inputbin odbiera przychodzące bity, co powoduje...
Chodzi o to że zarówno wartość kodu jak i jego adres przyjmują odpowiednio wartości 25 i 1 i dzieje się tak nawet jak nie wyśle nic z pilota. Kiedy przycisnę przycisk na pilocie to proc odbiera te sygnały ciągle i pokazuje mi się na lcd:" kod 25 adres 1" (czasem sa inne wartości niezalezne od kodu przycisku). Czy ktoś może miał podobny problem? Dodam...
Petros :arrow: :idea: "w obsłudze zewnętrznego przerwania 1 napisałem kod który 256 razy co 100us sprawdza wejście PD3" ... ja na c też się mało znam jak narazie bo piszę tylko w asm lub bascom ale z tego co kolega pokazał - tą swoją procedurę - hmmm rodzi się szereg pytań, jak choćby: - a co z synchronizacją odbieranych kodów? gdzie jest wyłapanie...
Witam. Budujesz sobie ramkę która składa się z kilku bajtów danych i na przykład jeden z tych bajtów przyjmuje wartość 1 - znaczy A; 2 - znaczy B i tak dalej. kolejny bajt jest bajtem danych w którym przesyłasz wiadomość czyli to co ma być zapisane pod A,B, .... Mikrokontroler który odbiera dane sprawdza najpierw gdzie ma zapisać daną czy do A czy do...
Najlepiej wysyłaj określoną ramkę, np.: 0xFF hou minu sek t t1 (odpowiedni typ, jeśli nie jest 8 bitowy to go musisz "pociąć") 0xFF Odbierasz do tablicy w której elementy się przesuwają i co odbiór sprawdzasz czy pierwsza odebrana i 7. odebrana są 0xFF i w takim wypadku przepisujesz odpowiednie elementy tablicy do odpowiednich zmiennych. Da się to zrobic...
Obsługa UART jest przerywana TIMEREM i dlatego gubi znaki. Zrób odbiór UARTU na przerwaniach, odbieraj w nim tylko pojedynczy znak i ładuj go do bufora (nie czekaj w tej funcji,aż odbierzesz wszystkie znaki), a po odebraniu końcowego znaku ustawiasz flagę, że skończył. I w pętli głównej dekodujesz sobie na spokojnie tą ramkę. Popróbuj może jeszcze ze...
Witam, pokombinowałem i wreszcie działa. Niekiedy nie odbiera dobrze, ale to pewnie wynika z tego, że sygnał może być odbity i nie dociera cała ramka. [syntax=bascom]$regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Int0 = Falling On Int0 Rc5 Config Rc5 = Pind.2 , Wait = 12000 Dim Address As Byte Dim Command As Byte Dim Odebrano As Bit...
Tutaj masz kawałek z mojego nadajnika FrSky odbierający telemetrię odbiornika. [syntax=c] volatile uint8_t rx_buffor[9]; ISR(USART_RXC_vect ) { static uint8_t i=0; static uint8_t rx=0; uint8_t last_rx; last_rx = rx; rx = UDR; if(rx == 0x7E) // head or tail { i=0; if(last_rx != 0x7E) // tail { // analiza ramki rx_timeout=0; } return; } if(rx != 0x7D)...
tak wygląda sam kod do odczytu predkośći "trochę nie ogarnięty sorki" [syntax=basic4gl] $regfile = "m16def.dat" 'wew rezonator $crystal = 8000000 'jest włączony wew rezonator $baud = 9600 'szybkosc ibusa Config Lcd = 16 * 2 'używany wyświetlacz i piny do jakich jest podłączony Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7...
bascom odbieranie znaku bascom odczyt ramki odbieranie email
ustawienie krzywej vaillant logowa pulpit plazma koszt
sterowanie roletami zewnętrznymi schematy zafira
4Swiss Sienna 7 – menu serwisowe, wejście, funkcje, diagnostyka, kody błędów Marantz PM8000 – przekaźnik stand-by klika po włączeniu, TA7317P, zasilacz, DC na wyjściu