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..)
:arrow: CONFIG SERIALIN, CONFIG SERIALOUT.
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 ........
Witaj. Nie wiem, czy dobrze Cię zrozumiałem - ale czy odpowiednio użyta dyrektywa Config Input = .... nie załatwi Twojego problemu? Pozdrowienia - teedd
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]
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...
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...
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
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...
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
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...
Spróbuj: Config Serialin = Buffered, Size = 10
Poczytaj o instrukcji Config Serialin. To jest bufor wejściowy w USART w bascomie.
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))...
za pomocą Inkey() a wtedy bufor automatyczny konfigurujesz tak: Config Serialin = Buffered , Size = 10 , Bytematch = All
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...
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...
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...
Ischarwaiting() działa tylko w połączeniu z Config Serialin = Buffered i do tego Enable Interrupts .
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 ?
Miże to pomoże: Config Serialin = Buffered , Size = 200 Size ustala wielkość bufora.
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()...
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...
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...
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.
$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
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
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...
Ustawiłeś w programie bufory? Config Serialout = Buffered , Size = ? - liczba znaków Config Serialin = Buffered , Size = ? - liczba znaków
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.
Ł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....
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().
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...
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,...
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, 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,...
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...
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]
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...
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...
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...
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" &...
Dodatkowo w Bascomie bardzo łatwo zrobić bufor danych, pogoglaj na temat poleceń Config serialin oraz Config serialout .
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
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...
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
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...
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...
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...
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
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
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).
... 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]
: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 {...}...
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
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...
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...
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...
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"...
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...
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...
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...
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...
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
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...
$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 ,...
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...
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, 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...
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 :/
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"...
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ą...
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...
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...
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...
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.
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...
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ę...
UART konfiguruje tak: Config Serialin = Buffered , Size = 22 , Bytematch = 13 a przerwanie: Serial0charmatch: lds r24,{event} inc r24 sts {event},r24 Return W pętli głównej czekam na event, i tu można byłoby przepisać bezpośrednio z bufora UARTa do tablicy. Tylko gdzie jest ten bufor i czy można bezpośrednio przepisać ramkę ?...
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...
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ń....
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]
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...
Ja używam innej konfiguracji portu bo też miałem problem i wszystko zadziałało Config Serialin = Buffered , Size = 100 , Bytematch = 10 ' bo telefon odpowiada 0D0A = 13 10 = ClLf Echo Off Config Input = Crlf , Echo = Crlf bytematch = 13 (0Dhex) nie jest dobrym pomysłem bo końcowy znak to 10 (0Ahex), spróbuj tak jak wyżej. Ważna jest też config input...
Ten program jest taki, że nie wiadomo od czego zacząć poprawiać. Najlepiej byłoby go napisać od nowa :D Niemniej poprawiłem to co ewidentnie musiało być poprawione. Tak na marginesie to nie wiem co za magik wymyślił te ponowne włączanie przerwań w obsłudze przerwania po to tylko by odebrać kod RC5 w przerwaniu. Ludzie to małpują i kłopoty gotowe. Sprawdź...
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ł ?
w helpie do bascoma jest wszystko bardzo dobrze opisane podstawa to $crystal = xxx 'Częstotliwość $baud = xxx 'Prędkość UART można też dodać Config Serialin = Buffered , Size = 50 'Konfiguracja UART IN Config Serialout = Buffered , Size = 50 'Konfiguracja UART OUT ale bez tego też chyba działa niejestem pewien ale wydaje mi się też że trzeba odblokować...
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...
Już prawie opanowałem ten odczyt. Nie jest to wina zbyt długiego zapisu na kartę. Zrobiłem to tak że stringa "dane" dzielę za pomocą funkcji split a później jeśli pierwszy człon stringa dane jest "$GPGGA" to następuje zapis na kartę. I taki sposób działa ale tylko raz. Raz zapisze poprawnie ramkę i tyle nie ma więcej zapisów. Oto nowy kod: [syntax=basic4gl]...
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()...
Ale to nie jest kwestia tylko deklaracji :( ..... podałem tylko to jako przykład, że w ogóle jest to źle zrobione. Trzeba wręcz napisać sobie jakąś procedurę/funckję do pobierania najpierw danych z USART. Dopiero gdy zostaną odebrane to można napisać jakąś kolejną funkcję, która będzie sprawdzać te nadchodzące dane. Pisałeś wcześniej, że masz zrobioną...
Po wczorajszym, (zamknięcie tematu, i itp) Postanowiłem że postaram się coś samodzielnie wyklecić w bascomie (w końcu to mój projekt) narazie to tylko przykładowy kod, w którym chodzi tylko o wyjaśnienie zagadnienia, i ewentualne poprawki. MASTER : $regfile = "attiny2313.dat" $crystal = 4000000 Config Serialin = Buffered , Size = 15 Const...
Witam. Proponuje tak jka kolego radzi uzyc bufora, który automatycznie działa. tu przykład: Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 7 -------' wielkośc 7 znaków Enable Interrupts -------' musisz włączyć przerwanie później w programie dajesz Bufor_rs = Bufspace(1)...
Ello Mozecie mi powiedziec czemu jak sobie napisze prosty programik w BASCOM AVR. To pokazuje mi caly czas 1023. Nie podpiąlem pod AVCC ATmega32 tego dlawika 10uF... , ale nie sadze zeby to mialo taki wplyw ?? w ogole nic sie nie zmienia wiec mysle ze to problem programowy.... pomocy :( $regfile = "m32def.dat" $crystal = 1000000 $baud = 1200...
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...
....- 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...
config serialin buffered bascom serialin config output bascom
rezystancja uzwojenia indukcyjnego technik elektryk formowanie plastiku
hulajnogi elektryczne problemy różnicówka brzęczy
FunBox 2.0 Orange – jak włączyć router, podłączenie, diody, konfiguracja Wi-Fi Radio 418 Diory/Eltry – prąd dochodzi, nie działa, diagnoza zasilania, wymiana kondensatorów