Po co ci takie wielkie bufory ilku bajtów. Bufor wyjściowy Serialout jest nie potrzebny. Zakomentuj go (i to już może Ci od razu pomóc). Zamiast flushbuff możesz spokojnie napisać Clear serialin Proponuję też przejść na odbiór tego znaku w przerwaniu za pomocą Config serialin z opcją BYTEMATCH=ALL Poczytaj na temat tej opcji w helpie (angielskim)
Wskazówki : [syntax=basic4gl] Config Serialin = Buffered , Size = 254 , Bytematch = All Enable Serial Enable Interrupts Serial0bytereceived: Return [/syntax]
Poczytaj helpa z Bascoma ale angielskiego. Szczególnie o: "Config serialin" z uwzględnieniem "BYTEMATCH" - to jest obsługa UART w przerwaniu uproszczona na maxa. Warto przejrzeć: http://www.elektroda.pl/rtvforum/topic14... i jeszcze ten: http://www.elektroda.pl/rtvforum/topic14...
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
To Twój post musisz włączyć przerwania. Mi się zdarza zapomnieć własnie dla jakichś małych kodzików testowych bo w normalnym kodzie najczęściej przerwania są włączone. Dla wewnętrznego rezonatora (niezalecane) pamiętaj o wyłączeniu CKDIV8 albo poprawnego zadeklarowania prędkości bo dla niej kompilator wylicza UBRR. W swoim temacie poprzednim masz link...
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 ........
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().
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...
...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...
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
Użyć przerwania. A dokładnie config serialin z funkcją Bytematch. Ewentualnie po każdym odebranym znaku zerowym Chr(0) dać Clear Serialin Wtedy bufor będzie zawsze ustawiony na początek.
Witam, mam dosyć upierdliwy problem z transmisją UART z użyciem modułów radiowych HM-R/T868. Problem polega na tym, że jeśli nadajnik nic nie nadaje, to odbiornik odbiera dziwne "śmieci" z eteru. Problem znika w momencie, kiedy będący w zasięgu nadajnik nadaje cokolwiek. Więc w głównej pętli programu umieściłem komendę: [syntax=basic4gl]Print chr(0);[/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
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)...
Ale dziwne że jeśli pominę przerwania i config serialin to działa bezbłędnie (w sumie 99/100 bo jadę na zewnętrznym kwarcu 16Mhz i jakieś błędy są możliwe) ale nie tak jak chciałem bo musiałem wpiąć to w pętlę główną: To lata w pętli głównej: 'RS232 UART4 - ODCZYT DANYCH ZE STEROWNIKA KOMINKA Rs4_flaga = Ischarwaiting(#6) : If Rs4_flaga...
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ę ?...
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.
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
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...
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...
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...
$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
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...
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. 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)...
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.
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...
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
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...
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...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
Źle przepisałem to Lcdat w programie jest na pewno dobrze. Moduł nadaje to co napisałem wyżej na samym końcu jest apostrof czyli Bytematch=39. Bynajmniej taki znak na końcu wyświetla się w hyperterminal-u. Dobrze to sprawdziłem czy jakoś inaczej trzeba? A wyświetlanie się wyrabia na pewno. Nie wiem tylko dlaczego jeśli dam: Input Rs_dane w pętli głównej...
Witam, a po choinkę wyłączać Timer przy organizowaniu wymiany danych z PC ??? poczyta sobie kolega o takich poleceniach jak np: Config Serialin - dzięki któremu można ustawić sobie bufor wejściowy, do tego proszę zobaczyć co przy tym poleceniu robi Bytematch - dzięki, któremu można sobie ustalić po nadejściu jakiego znaku ma się zainicjalizować np jakaś...
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...
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
Pomęczyłem się trochę dzisiaj i chciałbym zapytać czy w dobrym kierunku idę. Poniżej dwa przykłady oraz próbki tego co uzyskałem. Przepraszam za jakość dźwięku. Niestety byłem zmuszony nagrać to przez mikrofon. Kod 1: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 20000000 $baud = 115200 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up...
: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 {...}...
Przede wszystkim w komunikacji po Usarcie to przeszedł bym na przesyłanie ASCII, a wyrażenie kończyłbym znakiem CR (13). Wtedy możesz wysyłać odebrane ciągi na wyświetlacz, bez używania stałych. Używaj do tego zwykłego Print zamiast printbin. Tak swoją drogą nie wiem czemu większość początkujących próbuje komunikować się poprzez Printbin zamiast używać...
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...
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...
Napisałem taki programik testowy do wysyłania i odbierania jednej zmiennej: At128- Dodano po 5 Przepraszam już działa! zamiast print: [syntax=basic4gl]'---PĘTLA GŁÓWNA----------------------------------... Enable Urxc Enable Interrupts wait 1 Print Dlugosc[/syntax] dałem printbin: [syntax=basic4gl]'---PĘTLA GŁÓWNA----------------------------------...
$crystal = 11059200 $baud = 9600 Dim A as Byte Print "Hello world" Input A To jest kompletny programik wysyłający tekst "Hello world" i odbierający 1 bajt (znak) z komputera. Nie trzeba włączać przerwań, a instrukcje wspomniane powyżej: Config Serialin = Buffered , Size = 50 'Konfiguracja UART IN Config Serialout = Buffered , Size = 50 'Konfiguracja...
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. 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....
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)...
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...
... bo tego "input" nigdy nie uzywałem i nie mam do niego zaufania A szkoda , bo działa tak jak powinno :wink: On Urxc Odbierz Enable Urxc Enable Interrupts i pod etykietą "odbierz" piszesz dalej obsługe przerwania i return To samo uzyskasz odpowiednio konfigurując "SERIALIN". Notomiast jeśli chodzi o funkcję "INPUT", to kończy działanie po otrzymaniu...
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...
U mnie poszło coś takiego: $regfile "m16def.dat" Config Lcd = 16 * 2 $crystal = 1000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0 Config Serialin = Buffered , Size = 12 Dim X As Integer , Y As Integer Config Pind.1 = Output Enable Interrupts ' Musisz włączyć...
Mam taki kłopot; korzystam w programie z transmisji z PC do mikrokontrolera vis RS232 (Atmega 2561, sprzętowy uart, 115200 b). W tym celu używam funkcji SERIALIN z opcją BYTEMATCH (znak CR). Bufor o długości 200 znaków. [syntax=vbnet]' port szeregowy do komunikacji z PC oraz modemem GSM Config Com2 = 115200 , Synchrone = 0 , Parity = None , Stopbits...
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...
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ń....
i dalej tak samo pomimo to że dajesz: Do W = Getadc(0) S = "ala" Print S Wait 1 Reset Watchdog Loop to opóźnienie 1s przy nadawaniu ????? oczywiście, że bufferout można sobie podarować, ale też wyglada chyba na to, że ten serialin ci nie działa chyba na tym porcie poza tym to tak jeszcze jedna rzecz mi przyszła do głowy - kiedyś też tak robiłem układy...
Dzięki za podpowiedz. Już to sprawdzam. Edit: Jak podałeś w stringu były dane LF na początku odczytanego stringa i dlatego był problem z tłumaczeniem zmiennej. Dzięki za naprowadzenie! Jeszcze wątku nie zamykam, gdyż mogę jeszcze trafić na problem i w razie czego szkoda zakładać nowy wątek. Pozdrawiam Edit2: Niestety powracam z problemem :( Program...
BlueDraco - owszem, łatwiej jeden uC. Ale jako że siedzę w avrach i bascomie, to raczej nie mam zamiaru wyrzucać kolejnych pieniędzy, płytek które wytrawiłem i zlutowałem po to żeby babrać się w inną rodzinę procesorów. Poza tym zanim nauczyłbym się nowego języka i nowych uC minęło by sporo czasu, który raczej muszę przełożyć na inne cele (matura +...
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...
Dziekuję za wszystkie dotąd udzielone mi porady. Jeśli chodzi o transmisję binarną printbin, inputbin to próbowałem wyszło super przede wszystkim zmniejsza liczbę byte ramki chodzi mi o to, że gdy wysyłam parametr do pwm np. 255 to używam 3 znaków ASCII czyli 3 byte a binarnie wyśle byte 255 i to tyle ale w transmisji nie mogłem korzystać z przerwania...
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...
Witam, mam dziwny problem, SIM900 nie wysyła sms-ów. Program w Bascomie napisał mi kolega, nie należał do najkrótszych i wszystko działało, odbierał sms-y z komendami i włączał urządzenia, wysyłał sms, dzwonił, odrzucał połączenia itd. Kiedy wyodrębniłem z tego programu fragment który miał tylko wysyłać sms kilka razy zadziałał, a później przestał,...
Witam Mam następujący problem: Posiadam w swojej sieci RS485 kilka pracujących modułów. Znajduje się w niej jeden Master i 6 Sleave-ów . Problem jest następujący. Jeden z modułów działa prawidłowo zaraz po podłączeniu do zasilania , tzn. odpowiada poprawnie na zapytania Master-a ale po kilku minutach zaczyna krzaczyć. Ale co śmieszniejsze krzaczenie...
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ę...
Walczę cały czas i coś mi dalej nie działa. Zrobiłem tak jak kolega Heniuś podpowiedział. Dałem 2 razy odbiór danych. http://obrazki.elektroda.pl/7083603900_1... Jak mogę, wyciągnąć numer telefonu z którego przyszedł sms. Dlaczego w obecnej chwili go nie widać.Poniżej jak wygląda u mnie odbiór z uart i konfiguracja. [syntax=basic4gl]...
witam mam zrobioną obsługę wyświetlacza led na przerwaniach i problem z odbieraniem znaków przez uart mianowicie uart "gubi" znaki podczas odbioru, jeżeli wyłączę przerwania przerwania problem znika, niestety wyświetlacz muszę mieć zrobiony na przerwaniach i nie wiem jak mam się z tym problemem uporać. poniżej zamieszczam wybrane fragmenty kodu. $regfile...
Witam Kolegów, Natrafiłem na problem i zwracam się do bardziej doświadczonych z prośbą o wsparcie. Mam 6 urządzeń po RS-485 1200 baud (można skonfigurować dowolnie), które muszę zaterminować w jednym mikrokontrolerze - stąd muszę stworzyć 6 programowych UARTów. Sprzętowy jest już zajęty przez działającą transmisję z modemem - wolnych nóżek jest jeszcze...
Mam wielką prośbę a mianowicie z dokończeniem poniższego softu w bascom. Jestem początkujący w Bascom i programowaniu. A więc do rzeczy, zbudowałem sobie wyłącznik oświetlenia na module bluetooth hc05 i kontrolerze mega8. Napisałem soft i nie mam żadnego pomysłu jak go skończyć. Najpierw omówię działanie sterownika i jego logikę: po włączeniu zasilania...
Witam. Przeczytałem cały temat, ale nie jestem pewien jednej rzeczy...chodzi mi o naprawdę najprostrze rozwiązanie. więc wystarczy zrealizować ten schemat : http://obrazki.elektroda.net/43_12886186... oraz zaprogramować ten kod podany na 5-tej stronie tematu: '---------------------------------------... '---------------------------------------...
Witam szanownych kolegów! Piszę mając nadzieję, że ktoś pomoże mi rozwiązać mój problem z którym borykam się już któryś dzień :( Otóż programuję w Bascomie Atmegę 644pa-pu do komunikacji po UART z modemem ZTE2639AT. Mam problem ze sprawdzaniem siły sygnału GSM. Otóż chciałbym przy pomocy przerwania od timera0 wykonywać takie sprawdzanie a jego wynik...
Witam, Na własne potrzeby chciałem zbudować monitor temperatury z 4 dallasami 18B20. Dane są odczytywane z czujników po RS485 i wysyłane do mastera. Kiedy odpytuję czujniki po kolei, muszę czekać standardowe 750ms na odpowiedź każdego z nich, co nie zadowala mnie. Zależy mi na tym, aby po wysłaniu komendy odpytującej, każdy z czujników bezzwłocznie...
Sprawa jest banalnie prosta (pomijam tu już połączenie sygnałów na krzyż bo to zrobiłeś chyba prawidłowo) , tylko po 1. Włącz sobie w Bascomie w obu prockach sprzętowy bufor RS232, który działa na przerwaniach - służy do tego polecenie Config Serialin - poczytaj sobie o tym i jak ustawić sprzętowy bufor wejściowy 2. to co chyba ci rozwala całą koncepcję...
Program z Visual Basic: Private Sub Command2_Click() MSComm1.CommPort = 4 MSComm1.Settings = "9600,n,8,1" Debug.Print "----------" MSComm1.RThreshold = 1 End Sub Private Sub Command3_Click() MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() ' procedura odbioru z koma Select Case MSComm1.CommEvent...
Te przerwania muszą być włączone do buforowanego trybu odbioru danych. Ale co jest podpięte z drugiej strony do procesora? Dalej zidentyfikuj, na której instrukcji procesor staje (podpowiem żeby szukać przed czy po Inputbin). Witajcie, program staje na inputbin, Do Waitms 25 Printbin &H00 ; &H00 ; &H00 ; &H00 ; &HE7; ' Printbin &H00 ; &H00 ; &H00 ;...
....- 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...
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ź...
Mam problem z transmisją danych. Na PC mam uruchomiony terminal (terminal v1.9b), i jak wysyłam treść z AVR do portu RS232 to terminal poprawnie odczytuje wysłaną treść. Natomiast problem tkwi w transmisji w drugą stronę. Żeby sprawdzić czy poprawnie AVR odbierze dane wysłane z RS232, napisałem tak program żeby po odebraniu treści wysłanej z terminala...
Przepraszam że podepnę się do tematu ale także walczę z RS485. I to walczę dobre kilka miesięcy! A zatem moje pytania: 1.Rozumiem że terminator muszę umieścić na początku i końcu mojej linii rs485 ? 2.Rezystory podciągające linie A i B muszą być przy każdym istniejącym module w sieci? 3.Rezystor podciągający RX do VCC musi znajdować się w każdym module?...
Napisałem wersję "new core" dla tego projektu. Niestety zajmuje 82 procent flasha w Atmega8 Dlatego w załączniku jest skompilowane archiwum. W przyszłości planuję napisanie programu, który w łatwy sposób pozwalałby edytować dane w EEPROM, czyli zmieniać treść SMS i numery telefonów. [syntax=vb]'****************************...
Witam Starałem się wyjaśnić platforma AVR lub zadania jaki ma wykonać NIE JEST TAK WAŻNE jak zorganizowanie komunikacji na RS232 za pomocą paczek HEX! Mogę wykorzystać dowolną większą kość AT! AT90s2313 Akurat tą kość mam gotową do pracy i kompletną do komunikacji na RS232. Czy jest możliwe zorganizowanie takiej komunikacji.? Potem wykona zadania......
Jeżeli chodzi o użyte parametry, to: $regfile = "m8def.dat" $crystal = 1000000 Config Keyboard = Pinb.6 , Data = Pinb.7 , Keydata = Keydata Config Portd = Output Config Pinb.1 = Output Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie Start Timer0 Enable Interrupts Enable Timer0 Config Spi = Hard , Data Order = Msb , Master = Yes...
Mógł by ktoś udostępnić kod dla gps'u tego programowego bo nie chce mi hasac nie czyta mi GGA $regfile = "m8def.dat" $crystal = 7372800 $hwstack = 160 $swstack = 40 $framesize = 120 Baud = 115200 Config Serialin = Buffered , Size = 200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 ,...
Witam, postanowiłem trochę pobawić się z odczytywaniem danych z telefonu za pomocą atmegi. Docelowo ma to być prosty netmonitor. Niestety napotkałem przeszkodę z ktorą nie mogę sobie poradzić. Telefon podłączony jest bezpośrednio do linii TX,RX i GND procesora, komunikacja jest ( sprawdzalem wybierjaąc numer). Przez chwilę wszystko dziala OK, ale po...
Witam, na wstępie uprzedzę, że jestem początkującym programistą bascom. Tworzę projekt, który jest połączeniem dwóch tematów tj. http://www.elektroda.pl/rtvforum/topic22... oraz ]http://www.mp3car.com/forum/mp3car-tech... . potrafię już odczytać dane z szyny i-bus w bmw i...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
Zastosowałem się do rad Kolegi Saabotaz i Piotrva. Kod wygląda tak: Cls powoduje, że procesor w ogóle nie pracuje - tzn nie reaguje na RC5 ani na zwieranie wejść ? Wolałbym nie używać Cls , bo jego brak oszczędza 13% miejsca pamięci programu
Pierwszy błąd który rzucił mi się w oczy, to to, że korzystasz z Serial'a i jednocześnie wykorzystujesz pin 1 (TX ! ). Poza tym jakie Arduino posiadasz? W przypadku Uno, do przerwań można użyci tylko 2 i 3 pinu (nie mówię o PCINT), chyba, że posiadasz Leonardo.
Jestem świeży w temacie i mam elementarny problem. W sposób właściwy podłączyłem telefon z µP (dzięki temu forum). Do przetestowania dwukierunkowej komunikacji (zapytanie-odpowiedź) z Siemens S35i wykorzystałem program użytkownika arkadius - delikatnie zmodyfikowałem wyświetlanie komunikatów na lcd µP. Kod cały programu zamieszczę poniżej...
Narazie jedynie mogę wyświetlać napis od początku i czyścić dolny/górny wiersz... Sprzęt Max485 jest podpięty do drugiego uarta 8051, piny RE i DE podpięte pod p1.0 Kwarc mam 12 mhz i uart ustawiony w trybie 2 (9bit, kwarc/64=187500) Wyświetlacz, w zależności od sposobu podłączenia odpowiada na adresie 0x20 lub 0x21 (a może i na obu ;P) Kod Rzucam to...
Nie znoszę Basica i na ten temat nic nie powiem, ale w C popełniasz podstawowy błąd - chcesz pracować na przerwaniach, a w kodzie ich nie ma. Uaktywniasz timer i jego przerwanie, ale nie masz ustawionych przerwań od portu szeregowego i globalnych. Na koniec mam wrażenie, że program się natychmiast wykrzaczy - w pętli while raz za razem wywołujesz putchar,...
Chcę zaprogramować sterowanie Komendami AT. Coś typu połączenie > rób program Połączenie > przerwij program. Próbowałem dostosować kawałek programu dla Atmega 8 z "Powiadamianie GSM" (było kiedyś w DIY) Kompilator zwraca mi błąd: Error: 7 Line: 0 IF THEN expected [96], in file: Error:123 Line: 0 END IF expected, in file:...
listing programu w Bascomie : $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 12000000 'informuje kompilator o częstotliwości oscylatora 'taktującego mikrokontroler $baud = 19200 'informuje kompilator o prędkości transmisji Config Lcd = 16 * 2 'konfiguracja typu LCD Config Lcdpin = Pin , Db4 = Portc.3...
(at)dondu Twoje artykuły czytałem dokładnie ;-) Z kodu poniżej wycięte ustawianie portów (bonie widziałem żadnej różnicy w zużyciu prądu). Procek ustawione fusami na 8MHz wewnętrzny z podziałem przez 8 [syntax=vbnet] $crystal = 1000000 ' ustawiamy prędkość zegara $baud = 9600 ' ustawiamy prędkość transmisji $hwstack = 220 ' ustawiamy wielkość stosu...
Witam ponownie Poprawiłem to zapisywanie do expanderów, troszkę lektury HELP-a i doszedłem do: deklaracja: Declare Sub Pcf_zap(byval Kosc As Byte , Byval Ex As Byte) a tu podprogram: 'podprogram obslugi ukladow PCF8574 Sub Pcf_zap(byval Kosc As Byte , Byval Ex As Byte) I2cstart I2cwbyte Kosc I2cwbyte Ex I2cstop Return End Sub i jego...
Czekam 100ms po instrukcji print dla 115K nic to nie pomoglo zmniejszylem predkosc do 9600 nadal nic ;/ kod nadajnika $regfile = "m32def.dat" $crystal = 14745600 $baud = 9600 Config Serialin = Buffered , Size = 10 , Bytematch = 13 '##### Definicja wyswietlacza ##################### Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6...
Nie wnikając w resztę kodu - w przerwaniu ustawiaj flagę (w zmiennej) na podstawie której zostanie wykonana procedura w funkcji, a na koniec, następuje zmiana flagi na przeciwną. Zatem w przerwaniu nie wykonujesz obsługi serial'a, ustawiasz tylko wartość zmiennej. [syntax=c] #define LED_R 10 #define LED_G 11 #define LED_B 12 #define ENKODER 2 int impulses;...
Problem ze zmianą nazwy pliku rozwiązałem - oczywiście należy pamiętać, że nazwa pliku może być ośmio znakowa. W kodzie dodałem: Plik = "temDD_MM" + ".txt" Mid(plik , 4 , 5 ) = Data_plik oraz w odczycie czasu Data_plik = Bcd(dday) + "_" + Bcd(mmonth) oraz zmieniłem wpis zapisu Open Plik For Append...
Jak bym chciał żeby mi ktoś pomógł to włożyłbym minimum wysiłku by przygotować kod na który można spojrzeć bądź skompilować. Nie musi być cały, ale taki który daje możliwość powtórzenia występującego problemu. Chcesz odbierać dane z UART a masz w pętli Waitms. Myślisz że te dane na Ciebie poczekają? Przy tak znikomej ilości informacji jakie zapodałeś...
Witam Wykorzystałem kod Kolegi nanoTECHNO , głownie z powodu gotowej konfiguracji na 433 Mhz, no i sposób wysyłania. Mam płytkę nadajnika na Atmega328 ( odbiera sygnał DCF77, ma zegar PCF8563 oraz obsługuje czujniki DS18B20 ), sprzętowe SPI. RFM12 mam w wersji S, czyli SMD na 5V, wiec cały układ jest zasilany z 5V. Układ programuje się bez problemu,...
Witam, Od kilku dni borykam się z problemem odbioru i wyświetlenia odebranej temperatury na wyświetlaczu odbiornika. Zmienną nadaje układ pomiarowy z atmega8 poleceniem print zmienna. Odbieram w terminalu ta zmienna bez problemu. Odbiornikiem jest również układ z atmega8 który na wyświetla odebraną temperaturę na wyświetlaczach 6 *7led . Wyświetla przez...
A czy można dać po jednym układzie na jeden pin Atmega ? Czyli coś takeigo: Dodano po 3 Znalazłem jeszcze taki kod: [syntax=basic4gl] $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Declare Sub Get_dht11(t_dht As Byte , Rh_dht As Byte) Dht_put Alias Porta.0 Dht_get Alias Pina.0 Dht_io_set Alias Ddra.0 Dim T_dht11 As Byte Dim Rh_dht11 As Byte...
Witam! Sterownik lcd t6963. Bascom Jak zrobić czyszczenie ekranu? Próbuje cls, cls text, cls graph, ale nie działa... Mam podprogramy, i chce wyczyścic ekran po przejsciu do następnego podprogramu. Niestety nie działa czyszczenie ekranu.. Kod wygląda na razie tak: ........................................... [syntax=basic4gl]$regfile...
przerwanie serialin przerwać serialin serialin bufor
huawei e3272 aplikacja pęknięcie matrycy samsung odblokować telefon hasło
śrutownik bijakowy harman kardon reset
Napis "Nou USB" na DVD - co oznacza? Gaśnięcie silnika na wolnych obrotach - przyczyny i rozwiązania