...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
Rozwiązanie jest proste :) Odbieraj 156 znaków. Po odebraniu znaku zwiększaj zmienną pomocniczą. Jeśli osągnie ona 156 to zakończ odbieranie. Użyj np. petli FOR..NEXT lub DO..LOOP UNTIL
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
Dzięki za chęci, ale nadal gubię początek ramki.. :(
Jak XX i ZZZ to znaki przedstawiające liczbę, i dodatkowo ilość znaków jest zawsze taka sama to masz cztery proste operacje: s=MID(<parametry>), x=VAL(s), s=MID(<parametry>), z=VAL(s).
To wiele wyjaśnia. Spróbuj tak ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 16 $framesize = 64 $baud = 9600 Config Lcd = 16x2 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.6 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5 Cursor Off : Cls Dim K1 As Byte Dim K2 As String * 20 Dim Id As String *...
Z tego co pamiętam to serial in i out używały programowego uarta co oznaczało mniej więcej tyle ,że jak nie czeka na znak to gubi to co dostaje . Dlatego podstawą jest sprzętowy uart obsługiwany w przerwaniach i w taki sam sposób zrealizowane sterowanie przełączanie sygnałów nadawanie , odbiór w konwerterze RS485. Uart generuje szereg przerwań informujących...
Dobrze, że chcesz to przesyłać w trybie tekstowym. Zatem od strony mikrokontrolera poczytaj sobie w Bascomie o poleceniach: Config Seriallin INPUT Config INPUT Ischarwaiting a także do operacji na łańcuchach znaków: MID LEFT RIGHT itp to powinno cię naprowadzić.
Ale mi nie chodziło o bufor programowy - AVR-y serii mega mają wbudowany bufor sprzętowy. Opóźnienie odebrania jednego znaku o kilka ms (w przypadku bardzo rozbudowanych procedur) nie powinno więc spowodować problemów
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.
Tak w Bascomie istnieje idealny sposób aby rozwiązać odbiór znaków przez RS232 (także nadawanie) - za pomocą przerwań. A kod zajmie kilka linijek. Wystrczy zapoznać się dogłębnie z takim poleceniem jak Config Serialin oraz wykorzystaniem np jednego z parametrów do tego polecenia - Bytematch (ale także innych) wtedy przy minimum wysiłku i kodowania będziesz...
Dlaczego odbierasz w pętli do loop ? Skoro używasz bytematch to czemu tego nie wykorzystujesz ? Gdzieś niedawno pisałem o tym. Możesz poszukać, bo tam zamieściłem działający kod. Tymczasem podpowiem Ci algorytm odbioru: W podprogramie Serial0charmatch ustawiaj tylko flagę. W pętli głównej sprawdzasz czy flaga jest ustawiona i jeśli jest to odczytujesz...
(at)Mat_91 Nadajnik wygląda ok. Tylko przy pierwszym ustawianiu ChkSum stosuj = zamiast +=. A więc nadajnik: RFXX_WRT_CMD(0x0000); RFXX_WRT_CMD(0x8238); RFM12b_send(0xAA); RFM12b_send(0xAA); RFM12b_send(0xAA); RFM12b_send(0x2D); RFM12b_send(0xD4); RFM12b_send(0x30); ChkSum=0x30; // zamiast...
pomożecie z tym odbiorem znaku zachęty?
To zależy co robisz w przerwaniach. Wysyłanie znaku z klawiatury zajmuje ok. 4ms. W przerwaniach obsługuję odbiór i nadawanie znaków przez uart i odczyt z ADC- i nic się jakoś nie psuje. Być może- jeszcze. Ale co ile Twój Timer0 generuje przerwanie- nie wiadomo- bo nie podałeś częstotliwości. I ile czasu zajmuje obsługa przerwania- też nie wiadomo....
eee tam. mi w bascomie 8051 nie chce działać przerwanie więc tobie pewnie też nie zechce. Co do wysyłania to ja bym to zrobił tak: print ">"; printhex zmienna_a; print "," printhex zmienna_b; print "<" lub: printhex ">";zmienna_a;","... spowoduje to wysłanie do portu czegoś...
Deklaruję zmienną jako bajt i jej wartość ustawiam na 0. Następnie wysyłam ją po rs232. Na terminalu ustawionym na odbiór stringów mam prawidłowo odebraną daną - czyli 0. Jak ustawię odbiór hex'ów to wyświetla mi 30 30 0D 0A. Jak jest ta dana konwertowana na hexa? Ona nie jest konvertowana na hex. Print służy do wyświetlania na terminalu więc wartość...
Dane na RS wysyła komenda print (program napisany jest w BASCOMIE). W przypadku terminala wszystko dziala ok i dane nie nadpisują się. Jak rozumiem każdy ze znaków składający się na string jest wysyłany na RS osobno. Czyli odbiór powinien wyglądać tak że`czekam na sześć znaków po wystąpieniu zdarzenia i dopiero zapisuję wszystko do RevS. Jeżeli to możliwe...
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...
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...
Przed włączeniem nadawania nawet nie trzeba czekać. Jak już to jakieś us dla pewności. Po nadaniu co innego. Wypadało by poczekać czas trwania jednego znaku. Bo wpisanie znaku do rejestru UDR rozpocznie nadawanie ale program od razu pójdzie dalej poza funkcje do nadawania (tak jak by nadanie już się zakończyło). Tak więc nie można od razy przełączać...
Witam. Chciałbym uzyskać efekt parametru echo on instrukcji input (mikrokontroler otrzymuje znaki po UART, i natychmiast wysyła je spowrotem) dzięki czemu na ekranie monitora portu COM będę miał wyświetlane wpisywane przez siebie znaki. Niestety używam konwertera http://obrazki.elektroda.pl/2797859300_1... Oczywiście w takim przypadku...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/
UART nie ma tutaj nic do rzeczy bo rozdzielić trzeba dane które już są w pamięci. Chodzi o BASCOMa w którym się ciężko pisze. I o niezrozumiały opis. A do tego nie bardzo rozumiem o jakie zera Ci chodzi. Bo z tego co napisałeś to wynika że Ty zamiast 32 to odbierasz 64 znaki. I do tego jakieś zera (których nie ma) Ci obcina. Może BASCOM to konwertuje...
po krótkiej kalkulacji wychodzi, że przy prędkości 9600 jeden znak wysyła się przez około jedną ms. W takim razie wysłanie 9 znaków (plus 2 na przejście do nowej linii) to ponad 10ms. Rozpisałem printa na składowe elementarne. Poniżej wysyłam toś takiego "A00000000<lf><cr>" Sub wyslij Portc.0 = 1 waitus 10 udr = 65 waitus dly udr = Pinb.7...
Możesz użyć Inkey. Tylko funkcja ta ma taką cechę że nawet jak nic nie ma w UDR to zwraca 0. Także najlepiej zrób to w ten sposób że najpierw sprawdzasz czy jest znak (Ischarwaiting) a potem jeśli jest, to odbierasz Inkeyem. Można też zrobić to w przerwaniu. Jeśli początek odbieranego tekstu masz stały to można też zrobić pętlę w któej ciągle pytasz...
Witam; przesiadłem się z Bascoma na język C i natrafiłem na problem. Mianowicie w Bascomie miałem pięknie działające programowe RSy. Tu ich nie ma i trzeba je samemu zaimplementować. Chodzi mi głównie o odbiór. Postanowiłem samemu napisać procedurę odbioru. Moja koncepcja blokowa jest następująca (dla transmisji 8n1): 1) Czekam na początek bitu startu...
Zdeklarowałeś uart jako programowy przez OPEN COMc.0 co oznacza że programowo MUSISZ czekać aż coś przyjdzie. Nie ma tak że program sie wykonuje i nagle odbierzesz sobie znak. Bo program MUSI czekac na poczatek znaku aby go odebrać. Ja ci dałem przykład ze sprzętowym uart. Czyli program się wykonuje, a procesor sam bez wiedzy programu odbierze znak,...
Sposób odbioru poprzez procedurę obsługi przerwania od URXC jest lepszy, ale: 1. Nie możesz przy wejściu do procedury obsługi przerwania kasować zmiennej Ciag_rx ponieważ przerwanie od URXC jest wywoływane dla każdego odebranego znaku; 2. Nie możesz w procedurze obsługi stosować Do...Loop ponieważ blokujesz odbiór i pętlę główną do czasu odebrania końca...
Dzięki. Spróbuję obu metod. A dlaczego w podprogramie jedynie ustawić flagę a całość operacji realizować w głównej pętli? Jaka jest zaleta tego rozwiązania a wady obsługi w podprogramie? Pytam gdyż pętla główna w docelowym programie będzie miała i tak co robić, więc nie chciał bym jej jeszcze dodatkowo blokować. Na razie problem odbiory kilku danych...
Po pierwsze - do "szlifowania" telegrafii Wg mnie tego akurat nie ma sensu wymyślać. Istnieje wiele programów na PC do nauki telegafii, gdzie ćwiczy się zarówno nadawanie (komputer "słucha" i ocenia), jak i odbiór (komputer nadaje, są nawet takie programy, gdzie dodawany jest szum i zakłócenia, np. G4FON, SP8QED). Poszukaj tu i na grupie 'pl.rec.radio.amatorskie',...
Jakaś masakra a nie kod. Gdzie niby masz zaimplementowany odbiór danych z UART? Jakim cudem chcesz wpisać do zmiennej String*1 (która nie może przechować nawet jednej litery, bo przechowuje tylko znak końca stringa) ciąg znaków? Najprościej kod transpondera zapisać jako tablicę 5-ciu bajtów. Potem masz tablicę z akceptowanymi transponderami (posortowanymi...
Witam! Mam kłopot z odbiorem danych z PC. Podłączam uC do PC + terminal i wpisuje ciąg danych r:122.g:144.b:125 i enter no i wszystko super bo diody przygasają, ale jest problem jak Podepnę pod linuxa i chcę wysłać w ten sposób echo "r:122.g:144.b:125" > /dev/ttyUSB1 i nic sie nie dzieje, wiec moje pytanie w jaki sposób wysyłać dane lub co zmienić...
Witam forumowiczów, Na wstępie proszę się nie denerwować: wiem że podobnych tematów było sporo, rozwiązanie podawane co najmniej kilka razy, ale ja mam tu złożenie jakby dwóch problemów. Pierwszym jest komunikacja z użyciem RS-232 i modułów radiowych HM-R/T868. Drugim odbiór więcej niż trzech znaków i zapisanie ich do zmiennej którą potem można by do...
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...
cichy999 --> jak jeszcze pisałem programy w Bascomie to spokojnie takie rzeczy robiłem. Bierzesz sobie np najnormalniejszego małego procka np ATtiny2313 (ma przecież nawet piękną sprzętową obsługę RS232), i przede wszystkim robisz w nim normalną obsługę LCD. Potem dopisujesz procedury do odbioru danych przez RS232 (może być tylko odbiór) Następnie wymyślasz...
Witam serdecznie, Czy już coś wiadomo na temat wysyłania i odbioru danych. Pozdrawiam
(at)MES Mariusz Oczywiście zawsze można wykorzystać jakiś tryb typu XMODEM, ZMODEM itd. Chętnie poczytam coś więcej w temacie XMODEM, ZMODEM w aspekcie bootloadera. Do takich zastosowań powinieneś napisać własny bootloader ze sterowaniem przepływem po rs 485 i dodatkowym zwrotnym raportem po zaprogramowaniu każdego pakietu danych i dla kontroli poprawności...
Aaaaa, Chr(0) to domyślny znak końca string'a w BASCOM'ie !
no i smutek... - wydaje mi się, że chodzi o pomoc, a nie o słowa czy nazwy :( ..a do tematu: sposób zapisu danych trzeba rozwiązać programowo: np. wpisujesz 1 ( i to jest tekst) - enter - wpisujesz tekst (trzebaby programem rozwiązać buforowanie tekstu dłuższego niż 16 znaków) - enter --> i do nadajnika --> wysyła to w postaci I bajt - procesor nr 1,...
Nie wszystko w tej chwili jest używane, bo to testy. Na przykład Dim Napis As String * 15 Const Koniec = &HFF itp. [syntax=vbnet]$regfile = "m8adef.dat" $crystal = 8000000 '---------------------------- $hwstack = 128 $swstack = 128 $framesize = 128 $baud = 9600 Dim Napis As String * 15 Const Koniec = &HFF '------------------- Declare Sub Oproznij_bufor...
https://obrazki.elektroda.pl/1149515200_... Zainspirowany tematem https://filmy.elektroda.pl/66_1548011230... Po kolejnych 2 godzinach nowsza wersja z nadawaniem/odbiorem znaków dodatkowych znaków jak ' " , . ; : (at) ! STAR, STOP itd. https://obrazki.elektroda.pl/7383325900_... Film https://filmy.elektroda.pl/4_1548011174....
Przy instrukcji Input "odebranie znaku <CR> (kod 13) kończy wprowadzanie danych dla bieżącej zmiennej." A co jeśli znak <CR> nie zostanie nadany? Wtedy program stoi i czeka!
Witam wszystkich. Mam urządzenie (AVR+bascom) które wysyła po rs'ie dane o ogólnie rzecz mówiąc stanie czujników, podzespołów. Dane odbierane w terminalu wyglądają jak poniżej: W:sterownik v5.14 - 05.12.11 U:6.12V I:42.0 H:poziomo - poza zakresem h:0 V:pionowo - poza zakresem v:0 V:pionowo - w górę v:9 U:6.15V...
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...
Witam Wykorzystałem do odbioru kod podany przez Kolegę Mirka [syntax=basic4gl] $regfile = "m168def.dat" $crystal = 10000000 'taktowanie procesora $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 10 ' rozmiar stosu $framesize = 40 ' rozmiar ramki $baud = 9600 ' predkość transmisji Config Debounce = 30 '********************* konfiguracja UART Config...
Witam Testuje termometr na dwóch Ds18b20 i żeby wynik wyświetlany był trzech wyświetlaczach 7seg. LED. Ma działać tak że najpierw pokazuje na 3 sekundy 1 temperaturę a po tym czasie na kolejne 3 sekundy pokazuje 2 temperaturę. Linie 1 wire podciągnąłem z rezystorem 3,3K do +5V. Wszystko działa temperatury się zmieniają i wyświetlają ale co jakiś czas...
oszukać czyli : gdyby dioda nadawała tylko daną częstotliwość to wtedy dało by się zewnętrznym źródłem światła ir (czytaj : złodziej który ma generator z diodą IR) oszukać barierę. Chodzi mi o to czy procesor jest w stanie nadążyć w bascomie z nadaniem i odebraniem sygnału w postaci RC5. nie nadajesz samej nośnej np. 36kHz, wtedy faktycznie taka bariera...
No i niestety nie działa. Pod INT0 i INT2 działa ale pod INT4 nie... Już mi się kończą pomysły.. Spróbuję jeszcze wyrzucić odczyt z przerwania i dać go w pętli. edit: Niestety nadal nie działa. Dodano po 1 Bardzo ciekawe zjawisko zaobserwowałem. Otóż dla testu skompilowałem program pod wersją 1.11.9.8 i odziwo odbiór RC5 działa poprawnie! Ale za to...
$crystal = 8000000 $baud = 9600 Config Lcd = 40 * 2 Config Serialin = Buffered , Size = 20 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Enable Interrupts Dim Command As String * 1 Dim Temp1 As Integer Dim Temp2 As Integer Dim Status As Byte Dim Numer As Byte Temp1 = 12.1 Temp1 = 30.1...
To co opisujesz.. to jaki ma cel? Tak ma być i to jest jakaś autobiografia? :D Wybacz moje poczucie humoru, ale nie widzę tu żadnego pytania. :D Nauczyłem się pisać programy jakby odwrotnie niż zakładałem to zaczynając coś pisać. Kiedyś pisało się wierząc że wszystko przebiegnie w najbardziej sprzyjających warunkach. Teraz piszę tak: Jeśli udało się...
Zawsze odbierasz przez UART dane binarne. Możesz je tylko sobie wyświetlić lub wypisać jako znaki, liczby dziesiętne lub szesnastkowe. Odbierasz bajty, masz z nich złożyć daną 16-bitową, np. tak: wartosc = bajt_mniej_znaczący + bajt_bardziej znaczący * 256
Witam! Czy z tego co piszesz moge mieć problem z przesłaniem: temperatury zewnetrznej znaku temperatury wilgotności ciśnienia i jeszcze temperatury nc CO - mam rację? Mam jeszcze jedno pytanie zwiazane z tym ukladem, a mianowice obecnie mój nadajnik opiera się na atmega 8 natomiast odbiornik na atmega 16. Niestety odbiornik jest zegarem z PCF8563 (który...
Jakież to przerwanie muli ci PC-ta mógłbyś rozwinąć ? Użyj zwykłego terminana od windows i zobacz co dostajesz, może masz niedopowiednie prędkości transmisji dla PC i uP ? Uzyj przerwania odbioru znaku z bufora UART nie będzie się nic mulić bo twój program większkośc czasu poświęca na oczekiwanie na odbior znaku z PC-ta. O I2C zapomnij bo nie masz takiego...
Działa!!!!!!!!! Zastanawiałem się czemu procesor próbował wyświetlać ciągle tę samą wysłaną zmienną jedną pod drugą i po wielu próbach i błędach znalazłem przyczynę. Mianowicie wcześniej myślałem że zmienna zdefiniowana jako: Dodano po 1 Nawet szybko mi poszło z tą kartą sd. :D Oto kod wysyłania z atmegi32 pliku *.txt z karty sd w którym zapisany tekst...
Mam taki kłopot; korzystam w programie z transmisji z PC do mikrokontrolera vis RS232 (Atmega 2561, sprzętowy uart, 115200 b). W tym celu używam funkcji SERIALIN z opcją BYTEMATCH (znak CR). Bufor o długości 200 znaków. [syntax=vbnet]' port szeregowy do komunikacji z PC oraz modemem GSM Config Com2 = 115200 , Synchrone = 0 , Parity = None , Stopbits...
String zakończony jest 0, a znak enter to 0x0D musiałbyś to rozwiązać
ale jak tam dodam czyszczenie bufora to on sie wyczyści przed wyjściem z programu obsługi przerwania..i nic się nie wyświetli raczej.. zależy mi na tym by wielkość bufora była na jeden znak. Chyba tak jest najlepiej ?
Witam Obecnie walczę z odbiorem danych przez UART. Całość działa, ale mam wrażenie, że odbiór danych powinien być inaczej. Chodzi oczywiście o to, że treść odebranego SMS jest w drugiej linii i używany do tej pory kod wyświetla to trochę dziwnie. Używam trybu tekstowego i odebrane SMS'y wysyłam od razu na UART. komenda muszę dwa razy zrobić Mid. Jeszcze...
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Ok. Znalazłem, mam tylko jeszce jedno pytanie. Bo program pisze na ATmega128 i korzystał będę z 2 UARTów czy odbieranie w przerwaniach będzię dla uart1 i uart2 czy tylko dla jednego?? Dokładnie wygląda to tak: UART1 wykorzystuje do komunikacji procka z PC (RS-232). UART2 wykorzystuje do komunikacji pomiędzy innymi urządzeniami (RS-485). Jak masz może...
Witam. Od pewnego czasu zajmuje się wykonaniem sterowania na mikro-kontrolerach AVR. Nadajnik pracuje na atmega 8 a odbiorniki na atmega 16. Mój system to zestaw 15 odbiorników i 1 nadajnika. Połączone jest to wszystko za pomocą magistrali RS485 za pośrednictwem Sn75176 z przełączaniem odbiór nadawanie. To tyle odnośnie układu docelowego. Do celów diagnostycznych...
Witam, Nie znam BASCOM'a ale procesory AVR oferują przerwanie w momencie odebrania znaku. Wykorzystaj przerwania i bedziesz miał daną w momencie odbioru, a w tym czasie program może wykonywać co do niego należy Pozdrawiam
Witam Testuję moduł GSM SIM800L. Chciałem, aby po otrzymaniu komendy przez SMS odsyłał zwrotny SMS lub wysyłał email z danymi. Najpierw "na sucho" klepiąc ręcznie linia po linii przez terminal uzyskałem pozytywne wyniki testów ( tzn. otrzymywałem SMS i email ). Nieco gorzej jest w przypadku podłączenia do Atmega328. Podsłuchując terminalem odbieram:...
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...
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
Jak pisze print "2" to oprócz liczby 2 wysyłasz też dwa znaki - CR i LF Jeśli chcesz wysłać tylko 2 to zakończ printa średnikiem, czyli Print "2";
Motam się znowu okrutnie z uartami. Mam dwa urządzenia i chcę aby w każdym nadawanie i odbieranie chodziło w przerwaniach. Urządzenia A odpytuje cyklicznie co kilka sekund urządzenie B. Całe odpytywanie polega na tym że: Moduł A wysyła poleceniem: Print #6 , "RED" ; chr(13) ; zapytanie o treści "RED" i na to zapytanie urządzenie B...
Poczytałem trochę mam kilka wniosków a mianowicie problemem nie jest warstwa fizyczna RS485 a warstwa protokołu. A także zdecydowanie powinienem zając się instrukcją Printbin a nie Print i muszę wysyłać dane typu byte a nie jak ja mam tu wyżej za pomocą znaków ASCII czy mam racje czy się mylę oświećcie mnie.
http://obrazki.elektroda.net/67_12744374... Witam! Chciałbym dziś pokazać urządzenie, które powoli i z bólami tworzyłem ostatnimi czasy. Inspiracją do ruszenia z pracami były zbliżające się urodziny narzeczonej, której chciałem podarować coś nietypowego, a jednocześnie praktycznego. A że nie może być chyba nic bardziej praktycznego i przydatnego...
Witam mam taki problem potrzebuję wysyłać przez port com danie w taki sposób, aby były one traktowane jako znaki ASCII bo tylko takie mogę poprawnie odebrać mikroprocesorem. Z tego co zauważyłem jedynym działającym w przerwaniu od UARTa poleceniem odbioru, w bascom AVR jest inkey a to odbiera tylko znaki ASCII :/ No i tu pojawia się problem bo o ile...
trochę dziwnie to robisz: czekasz na znak w buforze - to jest oki a jak masz to po kolei odczytujesz 6 znaków - i to już może być złe bo skąd wiesz że jak odczytasz pierwszy to masz już następny ? a co jak nic tam nie ma ? (np. przyszło mniej znaków) może lepiej by było za każdym razem sprawdzać czy coś jest
Generalnie mam ten sam problem. Modem reaguje poprawnie na wysyłane komendy ale nie odbiera potwierdzeń z modemu. Zuważyłem, że gdy zastosuję następującą procedurę uruchamiania to działa poprawnie: 1 zasilanie mikrokontrolera 2 odłączenie TxD modemu do kontrolera 3 zasilanie modemu (PWRKey do GND) 4 połączenie ponownie TxD modemu do kontrolera Dodano...
ja ci kolego nie podam gotowca z 2 powodów, bascom mnie zupełnie nie interesuje a druga sprawa ze net jest pełen przykładów. A różnica jest zasadnicza bo sprzetowa transmisja aby wysłać znak potrzebuje takich czynności jak ustawienie interface (predkość, polaryzacja sygnału) a potem tylko trzeba ustawić pin odpowiedziałny za sygna CS urzadzenia oraz...
Próbowałem jeszcze waitkey - efekt ten sam tyle że waitkey jak gsm już nie nadaje wiesza program... INPUT nigdy nie używałem. Wstawiłem teraz na szybko INPUT znak (w miejsce znak =inkey() ) Efekt jest taki że nie czyta nic. Cisza. Zmykam do pracy, może po południu coś jeszcze pogrzebie przed weekendem... Pozdro :)
witam up avr po odbiorze znaku przez uart generują przerwanie (rxc), czy w bascomie istnieje możliwość "sprawdzenia" przerwania od uarta? wiem że jest polecenie "ischarwaiting" jednak to polecenie musze umieścić w kodzie programu i sprawdzać nim czy w buforze odbiorczym jest jakiś znak, natomiast interesowało bym mnie jakieś przerwanie które przerywało...
...Albo wyrzuciś print albo przerwanie od serial... Albo ... troszkę pokombinować :D Wystarczy że się wie jak działa proc i Bascom ;) W zasadzie wszystko opisał szymtro , więc skupię się na programiku $large $crystal = 11059200 '$regfile = "420.dat" 'DS89c420 $baud = 19200 On Serial Seriall ' odebrany znak Dim Uli As Byte ' odebrano znak...
OK właśnie ukończyłem testy moduł =>FT232=>terminal i jest ok wysyła smsy, na szybko napisałem coś takiego na procka i mi nie wysyła [syntax=vbnet] $regfile = "m644pdef.dat" ' specify the used micro $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 200 $baud = 19200 Dim Komunikat As String * 80 Dim Numer_telefony As String * 9 Komunikat =...
Tu poniżej jest nieźle namieszane '*********************** Obsługa bufora UART Serial0charmatch: Flaga_rs = 1 Return Odbiór bufora i przepisanie do zmiennej Tx powinien zostać wykonany w całości w tym przerwaniu, a nie ustawiana flaga że coś jest w buforze a potem dopiero za jakiś bliżej nieokreślony czas odbiór. A co będzie jeśli zostanie zasygnalizowana...
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...
Napisałeś że musisz przesłać / odebrać 4 bajty, więc pomyślałem że INPUTBIN będzie dobre. Czy wysyłasz znak początku ramki? Jak wykryć znak końca ramki? Ja bym to zrobił w przerwaniu URXC, sprawdzając co przyszło do bufora UDR, jeśli nie jest to znak końca ramki to dopisywałbym to do wielobajtowej zmiennej, jeśli natomiast byłby to znak końca ramki...
A skąd pewność, że 'T' zostało wysłane? Może zamieść jeszcze źródło z drugiego urządzenia. Dodano po 47 Nie liczyłem ile czasu zajmuje wysłanie tych danych Dane_wys, policz ile to będzie ms i może w tym leży problem, że jest to dłużej jak 20ms. Wysłanie 30 znaków 8bit (1bit startu i 1 bit stopu) po 9600 daje dokładnie 30ms. Czyli wysyłając te paczki...
Nie właśnie w terminalu jest ok, tzn. na początku są jakieś śmieci, ale później za każdym razem mam prawidłowe i te same dane zaczynające się od "BOOT: R1C..." tak jak na tym screenie w poprzedniej wiadomości. Czyli tutaj jest ok i to urządzenie które podpinam do portu RS232, widocznie tak ma, że na początku wysyła śmieci ale już potem są prawidłowe...
Jak sobie z tym poradzić aby program nie czekał tej minuty na zmienną? Użyj funkcji Ischarwaiting() : nie bardzo działa bo tylko jedna zmienna Ts wygląda jak powinna a reszta jest z jakimiś śmieciami. W Bascomi'e jest możliwość zdefiniowanie bufora pierścieniowego dla przychodzących danych, do odbioru bajtów wykorzystane jest przerwanie USART. [syntax=basic4gl]Config...
Witam, próbuję wykorzystać UART1 do odbioru danych przy użyciu bufora ponieważ w docelowym układzie nie mogę czekać na odbiór przez input. Zmienna _rs_tail_ptr1 określa gdzie znajduje się ostatni znak w buforze. Postanowiłem ją wykorzystać, po odebraniu mojej ramki chciałem wyczyścić bufor. Według helpa można do tego wykorzystać komendy inkey lub input,...
BlueDraco - można ale jemu to się nie opłaca. Chce zrobić kostkę, w zasadzie to już ją ma i nie będzie siedział 6 lat nad poznaniem nowego procesora. elektronic - Twój program można uprościć (wywalenie CASE i małych tablic) ale skoro ci działa co masz to zostań przy tym. Więc weź 2 procesory, to wcale nie jest wstyd i też bym tak zrobił. Tyle że ja...
Witam, Chciałbym dokonać transmisji przez port szeregowy Atmegi. Niestety ciągle otrzymuje krzaki na terminalu. Czasami są to krzaki czasami inne litery, a niżeli te wysłane programem, często w terminalu pojawia się błąd frame error. Co lepsze program działa na symulatorze bez problemów... W tej chwili stosuje kod rodem z datasheet Atmegi: #include...
Witam Używam uP 89s52 w połączeniu z FT232RL, kwarc 11059200 Hz, praca z prędkością 19200 asynchroniczna, wyświetlacz 240x64 graficzny oparty o T6963. PC nawiązuje połączenie z uP i wysyła to co akurat wpisuję w terminalu ale po 2 nieraz 5 lub 7 (i wielu różnych innych kombinacjach z przedziału tak do 10) wpisanych i wysłanych znakach tak jak by się...
Tylko uruchom transmisję o takiej prędkości na takim procku za 5 zł tak aby jeszcze można było go do czego innego wykorzystać :) , bo to że teoretycznie transmisja jest do uruchomienia to nie znaczy że uda ci się coś zrobić w tych np 130 cyklach maszynowych coś zrobić. No chyba że rozpędzisz 8-bitowca do 60 MHz :). Co do filmiku. Robi wrażenie - możliwe...
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....
właśnie dlatego nie chce korzystać z DEBOUNCE bo później mogę mieć problemy odnośnie biblioteki to mi sie ona nie przyda bo tylko przyspiesza transmisję między wyświetlaczem a to mi nie pomoże bo znaki nadal będą migać i nic nie będzie widać może za pomocą LOCATE jakoś sobie poradzę Bardziej martwi mnie liczenie tych impulsów nieszczęsnych już nie wiem...
No i przedobrzyłem Dokonałem optymalizacji kodu, oszczędzając kilkanaście procent pamięci FLASH, ale... sygnał z pilota NEC ( takie małe płaskie na baterie pastylkową ) przestał być odbierany - brak jakiejkolwiek reakcji na naciśnięcie przycisku w pilocie. Poniżej kod: Print Command w przerwaniu Infrared , żeby sprawdzić, czy coś odbiera - reakcji brak,...
Witam zakupiłem nadajnik i odbiornik (rr3,rt14) podłączyłem pod atmegi poprzez rs-a(uarta).Jedna atmega to termometr króry wysyła temperature a druga atmega ma odbierać i wyświetlać na LCD. Testowałem programy przy połączeniu kabelkiem i wszystko było ok gdy mam podłączony nadajnik rt14 i odbiornik do drugiego układu to wyświetlacz pokazuje za każdym...
Zamiana wyświetlaczy nic nie daje, zamieniałem nawet same kabelki łączące je z płytką i też nic. Jeśli chodzi o przerwania to mam odbiór danych z RFM12 oraz obsługę klawiatury na PCF8574. Może faktycznie coś na rzeczy z tymi przerwaniami. Wyświetlacz, który nie działa jak trzeba oprócz wyświetlania daty, godziny oraz części odebranych danych wyświetlać...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
Witam Do istniejącego i działającego "urządzenie" chciałem dodać możliwość odbioru, parsowania i odesłania SMS'a zwrotnego z danymi. Cały kod: Linia1 - to wyświetla Uart_numer - Linia1 Linia2 - to wyświetla Komanda - Linia2 czyli działa OK Ale jak podepnę modem GSM ( SIM900D ) to Uart_numer jest puste, a Komanda pokazuje ( czasem ) jakieś teksty z pierwszej...
Mam problem z odbiorem danych z rc5. Kiedy uruchomię program demostracyjny rc5 z help'a bascom avr to wszystko dział poprawnie. Jeśli wkleję obsługę rc5 w istniejący program, to powstaj problem, procesor odbiera tylk dane 255 i 127. Może ktoś zna rozwiązanie tego programu. Poniżej zamieszczam kod mojego programu. $regfile = "m128def.dat" $crystal =...
odbiór znaku rs232 bascom odbieranie znaku bascom odbiór danych
bezpiecznik dmuchawy termiczny gwarancja tabliczka znamionowy front szuflada zdjąć
Nikon SB-700 nie włącza się - przyczyny i rozwiązania Smarowanie amortyzatorów 80N 132255333 w pralce Electrolux