...a tak z ciekawości zapytam jak długi zadeklarowałeś ten string LINIA ??? skoro jak rozumiem obsługujesz zapewne SMSy. To chyba długość co najmniej 160 hmmm ??... U mnie , zmienna Line ma rozmiar 30B , ponieważ pobieram do niej tylko ... jakby tu powiedzieć ... mnemoniki komend AT i ich parametry , a SMS-a dekoduje "w locie" , w czasie przerwań od...
Tak, są to znaki NULL (o kodzie ascii 0). Są na pewno nadawane, ponieważ mam jednocześnie uruchomione dwa odbiorniki - jeden podłączony do mikrokontrolera, drugi przez przejściówkę USB-UART do komputera. Wszystkie transmisje obserwuję jednocześnie w terminalu i w urządzeniu odbiorczym. Kombinuję i kombinuję... Doszedłem do takiego rozwiązania: [syntax=basic4gl]...
Możesz zrobić co chcesz byleby polecenie Config 1wire było już po konfiguracjach portu. Co do UARTu to też nie ma znaczenia, bo jeśli Bascom wykryje użycie w kodzie Config Serialin/Serialout lub nawet samo użycie Print to kompiler ustawi je sam automatycznie.
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..)
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 ........
Do czyszczenia bufora można użyć: [syntax=basic4gl]CLEAR SERIALIN[/syntax]
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
Wskazówki : [syntax=basic4gl] Config Serialin = Buffered , Size = 254 , Bytematch = All Enable Serial Enable Interrupts Serial0bytereceived: Return [/syntax]
:arrow: CONFIG SERIALIN, CONFIG SERIALOUT.
Nic nie musisz (jeśli chodzi o Bascom - sam robić w przerwaniu) Bascom ofruje ci za free - pełną sprzętową obsługę RS232. Zapoznaj się tylko z poleceniem Config Serialin oraz z parametrem Bytematch tego polecenia - a wszystko stanie się jasne. Nic nie będziesz musiał sam oprogramowywać w przerwaniu bo to jest bez sensu. po prostu będziesz wysyłał paczki...
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, chce uruchomić transmisje szeregową na podanym w tytule uC i tutaj napotkalem na problem, poniewaz dokumentacja do 48 jest bardzo uboga :/ Zaimplementowalem cos, ale nie dziala. jaka uboga? o czym ty mówisz ? skąd ty takie ubogie dokumentacje bierzesz? wejdź na stronę www.atmel.com i pobierz z tamtąd pełną notę PDF do jakiego zechcesz tylko...
Witam Wie ktoś może (no może poza datasheet-em :D ,gdzie nie znalazłem lub przeoczyłem ) w jaki sposób czyścić "ręcznie" bufor wejściowy i wyjściowy danego uarta? Czy instrukcja : _RS_BUFCOUNTR4=0 załatwi sprawę? Czy można ręcznie czyścić każdy z buforów wejściowych i wyjściowych dla każdego uarta z osobna? Jak to z tym jest? Na pytanie z pierwszego...
EEEEEEEj kolego - teraz to żeś zamieszał ;) .... sorki że się uśmiecham ale to nie z ironii tylko z pomysłowości ;) A co ma piernik do wiatraka czyli co ma jakieś INT2 do UART1 ???? no jak można tak odczytywać znaczenie opisu różnych funkcji nóg procesora To tylko oznacza, że ten pin może pełnić rolę albo zwykłego pinu I/O albo rolę RxD1 (czyli wejście...
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
A teraz jeszcze pytanie z innej beczki. Procesor steruje pilotem RC5 na przerwaniu INT0, chciałbym jeszcze dodać obsługę RS232 ale nie chcę żeby ciągle było sprawdzane czy coś jest przesyłane bo to mi tylko spowolni program, czy jest możliwość wykrycia ze jakieś dane dochodzą do procesora i wtedy ustawienia flagi po tym będzie wykonany odbiór danych...
Witam, zanim zabierzesz się za pisanie własnej obsługi przerwań do RS232 w Bascomie, to może najpierw spróbuj zrobić to w oparciu o dobrodziejstwa jakie daje ci Bascom. nie znasz poleceń INPUT , INKEY czy PRINT ???? do tego jeszcze może Config Serialin bo w powyższym kodzie odstawiasz niezły "miszmasz" i nie ma co się dziwić, że ci nie działa. Oczywiście...
Spróbuj: Config Serialin = Buffered, Size = 10
Poczytaj o instrukcji Config Serialin. To jest bufor wejściowy w USART w bascomie.
Ma się dobrze jeśli ma odbierać dane z bufora. Jeśli Twoje Print Komenda ; Chr(13); zmieniłbyś na Print Komenda To z powodzeniem mógłbyś odbierać w przerwaniu Pozostało by ci tylko ustawić: Config Input = Crlf , Echo = Crlf Config Serialin = Buffered , Size = 80 , Bytematch = 13 a przy odbieraniu: Input Odczyt Noecho
Bez zmian. Wydaje mi sie, ze trzeba konfigurować serialin oraz serialout ale nie wiem jak. Ktoś pomoże?
Ischarwaiting() działa tylko w połączeniu z Config Serialin = Buffered i do tego Enable Interrupts .
Miże to pomoże: Config Serialin = Buffered , Size = 200 Size ustala wielkość bufora.
Nie wiem czy będziesz mógł ustawić Timeout bo jest od wersji 2076. Najwyżej zakomentuj. Reszta powinna działać. Poczytaj o "Config Serialin" i "Ischarwaiting" Tak dokładniej to Input czeka na Enter albo na to co ustawimy żeby czekał (Config Input) Jak Enter nie nadchodzi z powodu jakiegoś błędu to przydaje się Timeout. Najczesciej odbieram dane po jednym...
Np za pomocą config serialin opcja Bytematch. Ustawiasz np. na 13 i masz wykrywanie kiedy nadchodzi znak "enter" czyli CR W zależności też czy razem ze znakiem CR masz też LF to ustawiasz sobie już w config Input. Teraz nie mam możliwości sprawdzić ale czy "config serialin" działa z programowym com-em ?
Zastosuj bufor: Config Serialin = Buffered , Size = 100 enable interrupts A oczekiwanie na znak zrób: Bufor_flaga = Ischarwaiting() : If Bufor_flaga = 1 Then Gosub Odbierz_uart Następnie procedura odbioru danych: Odbierz_uart: Bufor = "" Do Bufor_znak = Inkey() Bufor = Bufor + Chr(bufor_znak) Bufor_flaga = Ischarwaiting()...
Niby odbiera. Niestety jak używam przerwania Urxc nie mogę używać bufora wejściowego(Serialin.....). No nic, napisze go samemu. Zobaczymy co z tego wyjdzie.
Bo pierwszy kod jest logicznie błędny. Do stringa dodawany jest znak entera, a nie powinien. Poza tym skoro i tak czekasz na enter to dlaczego nie użyjesz input ? A tak poza tym to proponuje robić odczyt w przerwaniu. Polega to na odpowiednim skonfigurowaniu "Config serialin" i jego opcji BYTEMATCH.
To nie jest konfiguracja sprzętowego UARTu tylko programowego. Sprżetowego nie trzeba konfigurować. Użycie Print,Inkey,Input bez numeru kanału domyślnie używa sprzętowego Uart. Jedynie można sobie ustawić bufor wejściowy i wyjściowy poleceniami Config Serialin/Serialout
kiedyś też się męczyłem i doszedłem do tego $baud = 9600 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 64 Config Serialout = Buffered , Size = 64 Print "COM1 INT : DONE" $baud1 = 9600 Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1...
Witam, Co może być przyczyną zmiany szybkości transferu ? Mam AVR przestawionego programowo na 4MHz, fragment kodu: [syntax=basic4gl]$regfile="m328pdef.dat" $crystal=4000000 $baud=19200 CLKPR=128 CLKPR=1 ' 8MHz -> 4MHz Config Serialin=Buffered ,Size=22 ,Bytematch=13[/syntax] a Bascom sam przestawia niepotrzebnie U2X0 na 2x czyli 38400.
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...
mirekk36 . Na razie nie wiemy jakie kolega ma długieee te transmisje danych. RAM nie jest z gumy, a powinno jeszcze starczyć na całą masę zmiennych i trzy stosy, a zwłaszcza na HWStack, który by tu mocno puchnął. Kolega używa GETRC5. Nie zapominaj o nim, bo połączenie przerwania z INTx (słynne GETRC5 w przerwaniu) + dwa z USART-u (via bufor SERIALIN)...
Witam Odbieram pakiet danych (dokładnie 11 bajtów) przez sprzętowy RS232 z prędkością 38400 (uP ATMEGA 128L kwarc-8MHz) w Bascomie: Config Serialin = Buffered , Size = 7 . . . Odb = Ischarwaiting() If Odb <> 0 Then For L = 1 To 6 Y(L) = Inkey() Waitms 7 Next L Y(1) = Asc(y(1)) Y(2) = Asc(y(2)) Y(3) = Asc(y(3)) Y(4) = Asc(y(4)) Y(5) = Asc(y(5))...
A po co wogóle kol. Stepel pisze sobie bufor we własnym zakresie, skoro jest coś takiego jak CONFIG SERIALIN, działający na przerwaniach. Potem trzeba tylko umiejętnie wykorzystać INKEY() i ISCHARWAITING().
Nawet w tak krótkim kodzie masz nieszły bajzel. Deklaracja zmiennej gdzieś między deklaracjami przerwania. Najpierw włączasz globlane przerwania potem dopiero poszczególne sygnały (a powinno być na odwrót). Nie CONFIG PORT tylko CONFIG PIN jeśli chodzi o jeden pin portu B. Co dalej? Pętla DO ... LOOP + END w której będzie główny program, oraz kod obsługi...
Acha no tak, za szybko napisałem. Wszystko przez to, że WAITKEY() czeka na znak - zatrzymuje program. W takiej sytuacji trzeba użyć INKEY(), ale wcześniej sprawdzać, czy jest odebrany jakikolwiek znak. Dodatkowo zastosowałbym buforowanie transmisji. CONFIG SERIALIN = BUFFERED , SIZE = rozmiar (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics,...
Ustawiłeś w programie bufory? Config Serialout = Buffered , Size = ? - liczba znaków Config Serialin = Buffered , Size = ? - liczba znaków
Ł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....
Tych znaków jest trochę więc proponuję bufor wejściowy. Wyświetlacz przyjąłem 16*2: $crystal = 4000000 $baud =4800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6 Config Serialin = Buffered , Size = 32 Dim Znak As Byte Dim I As Byte Cls Enable Interrupts I = 1 Do Do...
Czemu w nadajniku komfigurujesz bufor wejsciowy? Po co wogole to konfigurujesz? Kolega mógł po prostu się pomylić, i zamiast CONFIG SERIALOUT napisał CONFIG SERIALIN. Przy wolnych prędkościach transmisji lub przy wolnym zegarze kontrolera tak jest nieco lepiej.
Witam. Mam mały problem z przepisaniem wartości z DANE do zmiennej CZAS. Potrzebuję by po odczycie z UART wartość CZAS=DANE. Oczywiście żle to robię bo BASCOM pokazuje błąd. [syntax=vbnet] Config Serialin = Buffered , Size = 4 Enable Interrupts Declare Sub Kas_bufor Dim Uart As String * 1 Dim Buf As Word Dim Dane As String * 4 Dim Czas As Word Cls Locate...
Czy w Bascomie da się je prawidłowo wysterować? deklaruję tak: [syntax=basic4gl]Config Serialin = Buffered , Size = 20 'konfiguracja RS232 (linia buforowana baud 9600) Config Serialin1 = Buffered , Size = 20 'konfiguracja RS485 (linia buforowana baud 9600) $baud = 9600 $baud1 = 9600[/syntax]
na początek zobacz sobie jak wygląda ta ramka gdy przychodzi do zwykłego terminala w komputerze PC. prawdopodobnie na końcu tej ramki masz jeszcze znaki CRLF ale może się okazać że ich nie masz albo masz tylko CR wtedy trzeba przekonfigurować CONFIG INPUT aby reagowało na samo CR na końcu a jak nie ma ani CR ani CRLF to trza samemu kombinować właśnie...
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...
Oooops! sorki nie zauważyłem tej linii Config serialin - a masz rację to jest buforowanie sprzętowe w bascomie i to buforki cykliczne .... Spróbuj może z dużo większym buforem niż 255 bajtów - masz przecież w m32 sporo RAM'u
Poczytaj dokładnie angielskiego helpa o config serialin. Jak już zrozumiesz to sam się zdziwisz, że to takie proste. Bo wystarczą nawet tylko dwie linijki kodu by odbierać z Uarta. Mala podpowiedź: Serial0CharMatch
$regfile = "m644def.Dat" $crystal = 16000000 $baud = 19200 '$baud #1 = 19200 $hwstack = 128 $swstack = 100 $framesize = 100 Config Serialin = Buffered , Size = 200 Config Serialin1 = Buffered , Size = 200 Przy dodaniu ostatniej linijki wyrzuca błąd 117
chyba wiem w czym problem z tym błędem przy próbie kompilacji "Config Serialin = Buffered , Size = ..." Proponuje zainstalować demo lub zakupić oryginalny kompilator :), bo na z c r a c k ' owanej wersji tak się dzieje
No teraz patrząc na kod to można od razu powiedzieć, że wszystkie twoje problemy i całe zło działania kodu, że tak powiem, wynikają z tego sposobu odbierania danych przez RS232 :( Pętla Do Loop w przerwaniu to samobójstwo i to jeszcze takie okrutne :( tym bardziej, że w Bascomie masz pięknie akurat zrobioną obsługę RS232 na przerwaniach i z buforami...
Dodatkowo w Bascomie bardzo łatwo zrobić bufor danych, pogoglaj na temat poleceń Config serialin oraz Config serialout .
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
Manual BASCOM-a, w opisie instrukcji SERIALIN mówi że bufor danych wejściowych przechowywany jest w wewnętrznej tablicy bajtów _RS232INBUF0 . Oprócz tego są dwa wskaźniki, na początek tych danych oraz na ich rozmiar. 'Using the CONFIG SERIAL=BUFFERED, SIZE = 10 for example will 'use some SRAM memory 'The following internal variables will be generated...
Config Serialin = Buffered , Size = 80 Enable Interrupts Dim _Flaga_1s as Bit _Flaga_1s = 0 Config Timer1 = Timer , Prescale = 64 Enable Timer1 : On Timer1 Co1s Cls Do If Ischarwaiting() = 1 Then Znak = Inkey() Print Chr(znak) ; End If if _Flaga_1s = 1 then ' ------> a tutaj wyświetlaj już sobie spokojnie co chcesz co...
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, Zrobiłem sobie układzik GSM modul udostępniony na forum przez kolegę Xury. Używam telefonu Simens s55 do komunikacji i mam pewien problem z którym nie mogę sobie poradzić. Powiem co działa: układ wysyła sms i dzwoni na podany/podane numery w eeprom po wykryciu alarmu. Nie działa mi natomiast wykonywanie poleceń za pomocą otrzymanych smów: ZAL,...
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...
... 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
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]
Witam! Mam problem z tym co pojawia się w mikrokontrolerze ATmega32 a konkretniej na wyświetlaczu 4x20, skąd się bierze znak zero na końcu? Wprowadzone najważniejsze dane do programu w Bascomie: Config Serialin=Buffered Size=5 $baud=9600 $crystal=8000000 dim znak as string*5 Input znak Lcd znak wysłane dane z Visual Basic to: COMM.Output="ON01" &...
zmienna a,oraz zmienna c musi być typu volatile - to dotyczy programu w C. W bascomie to program musi mieć buforowanie włączone.Inaczej znaki ci uciekną zanim je zauważysz (poczytaj o config serialin bufered).
: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 {...}...
Compiler --> proponuję żebyś najpierw potrenował sobie samą transmisję RS232 bez użycia modułu BT - bo w twoim przypadku - winę za dziwne zachowania, które opisujesz nie ponosi moduł BT - tylko napisany przez ciebie soft. On tak samo by źle działał na kablu. Nie stosujesz buforowania sprzętowego - to twój podstawowy problem a Bascom ma piękne i proste...
Analizowałem dla innego kolegi mój program w którym stosuję UART. Widzę, że na początku odblokowałem globalne przerwania z adnotacją jak niżej. Enable Interrupts 'Przerwania od UART zaszyte w Bascomie Wstaw może tą linię w swój program. Poczytaj help'a - CONFIG SERIALIN
$crystal = 8000000 'częstotliwość kwarcu $baud = 38400 Dim Zmienna As Byte , Zmienna2 As Integer Dim Ignorowane As Byte , Id As Byte , Dane As Byte Dim A As Byte , B As Byte 'Config Serialin = Buffered , Size = 20 Zmienna = 5 Do Waitms 500 Cls Lcd Id ; " " ; Dane ; " " ; Zmienna ; " " ; B Inputbin Id , Dane , Zmienna ,...
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 serdecznie!!! Od długiego czasu walczę z Bascomem Atmega 128 i Uartem. Wysyłam komendy AT do modemu GSM i odbieram odpowiedzi. Wszystko jest ok, chodzi bez problemu tak z jakieś 2-3 (różnie to bywa) godziny a później ni z gruszki ni z pietruszki zaczynają sie śmiecie. Odpowiedzi wyświetlam na LCD. Bascom wersja 1.11.9.1 Oto część kodu odpowiedzialna...
Nie rozumiem za bardzo co masz na myśli żeby programy działały przy różnej prędkości ;) ? ..... toż ideą działania RS232 jest to że dawa urządzenia, które ze sobą "gadają" po RS232 MUSZĄ !!! mieć ustawioną taką samą prędkość ;) - nie ma że boli - tego nie przeskoczysz. Przy różnym taktowaniu za to możesz spokojnie ustawiać różne prędkości ale tylko...
Declare Sub Get_th(t As Word , H As Word) Config Serialin = Buffered , Size = 128 Config Serialout = Buffered , Size = 128 Dht_put Alias Porta.1 Dht_get Alias Pina.1 Dht_io_set Alias Ddra.1 Dim Crc As Byte 'zmienna do przechowywania bajtów parzystości Dim Mybyte As Byte 'zmienna do obliczania bitu parzystośći Dim Sensor_data As String * 40...
Ja robie to w ten sposób: Ustawiam buforowanie: Config Serialin = Buffered , Size = 150' ilość odbieranych znaków Enable Interrupts' trzeba zezwolić na przerwania W pętli głównej daje warunek: B = Ischarwaiting() If B = 1 Then Gosub Odbierzuart A dalej procedura odczytu: Odbierzuart: C = "" Do A = Inkey() C = C + Chr(a)...
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...
ale po co bawisz się w odbieranie waitkey??? już pisałem wcześniej: 1. Utwórz sobie (sprzętowo obsługiwany) bufor wejściowy dla RS232 - za pomocą Config Serialin 2. Potem używaj gdzieś w kodzie (w pętli głównej czy gdzie chcesz) polecenia Ischarwaiting - aby dowiedzieć, się czy czeka coś na ciebie w buforze 3. Jeśli coś jest w buforze to odczytujesz...
Bytematch znajduje sie na stronie http://avrhelp.mcselec.com/ pod config serialin , zastosowałem inny patent "case" zaczerpnięty od xury , jeszcze pracuje nad ukończeniem programu ale pomysł trafiony . Co do Bytematch nie zabardzo mogę to powiązać z przerwaniami
Witam Chcę napiszać taki programik: Const BajtStart = 10 Const BajtKoniec = 13 Dim A1 as Byte Dim A2 as Byte Dim A3 as Byte Dim Buffor(16) as Byte Do ... Inne instrukcje co się wykonują Zajmują np. 3min Po czym chcę jak się zakończą to połączyć się z PC i pozmienniać zmienne programu i tak w pętli ... Call Czytaj_RS232 Loop Sub Czytaj_RS232...
Witam. Wiem o tym co napisałeś, ale przed input jest sprawdzane czy jest co pobrać (ciąg zakończony LF) i jeśli jest co pobrać to jest pobierane w całości (jako string). A działa to tak: - zbiera się znak i jest zgłaszane przerwanie - kolejne znaki trafiają do bufora - jeśli ostatni znak jest LF (10) to jest wystawiana flaga że jest cała ramka to jest...
Wyczytałem, że do sterowania zestawem startowym modułu potrzebuje całego rs232 8 linii. no tak, czytanie instrukcji i not zawsze na końcu a potem nie dziwne, że nie działa ;) skoro już jednak coś wyczytałeś to poczytaj dokładnie jakich linii potrzebuje - tzn których sygnałów sterujących i czy to jest jedyna opcja - bo aż mi się wierzyć nie chce Dodano...
Niestety pomimo wielokrotnych prób nie udało mi się uruchomić układu. Pomiędzy TXD atmegi a RXD telefonu dałem rezystor 260 Ohm oraz diodę zenera 3V9, a program w bascomie jest następujący: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Do Print "ATE0"...
Z tego co wiem to wystarczy linia Config Serialin = Buffered , Size = x i Enable Interrupts i w symulatorze działa odbieranie komend a w rzeczywistości nie :/, co dziwnego jest też że raz odbierał dane przez chwile, potem odłączyłem zasilanie i znowu podłączyłem i już nie działało :/
probowalem tak i tak ,i nic nie daje ;) na szybko sklecilem pod atmege program w bascomie... $crystal = 8000000 $baud = 9600 Config Serialin = Buffered , Size = 100 Config Lcd = 16 * 2 'LCD Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2 Dim Znak As String * 1 Waitms 100 Print "AT"...
I to jest problem ?? Czyż pusty wiersz to nie jest CRLF ? Poczytaj angielski help o Config input i ustaw CRLF Po drugie aby odebrać drugą linie możesz zastosować tak Input Todczyt noecho 'ta pierwsza nie potrzebna pusta Input Todczyt noecho 'ta druga z danymi co Ci są potrzebne do parsowania I już masz swoje dane :) Po drugie po co Ci podprogram "czysc_bufor"...
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...
A wracajac do pytania , czy potwierdzenie po takich paczkach , serio moze transmisje tak spowolnić ? ( około dwukrotnie ) to wszystko zależy jak napisałeś swój program. Jednak nie byłeś łaskaw napisać w czym programujesz. Zakładając więc (może mylnie), że w Bascomie - to zainteresuj się jak ci już wspominałem poleceniem Config Serialin - oraz możliwością...
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.
Autorze tematu, chyba nie bardzo rozumiesz kod, który stworzyłeś, hm... :?: [syntax=basic4gl]Config Serialin = Buffered , Size = 18 , Bytematch = 13 '... Serial0charmatch: 'po odebraniu znaku Chr(13) zwiększenie licznika lini(zdarzeń) lds r24,{event} inc r24 sts {event},r24 Return [/syntax] Ten "tandem" i tak nie działa, bo zapomniałeś włączyć przerwań....
Da się w bascomie zrobić to wszystko co Ci radzimy o rsie. Poczytaj o Config Serialin = Buffered i Bytematch All. Powinno się nieco rozjaśnić. Dodano po 5 Dodano po 45 A głównym problemem i tak pozostają zakłócenia, niezależnie czy zmienisz te przerwania czy nie. Więc tak, czy ta skretka idzie w pobliżu 230vac? Czy na każdej płytce masz elektrolity...
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...
Myślałem nad tym ale ...... Instrukcja CONFIG SERIALIN Przeznaczenie: Konfiguruje sprzętowy układ UART by używał bufora wejściowego. (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005 Jest procedura , która pozwoli mi na dowolny pin wysłać dane w standardzie uart ? Żeby sprzętowy w attiny 2313 to poprawnie odebrał ?
....- 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...
Witam, Mam problem z uruchomieniem uartów na Atmedze 128 , znalazłem taki kod w starym poście i raczej nie działa [syntax=vbnet] $regfile = "m128def.dat" $crystal = 16000000 'UART config - $baud = 9600 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 64 Config Serialout...
Może zwiększ długość zmiennej Znak do 10...20B. Przepraszam, zapomniałem dodać, że oprócz zmian hardwarowych zmieniłem właśnie zmienną Znak do 20B. Oprócz tego spróbowałem obsłużyć serwo i LEDa w podprogramikach wywoływanych z pętli (taka sobie kosmetyka, aby tylko coś zmienić). Zmieniłem równiez na chwilę działanie nadajnika tak, aby za 1 naciśnięciem...
No nie wiem czy musi być 4x szybszy. Chyba, że inaczej będą się gubić dane, ale chyba jest coś jak bufor...? Czemu master ma się przełączać (czytałem o SPI w książce i jakoś nic o tym nie znalazłem). Jedyny problem to chyba gubienie informacji przez mastera. Pojawił się kolejny problem, bo z tego co widzę muszę mieć crystal=16MHz bo inaczej odbiera...
Witam. Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serialin0. Błędem natomiast jest jest używanie Serialout0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print String i zapomnij. Bascom sobie to sam wyśle. Tobie radzę na razie nie korzystać z Serialout0 w ogóle....
Witam. Poczytałem i napisałem takie coś. [syntax=basic4gl][/syntax] $crystal = 8000000 $regfile = "m1284def.dat" $baud = 19200 Dim A As Byte Dim B As Byte Dim C As Byte Dim Flaga As Byte Config Serialin = Buffered , Size = 20 , Enable Interrupts Wait 1 Print " test " Do If Flaga = 1 Then Print "flaga" Flaga = 0 End If If _rs_bufcountr0 >= 6 Then Inputhex...
Nie wiem czy dobrze kombinuje i trochę mi nie pasuje co zrobiłem. Do tego celu wykorzystuje polecenie Config Serialin które po konfiguracji wygląda tak: [syntax=basic4gl] Config Serialin = Buffered , Size = 20 Config Timer0 = Timer , Prescale = 256 Dim A As String * 10 Dim Odczyt As Bit Dim I As Word On Timer0 Przerwanie Enable Interrupts Enable Ovf0...
Witam, mogli byście spojrzeć na poniży kod czy dobrze kombinuje bo nie mam złącza LPT( laptop) i muszę na boku z starych części składać komputer żeby zaprogramować. Więc jak się poświecę to chciałbym mieć pewność że zatrybi. Założenia są takie: z terminala wysyłam jakąś komendę mikrokontroler atina2313 ją odbiera i podejmuje odpowiednie działanie. Kod...
zapomnij w takim prostym przypadku o przerwaniu Urxc (wywal z tego swojego kodu wszystko co masz związane z tym przerwaniem), zamiast tego - to co wpisałeś w przerwaniu - daj w pętli głównej - i wszystko w cudowny sposób ci ruszy. Co więcej - zainteresuj się takim poleceniem jak Config serialin - dzięki czemu włączysz sobie sprzętowy bufor RS232 - który...
Ja zrobiłbym tak: 'Tutaj ustaw $Baud, $crystal, itp Config Serialin = Buffered , Size = 20 dim znak as byte Enable Interupts On URXCprzerwanie Enable URXC ... przerwanie: disable URXC do Znak = Inkey() If znak = #48 Then ... End If Loop Until _rs_head_ptr0 = _rs_tail_ptr0 Enable URXC Return
Witam, mała aktualizacja program wyżej wysyła sms-a, ale mam problem z odbiorem według poniższego kodu, prawdopodobnie gubi znaki ... jak to można rozwiązać [syntax=vbnet] 'informacja że nadszedł nowy sms o numerze 23 +CMTI: "SM",23 'polecenie o odebraniu sms o numerze 23 at+cmgr=23 'odebrany sms +CMGR: "REC READ","+48","","17/03/25,17:04:26+04" STATUS...
Problem tak jak już piszą koledzy leży po stronie terminala. Zawsze włączałem odbieranie danych, i minimalizowałem okno terminala. Teraz poświęciłem 5 min, otworzyłem okno i czekałem do końca nie przeszkadzając mu. Oczywiście odebrałem 8192 Bajty z prędkością 115200. Pozdrawiam. PS: Nie zamykam tematu, jak znajdę jakieś przyczyny to napiszę to tu żeby...
Witam, Od wczoraj próbuję uruchomić symulację w Bascom-AVR i nic :( Oto mój kod do odbierania danych: $sim '----tylko do testu na kompie $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Dim A As String * 1 Config Serialin = Buffered , Size = 20 Enable Interrupts Print "Start" Do If Ischarwaiting() = 1 Then A = Waitkey()...
bascom config serialin przerwać serialin serialin przerwanie
citroen xsara termostat parownik klimatyzacji mercedes brzęczenie włączeniu wzmacniacza
dekoder skymaster odczytu pendrive
Mitsubishi Colt 1.3 1998 nie odpala po plaku – brak iskry, rozrząd, kompresja Whirlpool ADP606F/IX ECO – wyciek wody, uszczelki, węże, diagnostyka zmywarki