Wskazówki : [syntax=basic4gl] Config Serialin = Buffered , Size = 254 , Bytematch = All Enable Serial Enable Interrupts Serial0bytereceived: Return [/syntax]
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..)
No to przyjacielu jaka jest ta super komenda ? Ta super komenda , a właściwie jest to znane - choć nie wszystkim i nie do końca - polecenie konfiguracyjne portu szeregowego Config Serialin = Buffered , Size = XX , Bytematch = YY Zajrzyj teraz do pomocy Bascoma i przeczytaj , jakie wspaniałe możliwości daje nam ostatni (zaznaczony na niebiesko) parametr...
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
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
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()...
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
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...
...I jeszcze stałe wyławiane z odebranego tekstu. Dzwtxt = ": +48" A ja się na tym "przejechałem" , bo Era we własnej sieci , nie wysyła przefiksu kraju , czyli owego +48. Wracając do "techniki" odbierania transmisji z telefonu , stosuję ... Config Serialin = Buffered , Size = 254 , Bytematch = 13 ... oraz Serial0charmatch: lds r24,{event}...
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,...
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...
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...
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...
Spróbuj: Config Serialin = Buffered, Size = 10
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...
Ischarwaiting() działa tylko w połączeniu z Config Serialin = Buffered i do tego Enable Interrupts .
za pomocą Inkey() a wtedy bufor automatyczny konfigurujesz tak: Config Serialin = Buffered , Size = 10 , Bytematch = All
Ustawiłeś w programie bufory? Config Serialout = Buffered , Size = ? - liczba znaków Config Serialin = Buffered , Size = ? - liczba znaków
Miże to pomoże: Config Serialin = Buffered , Size = 200 Size ustala wielkość bufora.
: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 {...}...
$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
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]
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
Witam, jak wiadomo (przynajmniej mi narazie) z helpa Bascoma - zwykłe polecenie PRINT generuje na końcu dwa dodatkowe znaki CR i LF Niekoniecznie :D Za pomocą polecenia PRINT , można wysłać stringa zakończonego ... praktycznie dowolnym znakiem - również sterującym. Print "Zmienna" ; Chr(13) ; ' średnik zakazuje wysyłania znaków sterujących. ... druga...
Myślałem, że za buforowanie odpowiada: Config Serialin = Buffered , Size = 255 No nic... W takim razie zabieram się za poszukiwanie informacji odnośnie FIFO i jak to robić w Bascom-ie.
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 :/
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.
Dlatego, że wysyłasz dane z ATmega8535 ciągle proponuję odczytywać przy pomocy poleceń WAITKEY() lub INKEY(). INPUT akurat do tego nie jest najlepsze. Proponuję też skonfigurować bufor UARTA. Config Serialin = Buffered , Size = 8 O tych wszystkich poleceniach znajdziesz w pomocy.
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]
Już nic mądrzejszego nie wymyśle. Czy chodzi o coś takiego ?? Konfiguracja Config Serialout = Buffered , Size = 20 Config Serialin = Buffered , Size = 20 , bytematch = 13 Enable Interrupts Serial0charmatch: A = Ischarwaiting() If A = 1 Then input temperatura End If Return Jeżeli to nie tak to proszę o pomoc
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]
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ę ?...
Temperaturę odczytaną z ds'a formatuję i wrzucam do zmiennej string poleceniem FUSING, np: Temp = Fusing(t1 , "#.#") gdzie Temp to string, a t1 to zmienna single z odczytaną temperaturą. Następnie mam kilka warunków if..then gdzie zmienna Temp jest uzupełniana znakami (np. spacji), tak aby fragment łańcuch z pojedynczą temperaturą miał zawsze tą samą...
Nie zauważyłem na początku programu następującej konfiguracji. Przeznaczenie: Konfiguruje sprzętowy układ UART by używał bufora wejściowego. Składnia: CONFIG SERIALIN = BUFFERED , SIZE = rozmiar gdzie: rozmiarliczba określająca ile bajtów SRAM przeznaczyć na bufor wejściowy. UART jest odczytywany kiedy program chce, a nie kiedy przychodzą dane. Może...
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.
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...
proponuję zrobić to tak [syntax=basic4gl] Config Serialin = Buffered , Size = 9 Dim Az(9) as Byte Do Clear serialin Do Waitus 10 Loop Until _rs_bufcountr0 = 9 Inputbin Az(1) , 9 Loop[/syntax] najpierw wyczyść bufor wprowadz program w pętlę i czekaj w pętli na zapełnienia bufora ale uwaga program będzie czekał na dane jeśli nie przyjdą to czekanie w...
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ć...
Próbowałem wcześniej Config Serialin, ale help Bascoma nic nie wspomina Bytematch dopiero na forum coś więcej jest Config Serialin = Buffered , Size = 7 , Bytematch = 13 ( czyli rozmiar bufora, oraz znak po którym zostaną wpisane znaki do stringu, później Input, który ładnie wytnie znak określony w Bytematch i od razu jest gotowy do badania warunków...
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
Super Rozjaśnia się jeszcze bardziej Już kombinuję dalej ........... Dodano po 16 Dostosowałem się do wszystkich Twoich rad i zaleceń i stworzyłem takie coś: Nadajnik' $baud = 19200 Config Serialin = Buffered , Size = 20 Config Serialout = Buffered , Size = 20 Enable Interrupts Dim A As Single Dim A1 As String * 6 A = -3.345 Dim S As Byte Dim S1 As...
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ń....
Prosze bardzo, rzucam moim jakże skomplikowanym kodem :) [syntax=basic4gl]Config Serialin = Buffered , Size = 80 , Bytematch = 13 Config Input = Crlf , Echo = Crlf [/syntax] a potem w przerwaniu; [syntax=basic4gl]Serial0charmatch: Enter = 1 Return[/syntax] A gdzieś gdzie chcesz odebrać z bufora w pętli [syntax=basic4gl]if enter = 1 then Input Todczyt...
Witam ponownie! Problem faktycznie leżał w buforze odbioru danych. Należało powiadomić kompilator o chęci użycia takiego bufora: Config Serialin = Buffered , Size = 200 Przyznam, że próbowałem to zrobić wcześniej i uP nie odbierał już niczego, a to przez to, że nie włączyłem obsługi globalnych przerwań ;) Enable Interrupts Teraz już wszystko działa...
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...
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...
Witam... Przyznaję na wstępie - mam zaćmienie umysłu (nowa dziewczyna) i morduję się cały wieczór z pewnym problemem. Zapewne jedna podpowiedź, któregoś z doświadczonych "kontrolerowców" rozwiąże mój problem. Nadaję do magistrali RS487 ciąg zmiennych typu Byte następującym algorytmem: Config Portd.2 = Output Config Serialin = Buffered , Size = 15 Kierunek...
Mnie ktoś pomógł to teraz się tym podzielę Nadawanie: -----konfiguracja------- $baud = 2400 Config Serialin = Buffered , Size = 20 Config Serialout = Buffered , Size = 20 ---------jakiś tam program----- Print Temperatura ; Chr(13) ; 'Wyślij po RS wartość zmiennej temperatura Odbiór: $regfile = "m8def.dat" $crystal = 8000000 $baud =...
Podstawowy błąd w programie odbierającym dane to za mały bufor, dane mogą być nadpisywane. Bufor powinien mieć minimum 14 bajtów, zmienne są wysyłane w postaci łańcucha np. "-32768,-32768",$0D. Do prawidłowej pracy bufora wymagane jest globalne włączenie przerwań (Enable Interrupts). [syntax=basic4gl]Config Serialin = Buffered , Size = 28 , Bytematch...
Napisałem coś takiego: $regfile = "m16def.dat" Config Portb = Output Portb = &B00000000 $crystal = 16000000 $baud = 9600 Config Serialin = Buffered , Size = 20 Dim Uart As String * 10 Enable Interrupts Do Uart = Inkey() If Err = 0 Then If Uart = "12345" Then Portb.0 = 1 End If If Uart = "1" Then Portb.0 = 0 End...
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)...
Problem rozwiązany 1. na co nie zwrociłem uwagi to brak odpowiedniej konfiguracji UART $regfile = "m8def.dat" $crystal = 8000000 $baud = 4800 $hwstack = 160 $swstack = 40 $framesize = 120 Config Serialin = Buffered , Size = 200 2. Sprawdziłem 11 szt atmegi8 i ani jedna nie działała na PORCIE C!!! zmieniłem na PORT D, i działa idealnie: Open "comd.2:4800,8,n,1"...
Tak ustawiłem UART-y $regfile = "m2561def.dat" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 ' Inicjalizacja wyświetlacza LC Cls ' Czyszczenie Config Com1 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol...
Witam, spróbuj tej wersji, mi działa :) [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Pordc.3 , Db5 = Pordc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 20 * 4 'Config Serialin = Buffered , Size = 15 Config Pind.2 = Output Kierunek Alias Portd.2 'zmienia kierunek transmisji...
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, Jak sprawnie odebrać dane bajty lub znak ascii z przedziałów: - 1..32 - 126..255 Gdyż program sprawuje się rewelacyjnie i NIEZAWODNIE jak odbieram tylko znaki z klawiatury, a ja chcę przesłać z PC do uC ok 1MB danych z zakresu Bajt = 1..255 Rozwiązanie jakie jest poniżej - rewelacja! Lecz moja ramka danych jest 128bajtowa i docelowo 128bajt jak...
Witam, Komunikuje się miedzy dwoma atmegami i gdy używam (Atmega8) Print #1 ----> Input #2 (Atmega16) jest wszystko ok ale gdy próbuje zrobić (Atmega8) Print #1 ----> inkey(#2) (Atmega16) to wywala śmieci. Chce wysłać pojedynczy znak np M wysyłam jako chr(77), a zamiast tego wyczytuje inne znaki. Gdy używam inkey(#2) ale wprowadzam z terminala jest...
$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 ,...
Przeciez powyzej zamiescilem kod programu ktory ma wgrany Atmega $regfile = "m8def.dat" $crystal = 16000000 $baud = 9600 Dim Znak As String * 6 Config Portd.2 = Output Config Serialin = Buffered , Size = 15 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Wait 5 Set...
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...
Kod poprawiłem, a z tym: Obroty1 255 Obroty2 120 Obroty3 100 Enter niekoniecznie tak musi być, może być Obroty1 200 Enter Obroty2 120 Enter Obroty3 200 Enter. Domyślam się, że dużo pisania by było, gdyż trzeba dopisać dużo zmiennych i je uwarunkować, mimo wszystko - jeszcze raz dziękuję za pomoc. P.S. Czy można prosić o sprawdzenie tego fragmentu kodu,...
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)...
dostaję taką odpowiedź: al test com2 al test com2 al test com2 al test com2 al teraz ucina końcowe a :( może trzeba dać: Wait 1 S = ala Print S a jak się włącza bufor? Wystarczy go dać na odbiorowy AVR? Dodano po 10 w ten sposób ? Config Serialin = Buffered , Size = 20 Czy muszę dodawać jeszcze #2? A co zrobić ze zmienną integer? Będę miał wynik 4 cyfrowy...
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...
A dlaczego nie odbierasz w przerwaniu? Użyj bufora np tak: Config Serialin = Buffered , Size = 50 , Bytematch = 13 Oczywiście Bytematch musisz sobie dobrać wg. siebie. Potem w przerwaniu ustawiasz sobie jakąś flagę sygnalizującą że coś już czeka w buforze , np tak: Serial0charmatch: Rs_flaga = 1 Return a potem w pętli głównej najzwyczajniej odbierz...
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...
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...
Zrób prosty test - wgraj taki program i powiedz co się dzieje [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Serialin = Buffered , Size = 20 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits...
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"...
Witam serdecznie! Mam nie lada problem, chciałbym odbierać dane w czasie rzeczywistym z zegara czasu rzeczywistego PCF8583 i "oczekiwać" na dane z RS232. Większość z Was napisze, że to nie problem Ischarwaiting() i poszło. Teoretycznie tak, ale..... Zastosowanie Ischarwaiting() powoduje, że dane wysyłane z programu z PC muszę wysłać 2 razy klikając...
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...
Najważniejsze to chociaż troszkę samemu najpierw pokombinować i ew później dopytać co i jak ;) ale po co ten Inkey? toż jak już zajdzie zdarzenie Bytematch - to znaczy, że w twoim buforze jest już co najmniej jedeń łańcuch tekstowy, którzy przyleciał z Rs232 i zakończony znakiem ENTER (13) .... w związku z tym wystarczy dać polecenie Input linia i już...
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"...
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...
Muszę odebrać 9 zmiennych bitowych . Transmisja działa ale jest problem, co jakiś czas zdarzają się przypadki gubienia danych lub fałszywych danych.Zmiana szybkości transmisji nie pomaga.czy ktoś pomoże rozwiązać problem? fragmenty kodów [syntax=basic4gl] 'nadajnik $regfile = "m128def.dat" $crystal = 7372800 $hwstack = 32 $swstack = 10 $framesize =...
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...
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...
[syntax=vbnet] $regfile = "m644pdef.dat" $crystal = 16000000 $baud = 9600 $hwstack = 200 $swstack = 200 $framesize = 100 Config Serialin = Buffered , Size = 100 $lib "glcdKS108.lbx" '$lib "mcsbyte.lbx" Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 6 , Ce2 = 7 , Cd = 4 , Rd = 3 , Reset = 1 , Enable = 5 'Const Clockmode...
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 PC-et odbiera transmisję :?: Nie dostrzegam $crystal=xxxxx - czym taktujsz proca , wewnętrznym RC czy zewnętrznym kwarcem , a jeśli zewnętrznym , to jakim i czy fusy przestawione na "external cristal". Mógłbym tak jeszcze długo ... . To działa na M32 napewno: $crystal = 11059200 $regfile = "m32def.dat" $baud = 19200 Config Serialin = Buffered...
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...
Zrobiłem płytkę do sterownika domowego na której znajdują się dwa procki: atmega128(procesor główny) i atmega32(procesor muzyczny). Konieczna jest w tym przypadku komunikacja tych procesorów w obu kierunkach przez uart. Całą noc zajęło mi napisanie programu do takiej właśnie komunikacji i w rezultacie mam coś takiego: At128- [syntax=basic4gl]'---PROCESOR-----------...
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" &...
witam proszę o pomoc mam telefon s55 i podpiąłem go tak http://obrazki.elektroda.net/35_12524329... pierw chciałem sprawdzić czy zadzwoni i nic się nie dzieje :( program $regfile = "m8def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Do Print "ATE0" ; Chr(13)...
Urządzenie nadawcze i odbiorcze ma kwarc RC: [syntax=basic4gl] $baud = 9600 Config Serialin = Buffered , Size = 15 [/syntax] Zmienne: [syntax=basic4gl] Dim Bufor_flaga As Byte Dim A As String * 10 Dim C As String * 8 Dim Tempcwu As String * 2 Dim Tempcwu_a1 As String * 2 Dim Tempcwu_a2 As Byte [/syntax] W nadajniku wysyłam dane *123456789 W terminalu...
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()...
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))...
Witam, posiadam przejściówkę USB > RS232 i chcę się skomunikować z ATMEGĄ 8 i PC. Mam taki problem, że jak piszę w konsoli cokolwiek to pojawia się to w konsoli prawidłowo, i po naciśnięciu ENTER pojawia się na LCD podłączonym do ATMEGI. Ale jak Atmega wysyła ciąg znaków to dostaję w 80% błędne znaki czyli np: "razdwa" zamiast "raz dwa". Proszę o jakąś...
Witam. Od kilku dni próbuję uruchomić komunikację pomiędzy dwoma atmegami. Do tego celu wykorzystałem kilka sposobów przesyłu, ale żaden nie był skuteczny. Ciekawi mnie co robię nie tak... ok powoli nawet irytuje. Mam wrażenie, że coś pominąłem... Atmegi są ustawione na 8MHz lfuse - 0xe4 , hfuse - 0xD9 pind.0 (rx) pierwszego do pind.1 (tx) drugiego...
Witam, mam problem z SL45i. połączenie jak na obrazku i nic się nie dzieje. (napięcie obniżone tylko na TXuc>>RXtel). Tel nawet nie mignie. http://obrazki.elektroda.net/89_12784375... $regfile = "m32def.dat" $crystal = 8000000 $Baud = 19200 Config Serialin = Buffered , Size = 200 Dim Kod As Byte Dim Bufor As Byte Config Porta = Output 'cały...
Tak jak w temacie. Od kilku dni próbuje połączyć się przez RS'a z modemem w telefonie siemens c35 próbowałem już róznych prędkości transmisji nic nie dawało tyle że na najniższych prędkościach działało jakby echo czyli taką komendę jaką wysyłaliśmy taka wracała przez polecenie input. Na wyższych prędkościach program stoi na poleceniu input. Juz nie...
oki taki mam kod może coś tu mi nie gra :) nadajnik ' rs485 dla atmega8 - testowy nadajnik $regfile = "m8def.dat" $crystal = 1000000 $baud = 9600 Config Portd.2 = Output Config Serialin = Buffered , Size = 15 Declare Sub Odbior Dim Lok As Bit Dim Test As Bit Dim Zn As String * 1 Dim I As Integer Dim Adr_s As String * 5 Dim Adres As Byte Dim...
To co piszesz jest słuszne i mądre, widzisz, jest tylko jeden problem - soft jest skomplikowany bardziej niż by się wydawało, atmega8 ma tylko 8kb flash a wszystkie przerwania Atmega8 są zajęte (w tym timer1 do zliczania pojedynczych sekund, int1 i timer2 wykorzystywany przez getrc5). Oczywiście zawsze można skonfigurować bufor wejściowy, np. gdy spodziewamy...
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...
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ę...
Witam. Koledzy poniższy program ma za zadanie odebrać jeden znak ze sprzętowego uarta i zapisać go na karcie SD. Zapis działa prawidłowo natomiast uart procesora nic nie odbiera. Urządzenie podpięte do procesora na 100% nadaje cały czas prawidłowe znaki tylko nie wiem czemu procesor ich nie odbiera. podejrzewam że coś w programie namieszałem ale co?...
Witam mam taki program wgrany do procesora: $regfile = "2313def.dat" $crystal = 11059200 $baud = 9600 'Config Serialin = Buffered , Size = 20 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Cursor Off Noblink Cls Dim A As String * 10 Print "Start"...
Bardzo dziękuję! teraz jest ok Może Ty będziesz wiedział bo nadal mam problem z odebraniem czegokolwiek z kompa na mojej Atmedze i LCD Atmega8 16 MHz LCD 2*16 MAX485 (ST485CN) podłączony do konwertera 232/485 a konwerter do kompa przez USB (zainstalowany usb-to-serial bridge) To co Atmega wysyla odbieram bez problemu natomist nie wiem jak odebrac to...
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...
bascom config serialin przerwać serialin serialin przerwanie
ogranicznik prądu cewki passat przeróbka automapa licencja
elektroliza złota oprogramowanie vordon
BMW K1200LT 2002 – lokalizacja gniazda diagnostycznego, 10-pin, pod siedzeniem Amica piekarnik – po zaniku prądu nie można ustawić zegara, reset i blokada panelu